Remapping Caps Lock untuk Mengontrol dan Melarikan Diri (bukan cara yang biasa)

27

Saya tahu cara menggunakan xmodmap untuk memetakan kembali kunci caps lock sehingga berfungsi sebagai kunci kontrol, atau sebagai tombol Escape. Saya ingin menggabungkan kedua fitur sebagai berikut:

Ketika saya menekan, lalu melepaskan, tombol Caps lock, ia mengirimkan Escape. Ketika saya menahan Caps lock dan menekan tombol lain (katakan A), ia mengirim Control-A.

Apakah ada kombinasi xkb, xmodmap, dan sesuatu yang lain yang dapat membuat Caps lock berperilaku seperti ini di X?

Saya menggunakan Ubuntu Precise di Macbook Air 3,1.

pengguna372737
sumber

Jawaban:

-2

Anda dapat melakukan yang pertama (memetakan Caps Lockke Esc) tetapi Anda tidak dapat melakukan yang kedua.

Penjelasan Sederhana: Caps Lock tidak dirancang untuk melakukan sesuatu saat ditekan.

Penjelasan yang rumit: Ada banyak jenis kunci. Dua di antaranya adalah Modifier Keys dan Lock Keys .

Caps Lockadalah Lock Key sementara kunci seperti Ctrl, Alt, dan Shiftadalah Modifier Keys .

Jelas dari namanya bahwa Tombol Pengubah memodifikasi fungsi tombol berikutnya yang ditekan, dan Tombol Kunci bertindak sebagai sakelar sakelar untuk menghidupkan atau mematikan beberapa fungsi tertentu.

Sekarang, karena itu Caps Lock adalah Kunci Kunci , Anda tidak dapat membuatnya berperilaku seperti Kunci Pengubah tanpa memetakannya menjadi satu. Caps Lockdengan sendirinya tidak dapat berfungsi sebagai Kunci Pengubah .

hijau
sumber
Terima kasih telah mengkonfirmasi bahwa X tidak dirancang untuk melakukan apa yang saya inginkan. Jika seorang guru X ingin meretas sesuatu untuk membuatnya berfungsi, silakan menghubungi saya.
user372737
4
Seperti jawaban yang tidak diterima di bawah ini, Anda tentu dapat melakukan bagian kedua dengan banyak utilitas seperti xcape atau At-Home-Modifier.
Sparhawk
34

Saya memiliki pengaturan ini pada Mac saya dan saya telah mencoba mencari cara untuk Ubuntu tanpa keberuntungan.

Nah, sekarang sudah berfungsi. Terima kasih tungd untuk mengontrak saya di xcape . Apa yang saya lakukan benar-benar sederhana dan langsung.

  1. Di bawah System Preferences> Keyboard Layout> Options ...> posisi tombol Ctrl, saya mencentang 'Caps Lock as Ctrl'.

  2. xcape -e 'Control_L = Escape'

Selesai, Caps Lock berfungsi sebagai Ctrl saat digunakan seperti pengubah, dan sebagai Esc saat ditekan sendiri (ada sedikit keterlambatan beberapa ratus milidetik, seperti yang dicatat pada file README xcape, sehingga masih belum seoptimal solusi Mac yang menggunakan KeyRemap4MacBook.)

Vic Goldfeld
sumber
4
Saya telah menggunakan gnome-tweak-tooluntuk memetakan Caps Lockuntuk Ctrlkarena tidak ada Keyboard layoutdi System Settingsatas Ubuntu 14.04. Kemudian xcape -e 'Control_L=Escape'tidak bekerja, tapi setelah menggunakan xcape -dSaya telah menemukan bahwa Caps Lockmenghasilkan keycode 66 dan memetakan kembali itu masing-masing: xcape -e '#66=Escape'.
Sergiy Belozorov
3
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
Ini seharusnya benar-benar jawaban yang diterima @ user372737
Assaf Lavie
@LouisSimoneau ini ini seribu kali ini.
Spencer Boucher
1
Adakah kemajuan dengan masalah keterlambatan?
Toothrot
6

Saya mencari ini juga. Sampai seminggu yang lalu saya menemukan diri saya solusi parsial menggunakan xmodmap:

add Control = Caps_Lock
remove Lock = Caps_Lock
keysym Caps_Lock = Escape

Ini tentu saja tidak bekerja dengan sempurna, secara efektif mengirim Escape dan Ctrl pada saat yang sama ketika saya menekan CapsLock, tetapi saya senang dengan itu untuk sementara waktu.

Akhirnya saya menemukan utilitas kecil ini https://github.com/alols/xcape . Jadi sekarang saya dapat dengan mudah memetakan ulang CapsLock menjadi Ctrl dan membiarkan xcape melakukan tugasnya.

tungd
sumber
Pilihan lain adalah At-Home-Modifier. Itu tidak dalam pengembangan aktif, dan sedikit berbeda dari xcape dengan menginstal di root. Namun, itu dipicu melalui xorg.conf, dan karenanya hanya dapat bertindak pada keyboard tertentu, saat menggunakan keyboard lain secara bersamaan.
Sparhawk
4

EDIT: Memperbaiki ini untuk sebagian besar manajer tampilan cerdas (baru).

Per Louis dan komentar Sergi, saya telah datang dengan solusi ini yang bekerja untuk saya di Ubuntu 16.04 (Xenial) dengan LightDM dan Unity.

Saya memasukkan baris kode berikut ke .xprofilefile saya di direktori home saya.

setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &

Trailing & menempatkan perintah xcape ke latar belakang sehingga tidak memblokir sesi Anda. Setxkbmap segera mengubahnya.

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 sendiri: setxkbmap -option 'caps: ctrl_modifier' xcape -e 'Caps_Lock = Melarikan diri' setxkbmap -option 'caps: ctrl_modifier' xcape -e 'Caps_Lock = Escape; Control_L = Escape; Control_R = Escape '- Louis Simoneau 4 Agustus15 pukul 10:06

dragon788
sumber
3

Memasang xcape

sudo apt-get install xcape

Tambahkan dua baris di ~/.bashrc

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'⏎
/usr/bin/xcape -e 'Caps_Lock=Escape' -t 100

Perhatikan bagian itu -t 100, jika Anda tidak mengaturnya, Anda mungkin melihat penundaan di Esc jika Anda menggunakan vim.

Searene
sumber
sudo apt-get install xcape(salah ketik)
David Shaked
1

Saya telah membangun alat dalam C khusus untuk tujuan ini yang mengatasi banyak masalah dengan solusi xcape / xmodmap :

pepper_chico
sumber
Apakah ada cara untuk mematikan "swap" dari Esc ke Caps, saya lebih suka untuk tidak memiliki Caps sama sekali dan menjaga Esc lama dan baru keduanya berperilaku sebagai Escape.
dragon788
Terima kasih, saya harus meletakkan tautan ke kompilasi otomatis ini ke dotfile saya. Saya juga dapat PR README.md seperti pada Ubuntu 16.04 diperlukan libudev-dev dan libevdev-dev untuk mengkompilasi.
dragon788
@ dragon788 datang ke Arch (Anda bahkan bisa mencoba Antergos). Saya sudah pindah dari Ubuntu tahun yang lalu dan tidak akan pernah kembali, itu jauh lebih baik.
pepper_chico