GNU/Linux >> Linux の 問題 >  >> Linux

再マッピングまたは無効化せずに、Caps Lockトグル効果を防ぐ方法は?

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を変更または無効にする
関連:フォントを決定し、適切な表記法を決定しますか?
Linux
  1. クリップボードに送信されるテキスト選択を切り替えたりオフにしたりするにはどうすればよいですか?

  2. N番目に若いファイルをリストする方法(Lsを解析せずに!)?

  3. 確認プロンプトなしでシャットダウンする方法は?

  1. Rm -r *コマンドの誤った実行を防ぐ方法は?

  2. CとJavaでCPUキャッシュ効果を生み出す方法は?

  3. 一致を印刷せずに、一致するようにgrepを使用するにはどうすればよいですか?

  1. 端末で sips を使用して、アップスケーリングせずに画像のサイズを変更するにはどうすればよいですか?

  2. 端末での誤ったコピー/貼り付けを防止または中断するにはどうすればよいですか?

  3. サーバーを妨害せずに何百万ものファイルを削除する方法