Bagaimana cara mengaktifkan kembali kunci caps lock?

12

Saat ini saya sedang mengatur tata letak keyboard default saya seperti ini:

setxkbmap -layout us -variant dvorak -option ctrl:nocaps,[...]

Ini menonaktifkan tombol caps lock dan menjadikannya tombol ctrl tambahan, bersama dengan segerombolan opsi lain.

Saya ingin melakukan hal berikut untuk mengganti tata letak keyboard:

setxkbmap -layout us -variant dvorak-l -option ctrl:swapcaps

Namun, itu tidak mengaktifkan kembali tombol caps lock; baik tombol kontrol kiri dan kunci caps tetap sebagai tombol kontrol sejauh yang saya bisa lihat.

Saya tahu saya bisa menghapus seluruh daftar opsi, tetapi untuk kepentingan pemeliharaan, saya lebih suka tidak menyalin opsi di sekitar. Bagaimana cara mengaktifkan kembali caps lock?

Pembaruan: Melihat penekanan tombol dengan xev (1), tampaknya ctrl: nocaps memberi Control_Luntuk kedua tombol, dan ctrl: swapcaps "mengembalikan" tombol caps lock (menekan tombol memberi Caps_Lock). Namun, LED caps lock tidak menyala dan tidak juga berfungsi.

Melihat xkeyboard-config/symbols/ctrlfile di sumber X.org memberi petunjuk pada masalah:

xkb_symbols "nocaps" {
    replace key <CAPS>  {  [ Control_L, Control_L ] };
    modifier_map  Control { <CAPS>, <LCTL> };
};
xkb_symbols "swapcaps" {
    replace key <CAPS>  {  [ Control_L ] };
    replace key <LCTL>  {  [ Caps_Lock ] };
};

Opsi terakhir tidak memiliki garis modifier_map, apa pun itu

hhaamu
sumber
Saya kira semua orang yang mencoba membantu saya membuat keyboard mereka macet di dvorak = (
hhaamu
4
X sudah sangat tua dan kompleks sekarang sehingga tidak banyak orang yang benar-benar memahami berbagai mekanisme internal. Bahkan ada bagian di halaman manual yang mengatakan (dan saya kutip): " Tidak ada yang mau mengatakan bagaimana ini bekerja. Mungkin tidak ada yang tahu ... ". Saya tertarik melihat jawaban untuk pertanyaan ini juga, tetapi mungkin memang tidak ada yang tahu ...
jw013

Jawaban:

14

Perintah berikut harus bekerja:

xmodmap -e 'keycode 0x42 = Caps_Lock'

atau

setxkbmap -option

Perintah di atas berfungsi dengan baik untuk mengembalikan perilaku default, yang hampir tidak pernah saya butuhkan, untungnya.

Saya biasanya memetakan ulang capslock ke Control (untungnya VI / VIM mendukung CTRL-C bukan ESC) dengan perintah berikut:

setxkbmap -option ctrl:nocaps -layout gb
Alex
sumber
"Setxkbmap -option" untuk menghapus pengaturan adalah persis apa yang saya cari. Saya terus mencoba mengubah perilaku saya, tetapi terus menambahkan item yang bertentangan ke daftar opsi.
m0j0
2

Mencoba setxkbmap -option -layout us -variant dvorak-l -option ctrl:swapcaps

Dari halaman manual:

[...] If you want to
replace all previously specified options, use the -option  flag
with an empty argument first.

Ironisnya adalah bahwa di sini -option ctrl:swapcapssebenarnya ditimpa -option ctrl:nocaps- saya kira perilaku berubah.

Sunting: Seperti yang dinyatakan OP, dia ingin menghindari mengosongkan opsi (seperti yang dilakukan pada cara di atas).

/usr/share/X11/xkb/rules/xorg.lstmenunjukkan opsi ctrl:aa_ctrl(kontrol di kiri bawah), yang tampaknya mengatur ulang caps lock setelah di nocapssini.

Saya kira ini patut dicoba, dan Anda juga dapat melihat daftar ( grep ctrl\:) dan melihat apakah ada hal lain yang mungkin berhasil, kalau-kalau yang ini tidak.

Jika tidak ada pilihan untuk ini, saya kira solusinya adalah meretas keymap saat ini, dengan mengaitkan Caps Lock dengan tombol Caps Lock lagi (tapi saya tidak punya pengalaman dengan itu, selain percaya ada alat yang memungkinkan Anda untuk melakukan bahwa dengan satu-liner).

njsg
sumber
Itu memang menghapus daftar opsi, tetapi saya ingin tetap menggunakan opsi yang tidak terkait topi (seperti yang saya sebutkan dalam pertanyaan) seperti menulis kunci.
hhaamu
Oh, maaf, saya salah membaca pertanyaan. Saya tidak yakin apakah ini akan berhasil (seperti yang saya sebutkan, swapcapssebenarnya mengaktifkan kembali caps lock di sini), tetapi dari /usr/share/X11/xkb/rules/xorg.lst, saya melihat ada pilihan ctrl:aa_ctrl(kontrol di kiri bawah), yang tampaknya untuk mengatur ulang caps lock setelah di nocapssini.
njsg
Saya pikir program sulapnya adalah xmodmaptetapi saya tidak yakin bagaimana menggunakannya
hhaamu
0

ada opsi "caps: capslock" (yang memetakan untuk menambahkan "+ capslock (capslock)" ke xkb_symbols) yang memungkinkan capslock.

Namun, opsi itu (mungkin semua huruf besar: xxxxx?) Ditambahkan sebelum yang ada ctrl: xxxxx yang ada; sebagai ctrl: swapcaps mendefinisikan kembali tombol capslock, opsi itu tidak berpengaruh.

Jadi, Anda benar-benar perlu menghapus semua opsi dan benar-benar meletakkan yang Anda inginkan; cara opsi ada mereka tidak seharusnya membatalkan tindakan yang sebelumnya, dan memiliki opsi yang bertentangan (misalnya, dua (atau lebih) yang mengandung kunci yang sama) Anda tidak dapat menentukan pemesanan mereka.

Pablo Saratxaga
sumber