待机或重启后,自定义键盘布局会重置为默认设置


11

我为自己设计了一个键盘布局,运行后xmodmap可以正常工作,但是在待机或重新启动后,布局又回到了qwerty。

如何将其设置为默认值?我的操作系统是带有XFCE4的Debian Wheezy。


我有同样的问题,使用xfce4的debian jessie。
约翰·劳伦斯·阿斯普登

Answers:


6

在挂起到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

3

初步说明:您不应使用过时的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在这里恢复后没有被调用。你知道为什么吗?
brauliobo,2015年

~/.xsession在X会话开始时,@ brauliobo 不会在恢复后执行。您xhost +si:localuser:root只需要在这个时候做。
vinc17 2015年

非常感谢您提供此信息。我不知道有比xmodmap加载自定义按键映射新的方法。它似乎也好得多。在我的情况下(XUbuntu 18.04),它似乎也可以在暂停/恢复后继续生存。
Tobia
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.