我经常使用脚本禁用 Caps Lock 和相应的修饰符,使用xmodmap
. 这一切都很好。
然而,有时,由于某种未知的原因,Caps Lock 处于活动状态。没有键绑定,Caps_Lock
也没有键绑定来切换Lock
修饰符,除非我重置键盘映射,按下键,然后将其重新映射到我想要的配置,否则我无法关闭 Caps Lock。
那么:如何在不重新映射键且没有键绑定的情况下禁用 Caps Lock(当前处于活动状态)?
也许命令行工具可以设置状态?
对于任何感兴趣的人,以下是我的脚本如何通过按键禁用意外激活 Caps Lock(我从不故意启用它):
#!/bin/sh
# I never want to use Caps_Lock. Make Caps_Lock another Control_L...
xmodmap -e "remove Lock = Caps_Lock" 2> /dev/null
xmodmap -e "keysym Caps_Lock = Control_L" 2> /dev/null
xmodmap -e "add Control = Control_L" 2> /dev/null
我不知道有什么实用程序可以做到这一点(除了可能
xdotool key Caps_Lock
?),但同时你可以编译这个小程序cc xkb_unlock.c -s -lX11 -o ./xkb_unlock
(前提是你已经安装了编译器和 libc & xorg 开发包)并简单地使用它./xkb_unlock
。xkb_unlock.c
多年来,
xmodmap -e 'clear Lock'
在禁用大写锁定效果方面效果很好。在另一个答案中发布的 xkb_unlock.c 代码做了类似的事情。但遗憾的是,在我的现代 Linux 发行版上,这不再有效。您需要使用setxkbmap
, 而不是xmodmap
:奇迹般有效。