Remap CapsLock untuk Escape dan Kontrol Sistem Lebar

18

Apakah mungkin untuk memetakan ulang sistem tombol CapsLock dengan lebar sehingga ketika tombol CapsLock ditekan dengan sendirinya, tombol itu berfungsi sebagai tombol pelolosan dan ketika ditekan dengan tombol lain, tombol itu bertindak sebagai tombol kontrol?

Zameer Manji
sumber
5
Sepertinya ini akan sangat sulit. Misalnya, itu tidak dapat menghasilkan peristiwa key down, karena Anda tidak tahu tombol mana yang baru saja ditekan. Jika dilepaskan tanpa tombol lain ditekan, maka itu Escape, kalau tidak itu Kontrol.
cjm

Jawaban:

16

Saya telah menemukan solusi yang sangat baik yang disebut xcape . Dari README:

xcape berjalan sebagai daemon dan memotong tombol Kontrol. Jika tombol Kontrol ditekan dan dilepas dengan sendirinya, itu akan menghasilkan acara Escape key.

Ini lebih masuk akal jika Anda telah memetakan kembali kunci Caps Lock ke Kontrol. Versi mendatang dari program ini mungkin melakukan pemetaan untuk Anda, tetapi untuk sekarang ini adalah sesuatu yang harus Anda lakukan sendiri.

Zameer Manji
sumber
Saya membuat skrip hack
cam
6

Saya memetakan Caps to Escape sehingga saya akan lebih nyaman mengetik Vim. Saya menggunakan xmodmap, dan memasukkan ini ke dalam ~/.Xmodmap.

clear Lock
keycode 0x42 = Escape

Untuk menerapkan: xmodmap ~/.Xmodmap. Anda dapat meletakkan ini dalam file seperti ~ / .bash_profile (saya masukkan ~/ .xinitrc, karena saya tidak menggunakan manajer login.

Untuk memetakan CapsLock + [Kunci lain], pertimbangkan untuk menggunakan xbindkeys.

Emil
sumber
4

Solusi khusus Linux untuk memetakan kembali kunci di seluruh sistem adalah dengan menulis aturan udev sederhana. Itu tidak akan bergantung pada X, akan bekerja pada terminal atau aplikasi apa pun dan portabel di antara setiap pemasangan Linux baru-baru ini hanya dengan menyalin dua file.

Anda perlu menulis 2 file: satu berisi aturan udev yang memberi tahu kernel untuk memetakan kembali kunci dan satu berisi pemetaan aktual yang Anda butuhkan.

Dengan menggunakan metode ini, saya telah memetakan ulang seluruh keyboard saya, mungkin kodenya berguna sebagai inspirasi http://git.adirat.com/carpalx-keyboard

gimmesudo
sumber
tautannya sudah mati, bisakah Anda memperbaruinya? Terima kasih!
qed
Saya memperbaruinya, maaf atas keterlambatannya
gimmesudo
Bitbucket mengatakan, "Anda tidak memiliki akses ke repositori ini." Bisakah Anda menjadikannya publik lagi? Terima kasih!
Tianyi Cui
@TianyiCui periksa tautannya sekarang
gimmesudo
1
Tautan itu mati atau diblokir untuk saya. Apakah ada kemungkinan Anda dapat menempatkan file yang sebenarnya dalam jawaban Anda?
labirin
1

Saya menemukan pertanyaan dengan kata berbeda di AskUbuntu yang memiliki jawaban yang bagus , tetapi saya harus sedikit memodifikasinya untuk bekerja pada sistem saya.

Komentar Per Louis dan Sergi di sana saya datang dengan solusi ini yang bekerja untuk saya di Ubuntu 16.04 (Xenial) dan saya akan membawanya ke sistem Linux lain yang saya gunakan.

Saya menginstal xcape dan memasukkan baris kode berikut ke .profilefile saya di direktori home saya.

METODE DIPERBARUI:

Karena berbagai manajer tampilan (gdm / kdm / sddm / etc) berperilaku aneh dan mengatur ulang setxbmapsetelah menangguhkan / melanjutkan atau mengunci / membuka kunci, saya telah menemukan cara mengatur opsi dengan cara yang mereka warisi dan jangan ' t atur ulang sepanjang waktu. Karena saya menunda dan melanjutkan banyak hal yang saya perlukan untuk memastikan saya tidak mendapatkan banyak salinan xcapemenjalankan yang diselesaikan dalam skrip baru di bawah ini.

Pertama-tama, ubah konfigurasi keyboard dengan sudo gedit /etc/default/keyboarddan atur XKBOPTIONS="ctrl:nocaps", kemudian di ~/.xprofilebaris tunggal Anda di bawah ini.

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

Semoga berbagai bagian skrip menghemat waktu / masalah dan mencegah login macet. Pertama memeriksa apakah sudah ada instance berjalan dan membunuhnya, karena satu-satunya yang xcapedilakukan adalah memetakan Ctrl ke Esc, ini aman, maka hashbagian memastikan bahwa Anda telah xcape menginstal jika tidak sistem Anda bisa hang ketika Anda mencoba login karena semua startup skrip diharapkan keluar dengan bersih.

Cara lama:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

Sergiy:

Saya telah menggunakan gnome-tweak-tool untuk memetakan Caps Lock ke Ctrl karena tidak ada tata letak Keyboard di Pengaturan Sistem pada Ubuntu 14.04. Kemudian xcape -e 'Control_L = Escape' tidak berfungsi, tetapi setelah menggunakan xcape -d saya telah menemukan bahwa Caps Lock menghasilkan kode kunci 66 dan memetakannya kembali masing-masing: xcape -e '# 66 = Escape'. - Sergiy Byelozyorov 4 Sep 14 'jam 10:08

Louis:

Sesuai dengan posting blog ini, dimungkinkan untuk melakukan ini dengan xcape saja: setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape' setxkbmap -option 'caps: ctrl_modifier'; xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape' - Louis Simoneau 4 Agustus 15 pukul 10:06

dragon788
sumber