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) };

となっています。