ibus-modeでIBusのON/OFFを任意のキーに設定する方法

IBusのトグルを任意のキーに設定する

EmacsではC-SPCはマークをセットするのに使いたい人が多いと思います。READMEにもありますが、~/.emacs

;; Use C-SPC for Set Mark command
(ibus-define-common-key ?\C-\s nil)

と書けばOKです。ただしこのままでは、全角/半角キーがないキーボードではIBusが使えなくなってしまいます。
ibus.elにはIBusをトグルするためのコマンドibus-toggleが用意されていますので、これを使って例えば

;; Toggle input status by alt + henkan
(global-set-key [M-henkan] 'ibus-toggle)

とすると、alt+変換キーでIBusのON/OFFができるようになります。
追記(2010/06/07): ibus-anthy 1.3では、上記の設定だけではIBusにキーイベントを横取りされてしまうため、IBusのOFFが出来ません。alt+変換をプリエディット中にだけIBusに渡すように、次の設定を追加する必要があります。

;; Enable alt + henkan key only for preediting
(ibus-define-common-key 'A-henkan nil)
(ibus-define-preedit-key 'A-henkan t)

IBusのON/OFFを別々のキーで行う

ibus.elにはIBusのONまたはOFFのためのコマンドibus-enableとibus-disableがそれぞれ用意されています。例えば、変換キーでON、無変換キーでOFFにしたい場合は

;; Use henkan key to enable IBus
(global-set-key [henkan] 'ibus-enable)
;; Use muhenkan key to disable IBus
(global-set-key [muhenkan] 'ibus-disable)
;; Enable muhenkan key only for preediting
(ibus-define-common-key 'muhenkan nil)
(ibus-define-preedit-key 'muhenkan t)

とすればよいです。最後の2行は、プリエディット中にだけ無変換キーのイベントをIBus側に渡すようにするためのおまじないです。

エンジンを指定してIBusをONにする

ibus-enableは、引数にエンジン名の文字列を与えることによって、任意のエンジンでIBusをONにできます。例えば

;; Start IBus with pinyin engine
(global-set-key [(super henkan)] (lambda () (interactive) (ibus-enable "pinyin")))

とすると、super+変換キーでピンイン入力の状態になります。エンジン名は、モードラインに表示されている、[]の中の文字列です。例えば、ピンインの場合はモードラインで"IBus[pinyin]"となっているので、エンジン名は"pinyin"であるとわかります。