2007年10月31日の日記の2番目の記事へのコメント
■Xorg-7.3 XKB問題
Xを上げると「(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap」という警告が出る問題についても追ってみました.探してたら遭遇したこちらのgentooのドキュメントの「XKBの変更を追跡する」という項目を真似してみたところ・・・
% setxkbmap -model thinkpad -layout us -option "ctrl:swapcaps" Couldn't find rules file (xorg)
(´・ω・`)
一体 setxkbmap は何を見つけられないのかと,straceしてやったところ,以下のような出力が.
9170 open("./rules/xorg.lst", O_RDONLY) = -1 ENOENT (No such file or directory) 9170 open("/usr/local/share/X11/xkb/rules/xorg-C.lst", O_RDONLY) = -1 ENOENT (N o such file or directory) 9170 open("/usr/local/share/X11/xkb/rules/xorg.lst", O_RDONLY) = -1 ENOENT (No such file or directory) 9170 write(2, "Couldn\'t find rules file (xorg) "..., 33) = 33
「/usr/local/share/X11/xkb/rules/xorg.lst」 がないのかぁ.base.lst ならあるのに.この辺,本来誰が供給すべきファイルなんだろう・・・とPS3のFedora7で rpm -qf で確認してみたところ,xorg.lst も xkeyboard-config でインストールされるファイルらしく,しかも base.lst のシンボリックリンクになってました.
というわけで base.lst へのリンクを作ってやったところ・・・あれ変わらんし.再度straceをしてみたところ,今度は「/usr/local/share/X11/xkb/rules/xorg」がないとか.はぁ? そして Fedora7 を見るとこちらは 「base」 へのリンクになってました.なんだこりゃ.ついでに 「xorg.xml」 とかいうのもあったのでこれも真似して「base.xml」のリンクに.ようやく setxkbmap がエラーを返さなくなりました.そしてXを上げ直してみましたが,例のメッセージは出なくなってました.めでたい.
で,一体誰が「xorg」なんてファイル名を指定しているのか気になったので,こちらも追ってみました.setxkbmapのソースを読むと,ファイルを直接読み出しているのは libxkbfile 内の関数みたいです.で,引数を追っていくと,再び setxkbmap のソースに戻りまして,DFLT_XKB_RULES_FILE というのが出てきました.これが xorg になっているっぽい.さらに追っていくと,上の方に「#define DFLT_XKB_RULES_FILE __XKBDEFRULES__」とあって,setxkbmapのMakefile.amに以下のようなベタな記述が・・・!
AM_CFLAGS = $(SETXKBMAP_CFLAGS) \ -D__XKBDEFRULES__='"xorg"' \ -DDFLT_XKB_CONFIG_ROOT=\"$(XKBCONFIGROOT)\"
追跡終了.設定ファイルの問題じゃないのね.
2007年10月31日の日記の2番目の記事へのコメント
[コメントを書く]