Настраиваемая раскладка клавиатуры сбрасывается на значение по умолчанию после ожидания или перезагрузки

11

Я разработал раскладку клавиатуры для себя, после запуска xmodmapона работает нормально, но после ожидания или перезагрузки раскладка возвращается к qwerty.

Как я могу установить его по умолчанию? Моя ОС - Debian Wheezy с XFCE4.

Винсент Чжан
источник
У меня та же проблема, Debian Джесси с xfce4.
Джон Лоуренс Аспден

Ответы:

6

Проверьте эту ветку форума archlinux Сброс Xmodmap после Suspend to 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
SLM
источник
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.

К сожалению , эти настройки теряются после приостановки / возобновления . Есть обходной путь: сохраните их и восстановите их с помощью 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

vinc17
источник
~/.xsessionне вызывается после резюме здесь. ты знаешь почему?
Браулиобо
@brauliobo ~/.xsessionникогда не выполняется после возобновления, только когда начинается сеанс X. Вам нужно сделать xhost +si:localuser:rootтолько в это время.
Vinc17
Большое спасибо за эту информацию. Я понятия не имел, что есть более новый метод, чем xmodmapзагрузка пользовательских раскладок. Похоже, работает намного лучше. В моем случае (XUbuntu 18.04) он, похоже, тоже выживает при приостановке / возобновлении.
Тобия