Mengetik menggunakan kombinasi tombol?

12

Saya pengguna Ubuntu 10.04 yang mencari cara untuk, misalnya, membuat komputer saya mengetik karakter "+" ketika saya menekan WindowsKunci (saya pikir itu disebut Superdi dunia Linux) dan tekan Ktombol. Saya perlu ini berfungsi di semua aplikasi. (Saya seorang penyandang cacat pengetikan, dan saya perlu menyesuaikan Ubuntu dengan kebutuhan saya.) Terima kasih!

Kris Harper
sumber

Jawaban:

15

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

  1. 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
    
  2. 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)
    
  3. Hapus baris yang dimulai dengan "xmodmap: hingga 4 ..."

  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_switchdari mod5baris ke mod3baris 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
    
  5. 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
    
  6. 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.

  7. 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 keycodemenentukan 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.

  8. Simpan file dan keluar dari editor.

  9. 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
    
  10. 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.

  1. Gunakan xev untuk menemukan kode kunci dan kunci tombol

  2. 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.

  3. Cadangkan curkeys.mapfile.

  4. Buka curkeys.mapdan edit baris untuk kode kunci yang sesuai.
  5. 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 .

koushik
sumber
beruntung dengan yang ini? Jika ini tidak membantu atau dengan cara apa pun komentar tidak jelas, saya akan merevisinya dan membuatnya lebih berguna.
koushik
1
Harap dicatat, bahwa dalam Linux Mint 17 Xfce (atau setidaknya ada), itu harus ~/.Xmodmap, ~/.xmodmapakan diabaikan.
zbr
2
Jangan lupa clearkunci yang sedang diatur ulang sesuai unix.stackexchange.com/a/4526/2512
Andy