回答:
RAMにサスペンドした後、このarchlinuxフォーラムのスレッドXmodmap Resetを確認してください。スレッドにはいくつかの例がありxmodmap
、一時停止が解除されるたびにセットアップを実行する電源管理サブシステムを介してトリガーされるフックをセットアップする方法を示します。
次のスクリプトのような名前で保存されます/etc/pm/sleep.d/11suspend
(me
in /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セッションが開始したときだけ、再開後に実行されることはありません。xhost +si:localuser:root
このときだけ行う必要があります。
xmodmap
カスタムキーマップをロードするよりも新しい方法があるとは思いもしませんでした。それもずっとうまくいくようです。私の場合(XUbuntu 18.04)、サスペンド/レジュームでも存続しているようです。