我想禁用所有小键盘键;位于我键盘右侧的那些。
我怎样才能做到这一点?当然,我也想知道如何恢复操作并重新启用数字键盘。
我尝试过不同的事情,例如重新映射:
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
假设 # 用于指示键码编号,我注意到的第一个问题是 shell 引用。 shell 隐式连接字符串,除非分开。
所以当你输入
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可能有更方便的方法。