2011-07-05
[Linux][tips] iBusでIMのOn/Offを個別制御
最近UbuntuをクリーンインストールしたらIMのデフォルトがIBusになっていました。
IBusではIMのOn/Offを個別設定できないようなので「変換」キーと「無変換」キーでIMをON/OFFみたいなことができません。
とりあえずUbuntuにはデフォルトでPythonがインストールされているので、Pythonで制御してキーボードショートカットに割り付けることにしました。
import ibus bus = ibus.Bus() ic = ibus.InputContext(bus, bus.current_input_contxt()) if ic.is_enabled(): ic.disable() else: ic.enable()
このスクリプトを ibus-toggle.pyなど適当なファイルにして
$ python ibus-toggle.py
みたいに実行するとIMがトグルされるはずです
ここでハマったのがcurrent_input_contextではなくcurrent_input_contxtを使用するというところです。
これってtypoだろ! と思ったのですが、Changelogをみるともろにtypo修正という項目があるので互換性のためかなにかでこのままなのかもしれません。
それならそれでcurrent_input_contextもちゃんと定義しろよ、という気もしますが、自分がなにか勘違いしている可能性も高いですし、とりあえず動作したのでそこはそれ。
もしも動かなくなっていたらこの辺が怪しいということにして覚え書き。
ということでIMオンとIMオフも作成しました
import ibus
bus = ibus.Bus()
ic = ibus.InputContext(bus, bus.current_input_contxt())
ic.enable()
import ibus
bus = ibus.Bus()
ic = ibus.InputContext(bus, bus.current_input_contxt())
ic.disable()
トラックバック - http://d.hatena.ne.jp/fuenor/20110705/1309866528
リンク元
- 109 http://nanasi.jp/articles/howto/note/vimtech-150tips-book.html
- 24 http://t.co/es7PIQwu
- 22 http://pipes.yahoo.com/pipes/pipe.info?_id=tDfBdGWF3RGl9XNm1L3fcQ
- 18 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cts=1331206138042&ved=0CCgQFjAA&url=http://d.hatena.ne.jp/fuenor/20110705/1309866529&ei=95dYT-nHNvCeiAezofjQDQ&usg=AFQjCNH800o26dQSWZVtD2vcjOlZjOugBg
- 14 http://www.google.co.jp/url?sa=t&rct=j&q=ibus vim&source=web&cd=2&ved=0CCIQFjAB&url=http://d.hatena.ne.jp/fuenor/20110705/1309866529&ei=pwKhTs-dGMmviQeI8eW8Bg&usg=AFQjCNH800o26dQSWZVtD2vcjOlZjOugBg
- 13 http://sites.google.com/site/fudist/Home/vim-nihongo-ban/vim-japanese/ime-control
- 9 http://d.hatena.ne.jp/koyudoon/20111210/1323460224
- 8 http://b.hatena.ne.jp/entry/d.hatena.ne.jp/fuenor/20110705/1309866529
- 8 http://htn.to/zzvBF4
- 8 http://www.google.co.jp/url?sa=t&rct=j&q=ibus vi協調モード&source=web&cd=2&ved=0CCUQFjAB&url=http://d.hatena.ne.jp/fuenor/20110705/1309866529&ei=-svFTqfRNoL3mAWi7cScCw&usg=AFQjCNH800o26dQSWZVtD2vcjOlZjOugBg
IME無効にするとこ、InsertEnterじゃなくてInsertLeaveですよね。
ありがとうございます。