解决Ubuntu等Linux发行版中GNOME下Caps_Lock键延迟的问题

本文的参考资料:

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
点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据