在我的设置中,我包括
setxkbmap dvorak -option ctrl:nocaps
:
- .xinitrc
- .xsession
- .xprofile
- 。轮廓
但如果我合上笔记本电脑盖并重新打开,我的键盘仍处于 dvorak 状态,但 capslock 键会恢复为 capslock。我还应该更改什么?
答案1
我在这里写的是一种解决方法,而不是真正的解决方案。
当您关闭盖子时,系统可能会发生两种情况:
- 暂停
- 锁定屏幕/屏幕保护程序
情况1:
如果您的系统在合上盖子时挂起,您可以在此位置创建脚本:/usr/lib/systemd/system-sleep/
。此处的脚本在系统挂起之前和恢复之后运行。因此,请创建以下脚本:
#!/bin/bash
exec 2> /tmp/resume_test_err.txt
if [ "${1}" = "post" ]; then
# Do the thing you want after resuming here
echo "resuming" >> /tmp/resume_test.txt # just for testing
/usr/bin/setxkbmap dvorak -option ctrl:nocaps
fi
您需要使用超级用户权限 ( sudo
) 在此目录中创建脚本。之后,您可以将此文件设置为可执行文件:
sudo chmod +x scriptname
其中scriptname
是包含该脚本的文件名。
您可以使用以下方式测试脚本
./scriptname post
echo
验证脚本正常运行后,您可以删除或注释该语句。根据脚本是否正常运行,您应该在目录中找到输出文件resume_test.txt
或。resume_test_err.txt
/tmp/
如果到现在为止一切顺利,那么当您下次恢复系统时,脚本应该可以工作,命令setxkbmap
应该会被执行。
案例 2:
如果您的系统设置为在盖子关闭时锁定屏幕,则在任何适当的目录中创建以下脚本,然后使用将脚本设置为可执行文件chmod +x scriptname
。
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
while read x; do
case "$x" in
*"boolean false"*) /usr/bin/setxkbmap dvorak -option ctrl:nocaps;;
esac
done
然后,您可以在系统启动时启动该脚本(您可以通过将脚本添加到 Ubuntu 的启动应用程序中来执行此操作)。
如果您的系统运行的是带有 gnome 桌面的 Ubuntu,那么这应该可以正常工作。但对于其他发行版和桌面环境,您可能必须org.gnome.ScreenSaver
用适当的语句替换。例如,在 Linux mint cinnamon 上,我不得不使用org.cinnamon.ScreenSaver
。但在带有 gnome 桌面环境的 Ubuntu 系统上,不需要进行任何更改。
此答案基于以下帖子中的信息