禁用 numlock,保留鼠标按键绑定

Smi*_*ver 6 linux bash xmodmap numlock xdotools

我无法禁用 Numlock 键(使键什么也不做,以便小键盘数字始终有效),同时将额外的鼠标按钮(在我的鼠标侧面)映射到快捷方式以执行自定义操作。

我使用 Arch Linux 和 Xfce,登录管理器是 LightDM。

我使用这个代码,放在一个 bash 文件中,在启动时禁用我的 numlock:

xmodmap -e "keycode 77 = NoSymbol"
Run Code Online (Sandbox Code Playgroud)

我的主目录中有一个 .xbindkeysrc 文件,其中包含:

"xdotool key ctrl+w"
 b:8 + Release

"xdotool key ctrl+d"
 b:9 + Release
Run Code Online (Sandbox Code Playgroud)

(关闭标签和书签)

如果我在启动时启用“禁用 Numlock”代码,.xbindkeysrc 文件将不再有效。这似乎与与numlockx onxmodmap 命令(在它之前)在同一个 bash 文件中的命令有关。我该如何解决?

添加

"NoCommand"
 c:77
Run Code Online (Sandbox Code Playgroud)

to .xbindkeysrc 也没有预期的效果。将 c 更改为 m,因为理论上 Numlock 是一个修饰键,无济于事。使用 Num_Lock 而不是 c:77 也不起作用。

ide*_*n42 5

基于@Micha?戈尔尼的回答。以下是禁用 num-lock、无论如何使用数字以及将 numlock 映射到 F13 的命令(绑定到窗口管理器中的特殊功能可能很方便)。

# NumLock is F13
xmodmap -e "remove mod2 = Num_Lock" \
        -e "keycode 77 = F13"

# Use numbers even when numlock is off
xmodmap -e "keysym KP_End = KP_1" \
        -e "keysym KP_Down = KP_2" \
        -e "keysym KP_Next = KP_3" \
        -e "keysym KP_Left = KP_4" \
        -e "keysym KP_Begin = KP_5" \
        -e "keysym KP_Right = KP_6" \
        -e "keysym KP_Home = KP_7" \
        -e "keysym KP_Up = KP_8" \
        -e "keysym KP_Prior = KP_9" \
        -e "keysym KP_Insert = KP_0" \
        -e "keysym KP_Delete = KP_Decimal"
Run Code Online (Sandbox Code Playgroud)

最好不要一直开着 numlock 灯:)


Mic*_*rny 4

让我们首先解释一下正在发生的事情以及为什么您的想法行不通。首先,看一下修改器图:

$ xmodmap
xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
Run Code Online (Sandbox Code Playgroud)

如您所见,Num_Lockmod2在这里。当它打开时,所有按键事件都带有mod2位。

如果你像这样禁用它:

$ xmodmap -e "keycode 77 = NoSymbol"
$ xmodmap 
xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        BadKey (0x4d)
mod3      
mod4        Super_L (0x85),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
Run Code Online (Sandbox Code Playgroud)

请注意,mod2现在与 相关联BadKey,这似乎让 Xorg 很困惑。事实上,对我来说,大多数修改器贴图更改似乎都破坏了 X11。


现在,我找不到涉及使用修改器贴图的良好解决方案。但我有另一个想法:您可以映射所有键盘按键,使其在打开和关闭数字锁定的情况下都具有相同的功能。那是:

xmodmap -e "keysym KP_Up = KP_8"
xmodmap -e "keysym KP_Left = KP_4"
# ...
Run Code Online (Sandbox Code Playgroud)

等等。一旦你这样做了,数字锁定的状态将不再重要。

您甚至可以随后删除修饰符来关闭 LED:

xmodmap -e "remove mod2 = Num_Lock"
Run Code Online (Sandbox Code Playgroud)