Caps-Lockを取得して使用するX11プログラムがあります。問題は、通常のCaps Lockの切り替えを無効にしたいのですが、そうするとキーが無効になるようです。
したがって、X11がCaps Lockキーを押すために取得するものは何でも、取得する必要があります(キーを無効にしたり、他のキーに再マッピングしたりすることはできません)が、キープレスをCaps-Toggleに変換することはありません(カーネルレベルである可能性がありますか? 。
スキャンコードを変更しようとしましたが、これでキーが再マップされました。
xmodmap
を使用してcapslockエントリを削除しました もですが、これもキャップを無効にしました。
カーネルにcaps-keyを無視するように(通常の機能では)、メッセージをXに渡すように指示するにはどうすればよいですか?
もう少し詳しく説明します:
私が実行しようとしている「プログラム」は、人間化された「円相」です。
キーがない場合、「CRITICAL:root:準モードキーが見つかりませんでした」というエラーが表示されます。エラーがない場合は、円相をキャップ付きで使用できますが、円相がまだそれを取得できる間、sofarはキャップ機能を無効にする方法を理解していません。
承認された回答:
Capslockの切り替えを無効にするテクニックがあると思います キーを押しますが、キーを完全に無効にするか、キーボードの別のキーに再マッピングします。
コマンドを使用する場合:
setxkbmap -option caps:none
キーボードはトグルしなくなります。これは、Fedora 14を実行しているラップトップで確認しました。LEDは点灯しなくなり、通常の Capslock 機能がなくなりました。
ただし、xevを使用すると、キーが押されていることがわかります。
$ xev
...
...
KeyPress event, serial 35, synthetic NO, window 0x6800001,
root 0xb1, subw 0x0, time 261504852, (167,-15), root:(353,268),
state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 35, synthetic NO, window 0x6800001,
root 0xb1, subw 0x0, time 261504971, (167,-15), root:(353,268),
state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
...
そのため、押されたキーのイベントは、他のアプリケーションがそれらを取得できるようにそのまま残されます。
setxkbmap
ファイル/usr/share/X11/xkb/rules/xorg.lst
setxkbmap
に指定できるオプションの完全なリストが含まれています 。
このファイルで「cap」を探していると、次の行に気づきました:
caps:none CapsLock is disabled
このファイルには他の値があるため、これが目的ではない場合は、代わりにそれらの代替値の1つが適している可能性があります。
$ grep cap /usr/share/X11/xkb/rules/xorg.lst
grp:caps_switch CapsLock (while pressed), Alt+CapsLock does the original capslock action
grp:caps_toggle CapsLock
grp:shift_caps_toggle Shift+CapsLock
grp:shift_caps_switch CapsLock (to first layout), Shift+CapsLock (to last layout)
grp:alt_caps_toggle Alt+CapsLock
lv3:caps_switch CapsLock
lv3:caps_switch_latch CapsLock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)
ctrl:nocaps Make CapsLock an additional Ctrl
ctrl:swapcaps Swap Ctrl and CapsLock
grp_led:caps CapsLock
caps CapsLock key behavior
caps:internal CapsLock uses internal capitalization. Shift "pauses" CapsLock
caps:internal_nocancel CapsLock uses internal capitalization. Shift doesn't affect CapsLock
caps:shift CapsLock acts as Shift with locking. Shift "pauses" CapsLock
caps:shift_nocancel CapsLock acts as Shift with locking. Shift doesn't affect CapsLock
caps:capslock CapsLock toggles normal capitalization of alphabetic characters
caps:numlock Make CapsLock an additional NumLock
caps:swapescape Swap ESC and CapsLock
caps:escape Make CapsLock an additional ESC
caps:backspace Make CapsLock an additional Backspace
caps:super Make CapsLock an additional Super
caps:hyper Make CapsLock an additional Hyper
caps:shiftlock CapsLock toggles Shift so all keys are affected
caps:none CapsLock is disabled
compose:caps CapsLock
shift:breaks_caps Shift cancels CapsLock
shift:both_capslock Both Shift-Keys together toggle CapsLock
shift:both_capslock_cancel Both Shift-Keys together activate CapsLock, one Shift-Key deactivates
参考資料
- Caps Lockを無効にして、xmodmapを使用してメニューをSuper_Rに再マップしても機能しなくなりました
- UbuntuでCapsLockを無効または有効にする
- LinuxでCapsLockキーを無効にする
- キーボード–CapsLockを変更または無効にする