変換/無変換キーで mozc.el を on/off する

emacs + mozc.el の環境で

  • [変換]で日本語入力をon
  • [無変換]でoff
  • [全角半角]でon/offの切替
  • C-\ でon/offの切替 (デフォルトの挙動)

と設定するには、~/.emacs 等に以下の設定を書きます。

; mozcの設定
(require 'mozc)
(set-language-environment "Japanese")
(setq default-input-method "japanese-mozc")

; 全角半角キーで on/off
(global-set-key [zenkaku-hankaku] 'toggle-input-method)

; 変換キーでon
(global-set-key [henkan]
		(lambda () (interactive)
		  (when (null current-input-method) (toggle-input-method))))
; 無変換キーでon
(global-set-key [muhenkan]
		(lambda () (interactive)
		  (inactivate-input-method)))
; 全角半角キーと無変換キーのキーイベントを横取りする
(defadvice mozc-handle-event (around intercept-keys (event))
  "Intercept keys muhenkan and zenkaku-hankaku, before passing keys
to mozc-server (which the function mozc-handle-event does), to
properly disable mozc-mode."
  (if (member event (list 'zenkaku-hankaku 'muhenkan))
      (progn
	(mozc-clean-up-session)
	(toggle-input-method))
    (progn ;(message "%s" event) ;debug
      ad-do-it)))
(ad-activate 'mozc-handle-event)

以下のURLを参考にしました。感謝!