Untuk beberapa alasan laptop saya macet di Caps Lock. Saya memiliki Caps Lockkunci dipetakan oleh xmodmap
ke hyper_l
, jadi saya tidak memiliki caps_lock
kunci untuk mematikannya. Apakah ada cara saya dapat mematikannya dengan command line? Akan lebih baik jika saya dapat mengatur ulang status kunci tanpa mengatur ulang komputer saya, terutama untuk referensi di masa mendatang. Ini telah terjadi sebelumnya, tetapi saya ingin tahu sekarang bagaimana melakukannya dengan benar kali ini.
command-line
xmodmap
capslock
Echogene
sumber
sumber
Jawaban:
Saya tidak tahu ada alat baris perintah untuk itu di Ubuntu. (Untuk Num Lock, ada numlockx .) Berikut ini adalah satu-liner yang dapat Anda salin-tempel ke jendela terminal:
Ini dia lagi dalam bentuk yang lebih luas. Kami menggunakan pustaka Python ctypes untuk memanggil fungsi C dari pustaka X secara langsung. Fungsi
XkbLockModifiers
mengubah status kunci keyboard, pada keyboard inti (XkbUseCoreKbd
= 0x0100), memengaruhi Caps Lock (2), mengaturnya ke 0 (mati).Jika Anda memiliki pengubah yang macet, ubah 2 ke penutup pengubah yang ingin Anda matikan. Pengubahnya adalah 1 = Shift, 2 = Lock (Caps Lock), 4 = Control, 8 = Mod1, 16 = Mod2, 32 = Mod3, 64 = Mod4, 128 = Mod5. Jalankan
xmodmap -pm
untuk melihat apa yang terkait dengan Mod1 hingga Mod5. Misalnya, untuk mematikan semua pengubah, hubungiX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(255), c_uint(0))
. Untuk mengaktifkan Num Lock yang aktif pada Mod2 dan pada saat yang sama mematikan Caps Lock, panggilX11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2 | 16), c_uint(16))
.Ini adalah versi C jika Anda ingin membuat biner kecil alih-alih memanggil Python. Kompilasi dengan
gcc -O -Wall -o caps_lock_off caps_lock_off.c -lX11
, dengan paket-paketbuild-essentials
danlibx11-dev
diinstal.Yang juga mungkin menarik adalah cara untuk sementara waktu mengabaikan Caps Lock:
Setelah ini, Caps Lock secara efektif akan mati secara permanen, sampai Anda mengaktifkannya kembali
xkbset nullify -lock
.sumber
xtrace
dan jalankanxtrace python -c 'from ctypes import *; X11 = cdll.LoadLibrary("libX11.so.6"); buf = (c_char*16)(); display = X11.XOpenDisplay(None); X11.XkbLockModifiers(display, c_uint(0x0100), c_uint(2), c_uint(0)); X11.XkbGetState(display, 0x0100, buf); X11.XCloseDisplay(display)'
dan posting beberapa baris terakhir, dimulai dengan yang mengandungQueryExtension name='XKEYBOARD'
. Saya tidak mengklaim bahwa saya akan memahami hasilnya tetapi saya akan mencoba.Alat otomatisasi X dapat digunakan untuk mengirim acara utama yang diperlukan.
Menggunakan
xdotool
Pasang itu
Kirim acara CAPS turun / naik
Alat lainnya adalah
xte
Pasang itu
Kirim acara kunci / atas CAPS CAPS
Referensi:
man xdotool
man xte
sumber
Sedangkan untuk versi python Gilles yang tidak bekerja di ubuntus yang lebih baru, mengatur pengembalian yang benar untuk tampilan terbuka sepertinya melakukan trik:
(Kode diadaptasi dari https://stackoverflow.com/questions/29638210/how-can-i-use-python-xlib-to-generate-a-single-keypress )
sumber
Jika Anda tidak dapat mengakses CAPS karena Anda memetakannya kembali di .bashrc, seperti yang saya lakukan, maka cukup beralih ke terminal virtual (alt + ctl + fN) dan kemudian beralih kembali bekerja untuk saya.
sumber
Saya punya masalah ini dan bisa memperbaikinya dengan menggunakan keyboard OnBoard (di Ubuntu Mate, di bawah Universal Access).
Setelah dihidupkan, Anda akan melihat kunci CapsLock berwarna merah, atau entah bagaimana menunjukkan bahwa itu terkunci. Kemudian Anda dapat menekan untuk mematikan.
sumber