XとGNOMEでキーボードが異なると怒られる

ログインしてGNOMEのセッションを開始しようとすると

The X system keyboard settings differ from your current 
GNOME keyboard settings.

Expected was model "pc101", layout "us" and no options, 
but the the following settings were found: model "jp106", 
layout "jp" and no options.

        [Use X settings]        [Use GNOME settings]

というダイアログが出て来て、どっちにするか決めろと言われる。

このメッセージについて問題がいくつかある。どっちがXの設定で、どっちがGNOMEの設定が分からないことが第一。それに「the the」というのもいただいけない。そして何よりも、私はどちらも「jp106」で設定しているので、このメッセージ自身出るのがおかしい。このダイアログの指示でXかGNOMEかを指定しなければならないが、どちらを選択しても、ちゃんとjp106として使える。(「*」が「シフト−8」になることはない。)

私の環境がちょっとヒネッテいるせいかもしれない。(といっても、それ程ヒネクレタことをしているわけではないのだけど。) 私の場合、GUIツールよりは端末ウィンドウでコマンドを使って作業する割合の方が高い。そこで、ディレクトリ名とかに漢字は入っていると操作性が著しく落ちるためにベースの環境は英語でインストールしている。Linux(今回はFedora 8)をインストールする時に、基本言語を英語として設定、キーボードを日本語に指定している。そうすれば、システムからのメッセージやメニューは英語だが、必要に応じて日本語も扱えるので便利だ。こういう風に利用する人のことを想定していない(もしくは想定はしていたが、ロジックに不具合が残っている)のかも知れない。

ログインするとほぼ毎回でるのでウットオシイ。なんとか出ないようにしたいと色々調べていたが、有効な解決方法がネットでは見つからなかった。 じゃっかん、あきらめかけていたが、「どこかにpc101と定義してあるところがある筈だから、見つけ出そう。」ということで、findをかけてみた。

find / -fstype ext3 -type f -exec grep pc101  '{}' \; -print

色々なファイルでpc101とう文字列を含んでいたが、怪しいのは次のファイルだった。
~/.gconf/desktop/gnome/peripherals/keyboard/kbd.sysbackup/%gconf.xml
最初は、GNOMEの設定ではなくXの設定の方がおかしいのかと思っていたのでルートから探したが、GNOMEの方の設定がおかしいのであれば、確かに自分のホーム・ディレクトリの下が怪しい。(GNOMEのキーボードの設定(System -> Administration -> Keyboard)では「Japanese」となっているのでGNOMEの設定は正しいと思っていた。)

このファイル(kbd.sysbackup/%gconf.xml)を開くと次のようになっていた。

<?xml version="1.0"?>
<gconf>
        <entry name="model" mtime="1199466741" type="string">
                <stringvalue>pc101</stringvalue>
        </entry>
        <entry name="layouts" mtime="1199466741" type="list" ltype="string">
                <li type="string">
                        <stringvalue>us</stringvalue>
                </li>
        </entry>
</gconf>

これをテキスト・エディタで次のように書き換えた。

<?xml version="1.0"?>
<gconf>
        <entry name="model" mtime="1199466741" type="string">
                <stringvalue>jp106</stringvalue>
        </entry>
        <entry name="layouts" mtime="1199466741" type="list" ltype="string">
                <li type="string">
                        <stringvalue>jp</stringvalue>
                </li>
        </entry>
</gconf>

とりあえず、あのうっとおしいメッセージは出なくなった。しかし、このファイルが何なのか、強制的に書き換えて副作用がないのか、単に「pc101」や「us」のところだけを変えればいいのかは分からない。とにかく、うっとおしいダイアログが消えてくれたことでOKとする。

%gconf.xmlが書き変わる

vncでリモートでアクセスしたりしていると、またあのダイアログが出てきた。調べたら「%gconf.xml」がpc101、usに戻っている。ディレクトリの名前からして(kbd.sysbackup)何かのタイミングが書き換えられるのだろうが、ちょっと困ったものだ。

一々、手で書き直すのも面倒なので、fix_keyboardというシェルスクリプトを作っておいた。(といっても数行のメモみたいなスクリプトだが。)

#! /bin/sh

FILE=$HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd.sysbackup/%gconf.xml

ed $FILE << E_O_F
1,\$s/pc101/jp106/g
1,\$s/us<\/stringvalue>/jp<\/stringvalue>/g
w
q
E_O_F

追記(2008/02/19)解決です。

remさんからコメントを頂きました。

rem 2008/02/19 10:58
はじめまして、私も同じ現象で困っていたところ大変参考になりました。

%gconf.xmklが書き変わってしまう現象について、私も少し調べてみました。
これはVNCでログインする時、gnomeコントロールパネルがキーボードを検出しようとして、失敗するために起こるそうです。
これを回避するために、gconf-editorを使います。

1.gconf-editorを起動
2./desktop/gnome/peripherals/keyboard/general を選択
3.disable_sysconfig_changed_warning にチェックを入れる

4.念のため、/desktop/gnome/peripherals/keyboard/kbd のoverrideSettings のチェックを外す

これで私の環境ではエラーが表示されることは無くなりました。
参考URL:
http://linuxtidbits.wordpress.com/2007/12/19/gconf-and-keyboard-warnings

こちらこそ大変参考になりました。ありがとうございました。

私も一応、ネットで調べてはいたのだが、ここまではたどり着けなかった。gdmやGNOMEの方を疑っていたので、VNCが原因とは考えつかなかった。

頂いた解法は未だ試していない。と、いうのも(VNCは頻繁に使っているが)最近例の警告メッセージに出会わなくなった。多分、PC(サーバとして使っている)を別室に設置して、アクセスは全てLAN経由(VNCsshだけ)になったのでキーボードの"競合"が起こらなくなった為かも知れない。今度、あのメッセージに出合ったら是非使わせてもらおう。

参考:日本語では

ちなみに日本語では次のような文章のダイアログになる。

X-Window システムのキーボード設定が、現在お使いの GNOME 
キーボード設定と異なります。どちらの設定を利用しますか?

期待していたのは model"pc105",layout"us" and no option ですが、
次の設定が見つかりました。model"jp106",layout"jp" and no option 
どちらを使いますか?

        [X の設定を使う]        [GNOME の設定を使う]

やはりどちらがXでGNOMEの設定なのか分からない。