Answers:
在挂起到RAM后,查看这个archlinux论坛线程Xmodmap Reset。线程中有几个示例,可以帮助您入门,并向您展示如何设置一个钩子,该钩子将通过电源管理子系统触发,xmodmap
每次退出挂起时,该子系统都会运行您的设置。
像下面的脚本,保存的东西/etc/pm/sleep.d/11suspend
(改变me
在 /bin/su - me
您的实际用户名):
#!/bin/bash
case $1 in
hibernate)
echo "Hey guy, we are going to suspend to disk!"
;;
suspend)
echo "Oh, this time we're doing a suspend to RAM. Cool!"
;;
thaw|resume)
echo "oh, suspend is over, we are in $1 phase..."
# Set Display #
DISPLAY=:0.0 ; export DISPLAY
/bin/su - me -c "sleep 3; /usr/bin/xmodmap /home/me/.xmodmaprc" &
;;
*) echo "somebody is calling me totally wrong."
;;
esac
初步说明:您不应使用过时的xmodmap
命令,而应使用XKB(xkbcomp
)。
然后,您可以从~/.xsession
脚本中更改设置。我个人有:
setxkbmap -types local -print | \
sed -e '/xkb_symbols/s/"[[:space:]]/+local&/' > $HOME/.xkb/keymap/custom
xkbcomp -w0 -I$HOME/.xkb -R$HOME/.xkb keymap/custom $DISPLAY
在我的~/.xsession
文件中,并将我的XKB设置放入~/.xkb/symbols/local
和~/.xkb/types/local
文件中。每次X登录后,这将更改设置。
不幸的是,这些设置在挂起/恢复后会丢失。有一个解决方法:保存它们,然后使用/etc/pm/sleep.d
目录中的脚本通过pm-utils还原它们;你可能需要
xhost +si:localuser:root
在~/.xsession
脚本中,因为root没有您的xauth信息。我已经给出了一个示例(用于XKB):https ://bugs.debian.org/cgi-bin/bugreport.cgi ? bug = 633849#92
~/.xsession
在这里恢复后没有被调用。你知道为什么吗?
~/.xsession
在X会话开始时,@ brauliobo 不会在恢复后执行。您xhost +si:localuser:root
只需要在这个时候做。
xmodmap
加载自定义按键映射新的方法。它似乎也好得多。在我的情况下(XUbuntu 18.04),它似乎也可以在暂停/恢复后继续生存。