我有一个右侧带有数字键的标准键盘(我猜它被称为 104 键键盘)。我只想将数字键用作数字键。这意味着我不想NumLock打开和关闭数字键。
但是,有时会发生(我不知道如何,可能是我不小心按了NumLock键)NumLock关闭了,我必须再次按下它。这是非常烦人的。
是否可以禁用关闭NumLock?
换句话说:我希望我的数字键始终充当数字键,并禁用NumLockswitch。
我正在使用 Debian 和 LXDE(Openbox)。
我已经使用了几年的解决方案,我在 Openbox 中使用它在NumLock按下键时执行脚本。此脚本然后NumLock再次打开。
<keybind key="Num_Lock">
<action name="Execute">
<command>numlock-on.sh</command>
</action>
</keybind>
Run Code Online (Sandbox Code Playgroud)
除了是一个肮脏的黑客之外,这不能可靠地工作。不知何故,我仍然碰巧numlock键盘上的键被禁用了。
我对数字锁定键的想法感到沮丧。numlock和Caps Lock是纯粹的邪恶的概念。
无论如何,我尝试了第二种解决方案,将以下内容放入我的openbox
自动启动脚本中:
xmodmap -e 'keycode 77 = Escape'
Run Code Online (Sandbox Code Playgroud)
但这根本不起作用。
首先,当我登录时openbox
,一切正常,并且数字键可以作为数字键使用。
但是当我按下时numlock,它不仅禁用了数字键,而且当我按下7例如时,我得到OH
,然后数字键用作箭头键。
再次按下NumLock键不会启用数字键。我必须注销并重新登录。
所以xmodmap
解决方案没有按预期工作。
我怎样才能一劳永逸地完全禁用密钥的撒旦功能NumLock?
fly*_*ter 10
使用 LinuxMint 17.2 和我想象其他版本的 Ubuntu,您可以转到您的键盘设置,然后在该页面上的布局,您会发现一个小的“选项”按钮。
从那里转到“其他兼容性选项”并选中“数字键始终输入数字”
这对我来说是救命稻草。键入一个数字并将其移动到页面上的其他位置,这让我很烦。干杯! ;)
在阅读了这里的所有答案后,我很惊讶地发现您可以执行以下操作。
<keybind key="Num_Lock">
<action name="Execute">
<command>numlockx on</command>
</action>
</keybind>
Run Code Online (Sandbox Code Playgroud)
因此,每次按Num,都会停用 numlock。它将执行numlockx on
,这会重新激活 numlock。
这个名字来自我的输出,xev
它给了我关键代码 77 和名字Num_Lock
在@MartinVegters 的情况下,他需要等待几秒钟,以便在处理numlockx on
事件后肯定会执行Num。由于在内核中处理 numlock 和执行之间存在竞争条件numlockx
。
对于这种情况,您可以编写一个小脚本,denumlock.sh
例如
#!/bin/sh
sleep "$1"
numlockx on
Run Code Online (Sandbox Code Playgroud)
并在 Key 绑定中使用它
<command>/bin/sh denumlock.sh 1</command>
Run Code Online (Sandbox Code Playgroud)
这很脏,但它有效。
我推荐的是以下我无法测试的内容。您最好遵循建议使用的第一个答案
xmodmap -e 'keycode 77 = Escape'
Run Code Online (Sandbox Code Playgroud)
但是对于 LXDE,您需要使用 LXDE 自动启动机制,这与 Openbox 编辑~/.config/openbox/autostart
.
在 LXDE 中,您显然需要编辑~/.config/lxsession/LXDE/autostart
或使用 Lubuntu ~/.config/lxsession/Lubuntu/autostart
,它包含启动命令。(请参阅Arch 文档和LXDE 文档)您可能需要创建该文件并添加这一行。
@xmodmap -e 'keycode 77 = Escape'
Run Code Online (Sandbox Code Playgroud)
遗憾的是,正如我所说,我无法测试这是否有效,因为我只有一个运行 LXDE 的 VM。
在我的笔记本电脑键盘 (Ubuntu 10.04) 上,键盘锁当前处于开启状态。
$ xmodmap -pke|grep 77
keycode 77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys
keycode 177 = XF86Phone NoSymbol XF86Phone
$ xmodmap -e "keycode 77 ="
Run Code Online (Sandbox Code Playgroud)
瞧!numlock 现在被禁用。
xmodmap -e "keycode 77 = Num_Lock Pointer_EnableKeys Num_Lock Pointer_EnableKeys"
Run Code Online (Sandbox Code Playgroud)
再放回去。(也许 Num_lock 是一个更好的主意,但你明白了要点)。
回复@Martin Vegter 的评论。
好的,回复您的评论 xmodmap 破坏了您的绑定,理解。
我刚刚检查了Openbox 文档
看看 ~/.config/openbox/lxde-rc.xml
ls -l lxde-rc.xml
(你也有 rc.xml 吗?,请检查)。
将它的副本作为备份
(使用编辑器)搜索 numlock(可能是 nmlk)。
你看到这样的吗?
<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>
Run Code Online (Sandbox Code Playgroud)
将其注释掉或将键绑定键值更改为替代键,例如 Alt-Numlock 以进行切换
key="A-Numlock"
Run Code Online (Sandbox Code Playgroud)
例如
要注释掉
<!-Commented out from here
<keybind key="Numlock">
<action name="whatEverItSays"/>
</keybind>
To Here -->
Run Code Online (Sandbox Code Playgroud)
或者
更改为 Alt+Numlock 切换
<keybind key="A-Numlock">
<action name="whatEverItSays"/>
</keybind>
Run Code Online (Sandbox Code Playgroud)
保存更改并注销/登录或重新启动。
小智 5
只需通过将其映射为空来删除 NumLock 键映射:首先运行xev
并按 Num Lock(它可能会打印 77),然后运行命令:
xmodmap -e "keycode # = """
Run Code Online (Sandbox Code Playgroud)
其中# 是NumLock 的键码。
您还可以将其设置~/.xprofile
为在 x 个会话中禁用 NumLock。
小智 5
查找您的 numlock 键码xev
。例如,这里的 Num_Lock 是 77。
使用 xmodmap 重新映射键码:
对于当前的 X 会话,在 shell 中,使用xmodmap -e 'keycode 77 = '
.
对于所有未来的 X 会话,内部~/.xprofile
place xmodmap -e 'keycode 77 = '
。
编辑:注意:如果软件正在更改 Num Lock 状态,则不起作用。
我实际上已经能够用另一种方式一劳永逸地解决这个问题:
有一个完整的线程:https : //codereview.stackexchange.com/a/147817/104270
但实际上它就像调用一样简单:
# the program `numlockx` is from the package `numlockx`
# the program `setxkbmap` is from the package `x11-xkb-utils`
numlockx on
setxkbmap -option numpad:mac
Run Code Online (Sandbox Code Playgroud)
在您的 GUI 登录后。我自己正在使用它,它运行完美。