Xorg-server 1.5.3でGnomeのキーマップを変更
昨日、ArchLinuxのパッケージ更新をしたところキーマップの設定がおかしくなってしまい、
"]"とか"}"が入力できなくなっていましたが、いろいろ調べたところ一応解決したので
メモです。
最近のXorg-serverでは、hotplugをサポートするようになり、キーボードやマウスなど
の検出と設定はevdevが行うという動作がデフォルトになったようです。
ということで、xorg.confの中に書かれているInputDeviceの設定は
無視されてしまいます。
(推奨されていないようですが、無視されないようにする方法はあります)
このままだと、プログラムを書くときに困るのでとりあえずなんとかする
ことにしました。
ArchLinuxのWikiにも"Xorg input hotplugging"というページがあり、
そこでいろいろと説明や設定例が書かれていたのですが、
私の環境ではその通りではうまくいきませんでした。。。
そこで私が取った方法は以下の通りです。
(1) Gnomeの自動実行プログラムを追加します。
(2) 実行するコマンドとして以下を記入します。
setxkbmap -rules evdev -model jp106 -layout jp -option ctrl:swapcaps
(3)保存ボタンでダイアログを閉じます。
上記の方法をとる前に、
.initrc
.xsession
に上記のコマンドを書いてみたのですが、まったく効果がありませんでした。
Gnomeのセッションにログインした後、ターミナル上で上記のコマンドを
実行したところ、キーマップがうまく変更できたので、もしかしたら
.initrcや.xessionが実行される段階では、まだキーマップを変更するには
早すぎてしまって、せっかく変更してもGnomeに設定を上書きされてしまうのかも。。。
と思ったので、のセッションが開始された後で実行される(と思われる)
自動実行プログラムに追加してみたところうまくいきました。
本来はあまりきれいな方法ではないのかもしれないですが、
改善されるまでの一時的な措置としては十分です、きっと。(笑
今回の私のケースでは、どの部分(hal, gnome)の問題なのか今ひとつよく
わかりませんでした。
ちなみに、
キーマップがおかしい状態(今回の対処を行う前の状態)で setxkbmap -printを実行してみると、
xkb_keycodes { include "evdev+aliases(querty) }; (中略) xkb_geometry { include pc(pc104) };
となっていて、あやしいです。
今回の対処を行った後でsetxkbmap -printを行うと、
キーマップがおかしい状態(今回の対処を行う前の状態)で setxkbmap -printを実行してみると、
xkb_keycodes { include "evdev(jp106)+aliases(querty) }; (中略) xkb_geometry { include pc(jp106) };
となっています。