保持 NumLock 始终开启

Mar*_*ter 36 keyboard numlock

我有一个右侧带有数字键的标准键盘(我猜它被称为 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键盘上的键被禁用了。

我对数字锁定键的想法感到沮丧。numlockCaps Lock是纯粹的邪恶的概念。

无论如何,我尝试了第二种解决方案,将以下内容放入我的openbox自动启动脚本中:

xmodmap -e 'keycode 77 = Escape'
Run Code Online (Sandbox Code Playgroud)

但这根本不起作用。

首先,当我登录时openbox,一切正常,并且数字键可以作为数字键使用。

但是当我按下时numlock,它不仅禁用了数字键,而且当我按下7例如时,我得到OH,然后数字键用作箭头键。

再次按下NumLock键不会启用数字键。我必须注销并重新登录。

所以xmodmap解决方案没有按预期工作。

我怎样才能一劳永逸地完全禁用密钥的撒旦功能NumLock

小智 17

也许是我不小心敲到了NumLock钥匙

如果键盘是您的(而不是您雇主的),只需将其从键盘上物理移除即可

如果您真的需要,您仍然可以用尖头东西按下它。

在此处输入图片说明

  • 是的,+1。简单就是优雅。 (5认同)

fly*_*ter 10

键盘选项图片使用 LinuxMint 17.2 和我想象其他版本的 Ubuntu,您可以转到您的键盘设置,然后在该页面上的布局,您会发现一个小的“选项”按钮。

从那里转到“其他兼容性选项”并选中“数字键始终输入数字”

这对我来说是救命稻草。键入一个数字并将其移动到页面上的其他位置,这让我很烦。干杯! ;)

  • 这也可以从命令行通过`setxkbmap -option numpad:mac` 或通过在`xorg.conf` 中设置`Option "XkbOptions" "numpad:mac"` 来完成。 (6认同)
  • 这个答案应该有更多的积分! (2认同)

Rap*_*ens 7

在阅读了这里的所有答案后,我很惊讶地发现您可以执行以下操作。

<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。


X T*_*ian 6

在我的笔记本电脑键盘 (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 会话,内部~/.xprofileplace xmodmap -e 'keycode 77 = '

    编辑:注意:如果软件正在更改 Num Lock 状态,则不起作用。

  • 命令 `xmodmap -e 'keycode 77 = '` 有效,但它会导致一个严重的问题:我所有的键绑定都停止工作 (2认同)
  • 问题是,任何`xmodmap` 命令(即`xmodmap -e 'keycode 77 = Escape'`)都会破坏我在`.config/openbox/lxde-rc.xml` 中定义的现有键绑定 (2认同)

Lin*_*eak 5

我实际上已经能够用另一种方式一劳永逸地解决这个问题:

有一个完整的线程: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 登录后。我自己正在使用它,它运行完美。