待机或重新启动后,自定义键盘布局将重置为默认值

待机或重新启动后,自定义键盘布局将重置为默认值

我自己设计了一个键盘布局,运行后xmodmap工作正常,但待机或重启后,布局又变回qwerty。

我怎样才能将其设置为默认值?我的操作系统是带有 XFCE4 的 Debian Wheezy。

答案1

查看这个 archlinux 论坛主题Xmodmap 挂起后重置到 RAM。该线程中有几个示例可以帮助您入门,并向您展示如何设置一个钩子,该钩子将通过电源管理子系统触发,该子系统将在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

答案2

初步说明:您不应该使用过时的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 登录后更改设置。

不幸的是这些设置是暂停/恢复后丢失。有一个解决方法:保存它们并通过 pm-utils 使用/etc/pm/sleep.d目录中的脚本恢复它们;你可能需要

xhost +si:localuser:root

在您的~/.xsession脚本中,因为 root 没有您的 xauth 信息。我举了一个例子(对于XKB):https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633849#92

相关内容