本文的参考资料:
https://discourse.ubuntubudgie.org/t/caps-lock-delay-fix/4085
https://askubuntu.com/questions/574740/caps-lock-delay
这似乎是一个故意设计,可以用“Caps Lock Delay”作为关键词找到大量的关于该问题的描述和解决方法。
该问题的具体情况为:按下Caps Lock键后,如果立即按一个字母键(1s内),那么输入的字母的大小写仍然是Caps Lock切换前的状态,例如,当前是小写输入状态,你按了Caps Lock键后,紧接着按字母A键,输入的是小写字母“a”而不是大写字母“A”。
这似乎是一种有意设计,为了防止勿碰Caps Lock键后快速键入的字母的大小写出错。
在打字机时代,用户通常使用Shift键输入单词的大写首字母,而输入大写标题时才使用Caps Lock键,但是尤其是对于Windows的使用者而言,由于微软的缘故,用户更喜欢使用Caps Lock键来切换大小写,而这种操作在Windows下是无延迟的,但是在Mac和Ubuntu上都存在延迟问题,要解决这种延迟问题,需要进行如下操作:
首先需要选定一个脚本目录,例如
):/home/lizhirui/tools/autoscripts
(下面的操作全部以该路径作为假设,当前用户目录为
/home/lizhirui
在
,输入如下内容:/home/lizhirui/tools/autoscripts
目录下创建一个脚本文件,名为
caps_lock_delay_fix.sh
#!/bin/sh
#reference:https://askubuntu.com/questions/574740/caps-lock-delay
#reference:https://discourse.ubuntubudgie.org/t/caps-lock-delay-fix/4085
xkbcomp -xkb "$DISPLAY" - | sed 's#key <CAPS>.*#key <CAPS> {\
repeat=no,\
type[group1]="ALPHABETIC",\
symbols[group1]=[ Caps_Lock, Caps_Lock],\
actions[group1]=[ LockMods(modifiers=Lock),\
Private(type=3,data[0]=1,data[1]=3,data[2]=3)]\
};\
#' | xkbcomp -w 0 - "$DISPLAY"
然后使用
命令为该脚本设置可执行权限,直接运行该脚本就可以立即生效。chmod u+x caps_lock_delay_fix.sh
如果想要永久生效,需要编写GNOME的开机启动脚本,即需要在
文件,内容为:/home/lizhirui/.config/autostart
目录下(autostart目录可能需要创建)创建
caps_lock_delay_fix.desktop
[Desktop Entry]
Names=Caps Lock Delay Fix
Comment=Caps Lock Delay Fix
Exec="/home/lizhirui/tools/autoscripts/caps_lock_delay_fix.sh"
Hidden=false
NoDisplay=false
Type=Application
X-GNOME-Autostart-enabled=true