Pertama, maafkan ketidaktahuan saya tentang X dan XKB; Saya sudah mencoba meretas bersama solusi dengan harapan dapat mencapai apa yang saya inginkan tanpa memerlukan pemahaman yang terperinci tentang itu.
Saya mencoba membuat peta keyboard XKB pada Ubuntu 12.04 yang memungkinkan saya untuk menentukan mana dari dua tombol shift yang merupakan pengubah Level2. Secara khusus, 4kunci seharusnya hanya menghasilkan $
ketika pergeseran yang tepat diadakan, bukan yang kiri.
Bacaan saya sejauh ini:
- http://www.charvolant.org/~doug/xkb/html/node5.html
- http://people.uleth.ca/~daniel.odonnell/Blog/custom-keyboard-in-linuxx11
- http://www.x.org/releases/X11R7.5/doc/input/XKB-Enhancing.html
- Banyak pencarian!
Saya telah mencoba mendefinisikan jenis kustom, dan kemudian merujuknya secara eksplisit di peta simbol:
/usr/share/X11/xkb/types/mbfisher
:
default xkb_types "mbfisher" {
type "RIGHT_SHIFT" {
modifiers = None+Shift_R;
map[None] = Level1;
map[Shift_R] = Level2;
};
}
/usr/share/X11/xkb/symbols/mbfisher
:
default
partial alphanumeric_keys
xkb_symbols "basic" {
name[Group1]= "mbfisher";
key <AE04> {
type= "RIGHT_SHIFT",
symbols[Group1]= [ 4, dollar ]
};
};
Saya kemudian memilih peta dengan GUI Keyboard Layout Ubuntu.
Ini jelas menonaktifkan keyboard alfanumerik selain dari 4tombol, tetapi tanda dolar masih bisa diketik dengan tombol shift.
Saya sadar menulis pertanyaan besar dengan banyak informasi yang tidak berguna jadi saya akan berhenti di sini; tolong minta apa pun yang saya lewatkan.
Ada ide?
# xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
Inilah yang akhirnya berhasil! Saya menggunakan
xmodmap
dan~/.Xmodmap
file daripada konfigurasi xkb.~/.Xmodmap
:2 baris komentar (menatap dengan
!
) menunjukkan judul kolom sebelum dan sesudah perubahan saya. Ini memungkinkan saya untuk menentukan col 2 sebagai Shift_L dan col 3 sebagai Shift_R, karena saya telah memetakan shift_R sebagai Mode_switch.Perubahan dilakukan dengan menjalankan:
setxkbmap us
mengatur peta AS default sehingga Anda bekerja dari yang bersih, danxmodmap
menambahkan perubahan khusus untuk itu.Ketika menerapkan
!
,@
,#
,$
dan%
karakter hanya dapat diketik dengan tombol shift kanan, dan^
,&
,*
,(
dan)
hanya dapat diketik dengan tombol shift kiri.Saya sekarang dapat melanjutkan dengan memetakan semua tombol di sisi kiri keyboard untuk hanya dimodifikasi oleh tombol shift kanan (yaitu karakter aplhabetical dan modifikasi huruf besar mereka) dan sebaliknya; solusi ini berarti saya hanya perlu memetakan kembali sisi kiri.
Tautan bermanfaat lain yang ditemukan di sepanjang jalan:
Terima kasih banyak kepada @Trudbert yang telah memberikan saya sebagian besar jawaban!
sumber