キーボードの右側にあるすべてのテンキーを無効にしたいです。
どうすればいいですか?もちろん、操作を復元し、テンキーを再度有効にする方法も知りたいです。
私は再マッピングするなど、さまざまなことを試しました。
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にはより便利な方法があります。