web-dev-qa-db-ja.com

カスタムキーボードレイアウトは、スタンバイまたは再起動後にデフォルトにリセットされます

自分でキーボードレイアウトを設計しました。xmodmapを実行すると問題なく動作しますが、スタンバイまたは再起動すると、レイアウトはqwertyに戻ります。

どうすればデフォルトとして設定できますか?私のOSはXFCE4を搭載したDebianWheezyです。

11
Vincent Zhang

このarchlinuxフォーラムスレッドをチェックしてください RAMへのサスペンド後のXmodmapリセット 。スレッドにはいくつかの例があり、サスペンドから抜け出すたびにxmodmapセットアップを実行する電源管理サブシステムを介してトリガーされるフックをセットアップする方法を示しています。

/etc/pm/sleep.d/11suspendとして保存された次のスクリプトのようなもの(/bin/su - memeを実際のユーザー名に変更します):

#!/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
6
slm

予備的な注意:廃止された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

rootにはxauth情報がないため、~/.xsessionスクリプトで。私は例を挙げました(XKBの場合): https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633849#92

3
vinc17