键盘修改在暂停时重置,修改 xinitrc、xsession、xprofile 和配置文件失败

键盘修改在暂停时重置,修改 xinitrc、xsession、xprofile 和配置文件失败

在我的设置中,我包括 setxkbmap dvorak -option ctrl:nocaps

  • .xinitrc
  • .xsession
  • .xprofile
  • 。轮廓

但如果我合上笔记本电脑盖并重新打开,我的键盘仍处于 dvorak 状态,但 capslock 键会恢复为 capslock。我还应该更改什么?

答案1

我在这里写的是一种解决方法,而不是真正的解决方案。

当您关闭盖子时,系统可能会发生两种情况:

  1. 暂停
  2. 锁定屏幕/屏幕保护程序

情况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 系统上,不需要进行任何更改。

此答案基于以下帖子中的信息

  1. 使用 systemd 在挂起之前和之后运行脚本
  2. 如何在屏幕锁定/解锁时运行脚本?

相关内容