ATOK Xを使うにあたって、入力メソッド(以下、IM)の切り替えをやりやすくするよう、/etc/X11/xinit/xinit.d/xinput
を書き換えました。でも、sdrコマンドとやってることはほぼ同じはず。。。(汗)
RedHat 7.xでIMを起動しているxinputスクリプトは、新しいIMを追加しようと思うとスクリプトを書き換えないといけない上、切り替えはあまり自由にできません。なので、IMごとのスクリプトを作成し、そのうちユーザの選んだ一つをxinputスクリプトから呼び出すようにしました。IMごとのスクリプトは/etc/X11/xinit/xim.d/
ディレクトリを作成して、そこに格納します。
[naohito@libra xinit]$ ls -l xim.d/ 合計 36 -rw-r--r-- 1 root root 479 7月 7 12:02 Ami -rw-r--r-- 1 root root 32 7月 7 12:02 Chinput -rw-r--r-- 1 root root 78 7月 7 12:03 atokx -rw-r--r-- 1 root root 73 7月 7 12:03 hanIM -rw-r--r-- 1 root root 178 7月 7 12:01 kinput2 -rw-r--r-- 1 root root 46 7月 7 12:04 skkinput -rw-r--r-- 1 root root 53 7月 7 12:04 xcin -rw-r--r-- 1 root root 87 7月 7 12:05 xcin-zh_CN.GB2312 -rw-r--r-- 1 root root 31 7月 7 12:05 xwnmo [naohito@libra xinit]$
内容は、たとえばkinput2は、
XIM=kinput2 XIM_PROGRAM=kinput2 if [ X"`ldd /usr/X11R6/bin/kinput2 | grep libcanna`" = X ] ; then XIM_ARGS="-wnnenvrc /etc/FreeWnn/ja/wnnenvrc" else XIM_ARGS="-canna" fi
要はオリジナルのxinputスクリプトをバラしただけ。新しいIMを追加するときは、そのIM用のスクリプトを新規につくればよし。
ユーザは自分の使用したいIM用スクリプトの名前を~/.ximファイルに記述します。
[naohito@libra naohito]$ cat .xim atokx [naohito@libra naohito]$
とりあえずcannaとATOK Xを切り替えてためしてみたら、うまくできたようです。
ほんとはsdrを移植しようかと思ったけれども、RedHatのXの起動プロセスになじむか確かめている間に一から書き換えてしまいました。~/.ximをエディタで記述するのでよければこれでいいはず。
ていうか、なぜこういう仕組みにしないのか不思議だ。