我在使用 Caps 时遇到了问题,我有一个脚本可以解决这个问题。不幸的是,这个脚本在重新启动之前一直有效:
# Fix caps
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"
exit 0
Run Code Online (Sandbox Code Playgroud)
我只是将它添加到启动应用程序中,但我想在 LightDM 启动时运行它,甚至在 X11 启动时运行它。有什么办法可以在 X11 启动时运行这个脚本吗?我正在使用 Xubuntu 16.04.2。
谢谢。
请尝试以下操作:
将脚本放入系统范围的目录中,例如带有适当的 shebang 的 /usr/local/bin
#!/bin/sh
# Fix caps
/usr/bin/xkbcomp -xkb "$DISPLAY" - | /bin/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"
exit 0
Run Code Online (Sandbox Code Playgroud)
使其可执行,例如sudo chmod +x /usr/local/bin/fix-caps.sh
在 中创建自定义配置文件/etc/lightdm/lightdm.conf.d。使用诸如 之类的名称99-local-settings.conf。(99前缀意味着它将在 中提供的标准设置脚本之后运行/usr/share/lightdm/lightdm.conf.d。)
将脚本的位置添加为display-setup-scriptint[SeatDefaults]部分:
[SeatDefaults]
display-setup-script = /usr/local/bin/fix-caps.sh
Run Code Online (Sandbox Code Playgroud)
应该display-setup-script在 X 服务器启动之后、任何欢迎程序运行之前运行 - 请参阅LightDM:添加系统挂钩。