キーボードの数字キーパッドをどのように無効にしますか?

キーボードの数字キーパッドをどのように無効にしますか?

キーボードの右側にあるすべてのテンキーを無効にしたいです。

どうすればいいですか?もちろん、操作を復元し、テンキーを再度有効にする方法も知りたいです。

私は再マッピングするなど、さまざまなことを試しました。

xmodmap -e "keycode # = """

しかし、エラーが発生します。

xmodmap commandline1: bad keycode value

私は何が間違っていましたか?

答え1

これを無効にするには、XKB次のようにします。X keycodesファイル(キーボードに対応するファイル -オペレーティングシステム使用/usr/share/X11/xkb/keycodes/evdev)。数字パッドのキーコードは次から始まるので、<KP...この行の前に次を追加できます//kp_dsbl//コメントはkp_dsbl、変更を元に戻したい場合に後で行を識別するために使用できる任意の文字列です)。

sed -i '/^[[:blank:]]\{1,\}<KP/s|^|//kp_dsbl|' /usr/share/X11/xkb/keycodes/evdev

または

ed -s /usr/share/X11/xkb/keycodes/evdev <<\IN
g/^[[:blank:]]\{1,\}<KP/s|^|//kp_dsbl|
w
q
IN

再度有効にするには:

sed -i 's|^//kp_dsbl||' /usr/share/X11/xkb/keycodes/evdev

または

ed -s /usr/share/X11/xkb/keycodes/evdev <<\IN
,s|^//kp_dsbl||
w
q
IN

答え2

#がキーコード番号を表すために使用されると仮定すると、私が見つけた最初の問題はシェルの引用でした。シェルは、分離されない限り、文字列を暗黙的に連結します。

だから入力するとき

xmodmap -e "keycode # = """

それは等しい

xmodmap -e "keycode # = "

次のいずれかを入力できます。

xmodmap -e "keycode # = \"\""
xmodmap -e 'keycode # = ""'
xmodmap -e "keycode # = "\"\"
xmodmap -e "keycode # = "'""'

それにもかかわらず、望ましい効果を得ることができないかもしれません。私の記憶は錆びましたが、ヌルキー表記を使用する必要があるかもしれません。

xmodmap -e "keycode # = null"

一般的に言えば、地図に正しいルートを削除して追加していると思います。追加するのは簡単です。

答え3

「無効なキーコード値」と表示された場合は、xmodmap無効なキーコード値を渡したことを意味します。このプログラムを使用して、xevキーから送信されたキーコードを表示できます。端末でこのプログラムを実行し、xevウィンドウでキーを押してから端末KeyPressに表示されるイベントを確認します。#質問に書いたように正しい値を使用してください。

現在送信されているシンボルキーシンボルに基づいてキーを再割り当てすることもできます。同様の方法でキーボードを無効にすることができます

xmodmap <<EOF
keysym KP_0 =
keysym KP_Decimal =
keysym KP_Enter =
keysym KP_Plus =
keysym KP_Minus =
keysym KP_Multiply =
keysym KP_Divide =
EOF

ただし、キーボード機能を復元するにはキーコードを覚えておく必要があります。最初はファイルに保存できます。

xmodmap -pke | grep KP_ >keypad.xmodmap

XKBにはより便利な方法があります。

関連情報