桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

犯人が分かる

でも原因は不明orz
CygwinのXサーバを使ったXDMCP経由接続でLinuxに接続している場合に、InputMethodのキー割当を「半角/全角」キーに割当て、「半角/全角」キーを押下すると言語バーが点滅状態になる問題に結構悩んでいたんだけど。とりあえず誰が悪いのかは突き止めた。
犯人はCygwinで、CygwinからstartxでXを起動して「半角/全角」キーを押下したのと同じ現象が起こっている模様。
Cygwinの場合は、下記の設定を行えば解決する。

[@IT] 真ゼロ円でできるXサーバ
Windows 2000で動かすXFree86[設定・運用編]
http://www.atmarkit.co.jp/flinux/special/cygwin/cygwin02a.html

xevを使ってキーコードの割当状態を見てみてここまで分かったが、現状XDMCP経由で接続したLinuxの場合がなかなか解決しない。とりあえず、XWin.exeの引数にxmodmapを指定する方法は分かった。

    • keymapファイルの作成
$ xkbcomp -xkm -m "jp106" /usr/X11R6/lib/X11/xkb/keymap/xfree86 /tmp/xfree86\(jp106\).xkm
    • keymapを指定してXWin.exeを実行(xkb_keycodesの値で指定する)
$ XWin.exe -xkbmap "xfree86(jp106)"