Karena Anda ingin memetakan kembali kunci untuk semua aplikasi, pilihan terbaik adalah menggunakan xmodmap. Ini fleksibel dan sangat kuat tetapi melibatkan mengetikkan beberapa perintah ke terminal.
Langkah 0 - Pendekatannya
Server-X mengelola keyboard dan semua acara utama dan menerjemahkannya menjadi kode kunci untuk semua aplikasi.
Pendekatannya adalah memetakan kunci pengubah (seperti kunci Alt atau Alt Kanan) sebagai tombol "mode switch" dan memberi tahu server-X untuk menghasilkan kode yang berbeda tergantung pada apakah suatu tombol ditekan dengan tombol Mode ditekan atau tidak.
Secara default tidak ada tombol sakelar mode yang ditentukan dan juga semua tombol dikonfigurasikan untuk menghasilkan kode yang sama ketika ditekan dengan atau tanpa sakelar mode. Ini bagus karena ini berarti kecuali untuk kunci yang Anda timpa secara eksplisit, tidak ada kunci lain yang akan berperilaku berbeda atau memerlukan konfigurasi tambahan.
Namun, saya ingin Anda mempertimbangkan untuk menggunakan tombol Alt Kanan sebagai sakelar mode terutama jika Anda juga menggunakan compiz karena beberapa plugin kompiz memetakan pintasan tombol super (mis. Pemetik jendela, pemindah shift, dll.). Jika Anda tidak tertarik untuk mengendalikan compiz melalui keyboard maka Super baik-baik saja.
Untuk xmodmap, kunci super diidentifikasi sebagai Super_L atau Super_R. Anda harus memilih satu untuk digunakan sebagai tombol sakelar mode. Atau, tombol alt kanan adalah Alt_R. Anda dapat mengonfirmasi ini dengan menjalankan xev dan menekan tombol yang diperlukan pada keyboard Anda. Lihat posting ini untuk langkah-langkahnya.
Langkah 1 - Menyiapkan peta pengubah
Buka terminal ( Applications -> Accesories -> Terminal
) dan jalankan perintah berikut untuk membuat file dengan keybindings saat ini . Kami akan menggunakan ini sebagai titik awal.
xmodmap -pke > curkeys.map
xmodmap -pm >> curkeys.map
Buka ini di editor teks favorit Anda. gedit curkeys.map &
buka di gedit. Menjelang akhir file, Anda akan melihat beberapa baris seperti ini:
keycode 253 =
keycode 254 =
keycode 255 =
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
Hapus baris yang dimulai dengan "xmodmap: hingga 4 ..."
Edit peta pengubah sehingga terlihat seperti ini. Letakkan kata "add" di awal setiap baris dan masukkan "=" setelah nama pengubah. Kemudian hapus kode dalam tanda kurung dan koma. Perhatikan juga bahwa saya telah pindah Mode_switch
dari mod5
baris ke mod3
baris karena kosong. Tabel yang diubah akan terlihat seperti ini - konten yang sebenarnya akan sedikit bervariasi dalam kasus Anda dari yang di bawah ini (tergantung pada tata letak keyboard Anda).
add shift = Shift_L Shift_R
add lock = Caps_Lock
add control = Control_L Control_R
add mod1 = Alt_L Meta_L Alt_R
add mod2 = Num_Lock
add mod3 = Mode_switch
add mod4 = Super_L Super_R Super_L Hyper_L
add mod5 = ISO_Level3_Shift
Remap tombol sakelar mode fisik. Tambahkan baris seperti ini di akhir (Ganti Super_L dengan Super_R atau Alt_R jika diperlukan).
keysym Super_L = Mode_switch
Hapus keyname (Super_L) dari definisi pengubah apa pun. Untuk Super_L ini berarti menghapusnya dari garis mod4.
add mod4 = Super_R Hyper_L
Sekarang tombol "Super" kanan masih akan bertindak sebagai kunci super normal sedangkan tombol kiri akan memiliki properti khusus.
Sekarang kita perlu memetakan kembali kunci untuk menghasilkan kode yang berbeda apakah mereka ditekan sambil menahan Super_L atau tidak. Setiap baris dalam file kami dimulai dengan keycode
menentukan 4 tombol untuk setiap tombol yang akan dihasilkan berdasarkan apakah Mod1 (tombol shift) dan tombol sakelar Mode ditekan. ( Tautan )
!...........................................................................
! Key Base Shift Mode Mode+Shift
!---------------------------------------------------------------------------
keycode 13 = 4 dollar 4 quotedbl
keycode 14 = 5 percent 5 colon
keycode 15 = 6 asciicircum 6 comma
keycode 16 = 7 ampersand 7 period
...
keycode 45 = k K k K
Jika kita ingin Super_L + k menekan tombol untuk menghasilkan kunci "+" maka kita perlu memodifikasinya untuk membacanya
keycode 45 = k K plus plus
Plus final juga memetakan Shift + Super_L + k ke plus, tetapi ini dapat dipetakan ke sesuatu yang lain. Untuk setiap tombol ada tepat 1 baris untuk dimodifikasi. Edit lebih banyak baris untuk memetakan lebih banyak kunci - biarkan 2 entri pertama tetap utuh untuk mempertahankan perilaku penekanan tombol normal.
Simpan file dan keluar dari editor.
Instal keymap dengan menjalankan perintah berikut di terminal. Yang pertama mengaturnya untuk sesi ini, yang kedua membuatnya permanen untuk sesi mendatang.
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Anda dapat segera menguji ini dengan menekan tombol yang dimodifikasi (Super_L + k misalnya).
Langkah 3 - Menambahkan / merevisi peta
Setelah peta yang dimodifikasi dipasang, mudah untuk menambahkan kunci baru.
Gunakan xev untuk menemukan kode kunci dan kunci tombol
mengujinya dengan menjalankan perintah ini untuk memetakan kunci:
xmodmap -e "keycode <code> = <base> <shift> <new-mapping> <new-shift-mapping>"
Ganti item dalam kurung sudut (seperti <code>
<base>
dll) dengan nilai yang sesuai.
Cadangkan curkeys.map
file.
- Buka
curkeys.map
dan edit baris untuk kode kunci yang sesuai.
Terapkan kembali dengan perintah di bawah ini (yang pertama tidak perlu jika Anda melakukan langkah 2)
xmodmap curkeys.map
cp curkeys.map ~/.Xmodmap
Catatan: 1 : Modifikasi yang dibuat di Pintasan Keyboard (via mis., System -> Preferences -> Keyboard Shortcuts
) Memengaruhi peta pengubah dan umumnya akan hilang pada login berikutnya. Jadi tolong hindari itu.
Catatan: 2 : Saya terkadang mendapatkan pesan kesalahan seperti ini saat menggunakan metode ini. Saya tidak tahu apa artinya ini, tetapi pada umumnya ini tidak berbahaya.
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 263
Current serial number in output stream: 263
Bantuan terperinci untuk xmodmap tersedia di sini .