xcape memungkinkan Anda menggunakan tombol pengubah sebagai tombol lain ketika ditekan dan dilepaskan sendiri. Perhatikan bahwa ini sedikit lebih lambat daripada menekan tombol asli, karena peristiwa penekanan tidak terjadi hingga tombol dilepaskan. Perilaku defaultnya adalah menghasilkan tombol Escape ketika Kontrol Kiri ditekan dan dilepaskan dengan sendirinya. (Jika Anda tidak mengerti mengapa ada orang yang menginginkan ini, saya rasa Vim bukan editor teks favorit Anda;)
Pertama instal dependensi pengembangan. Pada sistem berbasis Debian (termasuk Ubuntu dan Linux Mint), jalankan:
$ sudo apt-get install git gcc make pkg-config libx11-dev libxtst-dev libxi-dev
Pada sistem berbasis Fedora, jalankan:
$ sudo dnf install git gcc make pkgconfig libX11-devel libXtst-devel libXi-devel
Kemudian jalankan:
$ git clone https://github.com/alols/xcape.git
$ cd xcape
$ make
$ sudo make install
$ xcape [-d] [-f] [-t <timeout ms>] [-e <map-expression>]
-d
Modus debug. Tidak bercabang ke latar belakang. Mencetak informasi debug.
-f
Modus latar depan. Tidak bercabang ke latar belakang.
-t <timeout ms>
Jika Anda menahan kunci lebih lama dari batas waktu ini, xcape tidak akan menghasilkan peristiwa kunci. Standarnya adalah 500 ms.
-e <map-expression>
Ekspresi memiliki tata bahasa 'ModKey=Key[|OtherKey][;NextExpression]'
Daftar nama kunci terdapat di file header X11/keysymdef.h
(hapus awalan XK_
). Perhatikan bahwa karena keterbatasan X11, tombol yang digeser harus ditentukan sebagai tombol shift diikuti dengan tombol yang akan ditekan, bukan nama karakter sebenarnya. Misalnya untuk menghasilkan "{", ekspresi 'ModKey=Shift_L|bracketleft'
dapat digunakan (dengan asumsi Anda memiliki kunci dengan "{" di atas "[").
Anda juga dapat menentukan kunci dalam desimal (awalan #
), oktal ( #0
), atau heksadesimal ( #0x
). Mereka akan ditafsirkan sebagai kode kunci kecuali tidak ditemukan nama kunci yang sesuai.
Ini akan membuat Left Shift menghasilkan Escape ketika ditekan dan dilepaskan sendiri, dan Left Control menghasilkan kombinasi Ctrl-O ketika ditekan dan dilepaskan sendiri.
xcape -e 'Shift_L=Escape;Control_L=Control_L|O'
Dalam hubungannya dengan xmodmap dimungkinkan untuk membuat kunci biasa bertindak sebagai pengubah tambahan. Pertama petakan kunci ke pengubah dengan xmodmap dan kemudian pengubah kembali ke kunci dengan xcape. Namun, hal ini memiliki beberapa keterbatasan: kunci tidak akan berfungsi seperti biasa sampai dilepaskan, dan khususnya, kunci dapat bertindak sebagai pengubah secara tidak sengaja jika Anda mengetik terlalu cepat. Ini bukan bug di xcape, tetapi konsekuensi yang tidak dapat dihindari dari penggunaan kedua alat ini secara bersamaan dengan cara ini. Sebagai contoh, kita dapat membuat spasi berfungsi sebagai tombol ctrl tambahan saat ditahan (mirip dengan Space2ctrl) dengan urutan perintah berikut.
# Map an unused modifier's keysym to the spacebar's keycode and make it a
# control modifier. It needs to be an existing key so that emacs won't
# spazz out when you press it. Hyper_L is a good candidate.
spare_modifier="Hyper_L"
xmodmap -e "keycode 65 = $spare_modifier"
xmodmap -e "remove mod4 = $spare_modifier" # hyper_l is mod4 by default
xmodmap -e "add Control = $spare_modifier"
# Map space to an unused keycode (to keep it around for xcape to
# use).
xmodmap -e "keycode any = space"
# Finally use xcape to cause the space bar to generate a space when tapped.
xcape -e "$spare_modifier=space"
Jika Anda terbiasa memetakan ulang kode kunci ke keyyms (misalnya menggunakan xmodmap), ada dua masalah yang mungkin Anda temui.
Anda harus me-restart xcape setiap kali Anda mengubah pemetaan dari kode kunci ke keyyms (misalnya, dengan xmodmap), atau xcape akan tetap menggunakan pemetaan lama.
Kunci yang ingin Anda kirim harus memiliki kode kunci yang ditentukan. Jadi misalnya, dengan pemetaan default Control_L=Escape
, Anda masih memerlukan kunci escape yang ditentukan dalam pemetaan xmodmap Anda. (Saya menyiasatinya dengan menggunakan 255, yang tidak dapat dikirim oleh keyboard saya).
Temukan versi terbaru di https://github.com/alols/xcape
Penulis dapat dihubungi di albin dot olsson di gmail dot com