Caps Lockトグル効果を再マップまたは無効にしないで回避するには?

Caps Lockトグル効果を再マップまたは無効にしないで回避するには?

Caps Lockを設定して使用するX11プログラムがあります。問題は通常のCaps Lockトグルを無効にしたいのですが、そうするとキーが無効になるようです。

そのため、X11がCaps Lockキーストロークを取得するたびにそれを取得する必要がありますが、キーを無効にしたり他のキーに再マップしたりせずに、キーストロークを大文字のトグルに変換する機能はありません(おそらくこの場所にあります)。カーネルレベル?)。

スキャンコードを変更してみましたが、キーが再マップされました。 Caps Lock エントリも削除しましたが、xmodmapこれにより大文字も無効になりました。

カーネルが大文字のキーを無視し(一般的な機能を使用しない)、メッセージをXに転送するように指示するにはどうすればよいですか?

詳細を追加するだけです。

私が運営したい「プログラム」は人間的な「エンソー」だ。キーがないと、「CRITICAL:root:準モードキーが見つかりません」というエラーが発生します。エラーがない場合は、ensoをcapsで使用できますが、ensoがまだ利用可能である間にcaps機能を無効にする方法がまだ見つかりませんでした。

ベストアンサー1

私はキートグルを無効にする技術がありますが、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
    ...

したがって、押されたキーイベントは、他のアプリケーションがそれを選択できるように維持されます。

xkbmapの設定

このファイルには、/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

引用する

おすすめ記事