※Ubuntu 9.04 へアップグレードする前にこの問題を回避する方法はこちら
Ubuntu 8.10 から 9.10 へ何となくアップグレード。
再起動したものの、異常に不安定な状態。軽くググったときはとくにトラブルはなさ気げだったからアップグレードしたのに・・・。
症状としては、
firefox がうまく起動しない(起動途中に終了してしまう)、
gnome-terminal 上で素早くキーを打つと gnome-terminal が終了してしまう。
他の gedit 等でも同じキーを素早く打つと強制終了してしまう。
(ゆっくり、キーとキーの感覚を2,3秒開けて打つと何とか異常終了しなかった)
要はキーボードで文字を打とうとするとプログラムが終了してしまうというもの。
怪しそうな ATOK (iiim*) 関係のプロセスを kill したらキーを素早く打っても異常終了しなくなったので原因は ATOK X3 for Linux と断定。
ググってみると同じ様な症状の方を発見して同じように ATOK X3 を再インストールしてみたら無事解決。
やってやれないことはない。:Ubuntu 9.04 beta on Aspire One
実際にした手順:(ついでにインストール時にした設定などもメモ)
まず、再起動して Grub の起動メニューから recovery mode を選んで起動。
root のシェルを起動。
まず、インストールされている ATOK に関係のありそうなパッケージを見つける。
# aptitude search iiim p iiimf - Meta package for IIIMF p iiimf-client-el - IIIMF frontend for Emacs p iiimf-client-el-bin - Utility of IIIMF frontend for Emacs p iiimf-client-gtk - IIIM GTK+ 2.x Input Method Module Client i iiimf-client-lib - Internet/Intranet Input Method Client Framework l p iiimf-client-xbe - IIIMF XIM BackEnd module p iiimf-csconv-modules - Codeset Conversion modules for IIIMF components p iiimf-dev - Meta package for the development of IIIMF i iiimf-gtk - GTK Input Method Context Module for IIIMP v iiimf-htt-csconv - v iiimf-htt-le-canna - v iiimf-htt-le-indic - v iiimf-htt-server - v iiimf-htt-xbe - p iiimf-im-switcher - Input Method switcher for IIIMF p iiimf-le-canna - Canna language engine for iiimf-server p iiimf-le-hangul - Korean language engine for iiimf-server p iiimf-le-sun-hong-kong-chinese - Hong Kong Chinese language engine for iiimf-serve p iiimf-le-sun-simplified-chinese - Simplified Chinese language engine for iiimf-serv p iiimf-le-sun-thai - Thai language engine for iiimf-server p iiimf-le-sun-traditional-chinese - Traditional Chinese language engine for iiimf-ser p iiimf-le-unit - UNIT language engine for iiimf-server i iiimf-properties - IIIMF Input Method Preference Editor i iiimf-protocol-lib - Internet/Intranet Input Method Protocol library i iiimf-server - IIIMF input method server i iiimf-x - IIIMF XIM BackEnd module v iiimgcf - p libiiimcf-dev - IIIM Client Framework library development files p libiiimcf3 - Internet/Intranet Input Method Client Framework l p libiiimp-dev - IIIM Protocol library development files p libiiimp1 - Internet/Intranet Input Method Protocol library
関係のありそうなパッケージを削除。
# aptitude remove iiimf-client-lib iiimf-gtk iiimf-properties iiimf-protocol-lib iiimf-server iiimf-x
ATOK を再インストール。
# tar xvfz atokx3.tar.gz # cd ATOKX3 # export LANG=C # touch /etc/gtk-2.0/gtk.immodules # bash ./setupatok_deb.sh # /opt/atokx3/sample/setting_debian4.sh Using '/etc/X11/xinit/xinput.d/iiimf' to provide 'xinput-ja_JP'. # dpkg -i ./bin/deb/IIIMF/iiimf-properties_trunk_r3104-js3_i386.deb # shutdown -r now
なんの設定もしていなければこれでOK。
キーを素早く打ち込んでもプログラムが異常終了することはなくなった。
あとは、今までした設定をもう一度し直す。
まず、Ctrl+Space を使ったときに ATOK が起動してしまうクソ仕様を何とかする。
Emacs 使いとしては非常につらい。Linux では Emacs ユーザーが Windows に比べて多いはずなのにこの仕様はなんなんだろう・・・。
こちら によると、どんな設定をしても Ctrl+Space か Shift+Space のどちらかが必ず有効になってしまうとか。
Shift+Space は、文章を少し早めに打ち込んでいるときに Shift を話す前に Space を押してしまう癖がある自分としては我慢できないので両方とも無効にする。
先ほどどの こちら を参考に、強制的に Ctrl+Space と Shift+Space を無効にする。
/usr/bin/iiimd と /usr/lib/iiim/iiim-xbe をバイナリエディタで編集する方法。
あらかじめバイナリエディタの ghex2 を sudo aptitude install ghex2 でインストールしておく。
/usr/bin/iiimd をバイナリエディタで編集。
% cd /usr/bin/ % sudo cp iiimd iiimd.org % sudo cp iiimd iiimd.mod % sudo ghex2 iiimd.mod &
ghex2 で /usr/bin/iiimd.mod を開いて以下の2カ所を見つける
<Ctrl>space,Zenkaku_Hankaku.Conversion <Shift>space,Zenkaku_Hankaku.Language Engine
それを以下のように変更して保存する(以下の . は 0×00)
Zenkaku_Hankaku .Conversion Zenkaku_Hankaku .Language Engine
削った <Ctrl>space, などの分はスペースで埋めて元々のファイルの中身がずれないように注意する。
もともと
"<Ctrl>space,Zenkaku_Hankaku"
だったのを↓の要にするという意味。
"Zenkaku_Hankaku "
そして編集したバイナリファイル iiimd.mod で iiimd を置き換え。
% sudo cp iiimd.mod iiimd
/usr/lib/iiim/iiim-xbe もバイナリエディタで編集。
% cd /usr/lib/ % sudo cp iiim-xbe iiim-xbe.org % sudo cp iiim-xbe iiim-xbe.mod % sudo ghex2 iiimd.mod &
ghex2 で /usr/bin/iiimd を開いて以下の2カ所を見つける
space Zenkaku_Hankaku.iiimx space Zenkaku_Hankaku.>.
同じく以下のように修正
Zenkaku_Hankaku .iiimx Zenkaku_Hankaku .>.
変更した iiim-xbe.mod をプログラム本体と置き換える
% sudo cp iiim-xbe.mod iiim-xbe
あとは、ATOK の設定 ~/.gconf/desktop/input_methods/%gconf.xml を編集する。
trigger_keys で、ATOK を起動するときのキーを設定。↓は Ctrl+\ で ATOK を起動したい場合の例。
<entry name="trigger_keys" mtime="1235840808" type="string">
<stringvalue>Henkan_Mode,Alt+Henkan_Mode,Zenkaku_Hankaku,Alt+Zenkaku_Hankaku,Ctrl+backslash</stringvalue>
</entry>
たしか、status の箇所を False にすることで、ウィンドウの下に出るじゃまな [ATOK] とかのステータスを消すことができる(はず)。
<entry name="status" mtime="1236010723" type="string">
<stringvalue>False</stringvalue>
</entry>
あと、何度か ATOK の起動を繰り返していると、languages_use と languages_save の stringvalue がどんどん増えて、 ~/.gconf/desktop/input_methods/%gconf.xml が肥大化してしまう。
肥大化しすぎると、先ほどした %gconf.xml 内の設定が読み込まれなくなるので対策する。
読み込まれなくなるとデフォルトの設定 /etc/iiim/client.xml の内容が反映される。
こちらのファイルも編集しておけばいいのだけど、ローカルの設定の意味が無くなってしまうので対策をする。
まず、すでに languages_use と languages_save の内部の stringvalue がたくさんある場合はエディタで開いて1つを残してすべて削除する。
次に、~/.gconf/desktop/input_methods/%gconf.xml の書き込み権限を奪う。
% chmod -w ~/.gconf/desktop/input_methods/%gconf.xml
これだけだと、なぜか肥大化し続けるので、ディレクトリの書き込み権限も奪う。
% chmod -w ~/.gconf/desktop/input_methods
これで、一通りの設定は完了。
たぶん、新規インストールの時もこんな感じだったと思う。
ATOK X3 for Linux を購入した当初、今設定に行き着くまでにまるまる数日間費やしたのを思い出した・・・。
デフォルトでまともに使えないとか、正直どうかと思う。 > ATOK X3 for Linux