この回答 に従って、次の~/.Xmodmap
ファイルを作成しました。
keysym Delete = Menu
keysym Menu = Delete
clear Lock
keycode 0x42 = Escape
つまり、Delete
とMenu
を交換し、Caps Lock
を追加のEscape
にします。
次回ログインすると、Ubuntuは~/.Xmodmap
を期待どおりにロードするかどうかを尋ねてきました。私はそれをロードしましたが、何も起こりませんでした(その時も、その後のログインでも)。 xmodmap ~/.Xmodmap
を手動で実行すると、期待どおりに動作します。
これは10.10ベータの初期に機能したことは知っていますが、10.10の新規インストールでは失敗しています。私は10.10より前のものには試していません。何か案は?
編集:/etc/gdm/Xsession
にいくつかのデバッグステートメントを挿入して、~/.Xmodmap
がロードされていることを確認し、すべてが魔法のように動作し始めました。エコーを追加する以外は何も変更しませんでしたが、変更を元に戻して再起動したので、今でも機能しています。私が今まで見た中で奇妙なこと。
私が気づいたことの1つは、Xmodmapの「Caps Lock to Escape」の部分が常に機能していたことです。失敗したのは、削除/メニュースワップだけでした。問題が停止した理由が実際にはわからないため、他の誰かが同じ問題を抱えている場合に備えて、この質問は今のところ公開しておきます。
私はそれがばかげていることを知っていますが、回避策としてあなたはただxmodmap ~/.Xmodmap
を自動起動することができます。
また、/etc/gdm/Xsession
行のusermodmap="$HOME/.Xmodmap"
を確認し、ない場合はファイルの最後に追加します。システムの唯一のユーザーである場合は、変更を/etc/X11/Xmodmap
に入れるだけです。
おそらく~/.Xmodmap
ファイルに構文エラーがありますか?
実行してみてください:
$ xmodmap ~/.Xmodmap
エラーがある場合はエラーが発生します。
パーティーに遅刻したが、これは私にも夢中になった。そして、私と同じように頑固ですが、あきらめることは選択肢ではありませんでした。
基本的にこれは私が試したものです(私のユーザー、または必要に応じてrootとして)
(実際には、xmodmap
コマンドを~/.bashrc
に追加しても機能しましたが、ログイン後に毎回端末を起動する必要があります)
数年前(?)、xkb
はキーのマッピングと構成(Xとのインターフェース)を処理するために選択されましたが、xmodmap
はxkb
の後にキー関連の変更を要求することもありますXセッションの初期化中の動作。
問題は、これらのxmodmap設定がいつ発生するかです。
Itseems上記のファイルは処理の早い段階で処理され、Xはxmodmapの変更を受け入れる準備ができていないか、xkbがそれらを上書きします。
注:これらのファイルに実際に実行されていることを確認するために、これらのファイルに「追跡」を追加しました。
動作しているように見えるソリューション
最初は.desktop
ファイルを追加するつもりはありませんでした(単純な1行のスクリプトで十分でした)が、それで機能するので、ここにあります。
ソリューションは、 Linuxで特別なキーボードキーを再マップまたは交換する方法 "ソリューション1"
基本的に~/.config/autostart/my-xmodmap.desktop
ファイルを作成し、そこに入れます:
[Desktop Entry]
Name=MyXmodmap
Exec=/usr/bin/xmodmap /home/me/.Xmodmap
Terminal=false
Type=Application
X-GNOME-Autostart-enabled=true
me
をユーザー名に置き換えます(~/
の代わりに同等に機能する$HOME
または/home/me
とxmodmapのフルパスを試してみませんでした)おそらく必要ありません...)、およびexecビットを追加します
chmod +x ~/.config/autostart/my-xmodmap.desktop
この場合、xmodmapコマンドは~/.Xmodmap
ファイルにある必要があります(または-e
オプションを使用するか、別のファイル名を選択してください!)。ログアウトして再度ログインします。
「起動アプリケーション」から起動プログラムを作成する場合があることに注意してください。
もう1つの解決策は、xmodmapを忘れてxkb
!を構成する方法を学ぶことです。
編集(もう一度)
時々、おそらくログオンの25%で、xmodmap
はまだ機能していないように見えます-コマンドが実際に実行されている間(トラッカーがそれを証明します)。現時点で私が思いつく唯一の結論は、xkb
プロセスはログオンプロセスの後半で実行され、xmodmap
の実行後に終了する可能性があるということです。競合状態のように見えます...それで、最後に、自動開始デスクトップファイルexec
行を
Exec=$HOME/bin/mystart &
(&
に注意)mystart
は新しいディレクトリにあるスクリプトですbin
は、
#!/bin/bash
sleep 5
/usr/bin/xmodmap /home/me/.Xmodmap &
date >> /tmp/xmodmap-has-run
そして
chmod u+x ~/bin/mystart
スクリプトは、xmodmapを実行する5秒前にスリープし、いつ実行されたかを追跡します(ファイル/tmp/xmodmap-has-run
内)。
うまくいけばそれですべてです!
ここに、おそらくより良い答えがあります: http://cweiske.de/howto/xmodmap/ar01s06.html
あなたはあなたのために働くためにそれを少し微調整する必要があるかもしれませんが、指示はすべてそこにあります。
私は同じ奇妙な問題を抱えていました。セッションにログインしているときにXmodmapを起動しようとしました(ubuntu 13.04)。最終的に、コマンドを置くホームフォルダー内の.xinitrcファイルで動作するようになりましたが、それへの絶対パスは次のとおりです。
/ usr/bin/xmodmap /home/MYNAME/.Xmodmap
その後、再実行するだけでなく、再起動する必要がありました。