MacのEmacsでemacs-mozcをかなキーでON-OFFさせる裏技
Mac の日本語入力には google 日本語入力を使い、Emacs のときだけ mozc を使っています。
Mac の google 日本語入力は、かなキーで ON/OFF するので、mozc の ON/OFF には、別のキーを割り当てる必要がありますが、
出来ることなら Mac でも Emacs でも、かなキーで IM の ON/OFF できたらと試行錯誤した結果、あんがい簡単に実現できたのでご紹介します。
mozc_emacs_helper をインストールする
- google 日本語入力と辞書連携して mozc_emacs_helper を導入できるので辞書管理なども一元化できて便利です。
- 詳しい導入 Tips は、別ページに書いています。
- mozc_emacs_helper on macOS Sierra
google 日本語入力と emacs-mozc とを使い分ける
- Emacs で mozc を使っている時には、google 日本語入力を OFF にしたいですね。
- 下記サイトの記事を参考に init.el に以下のような設定を加ています。
- mozc-emacs-helper と OSX の IM を連動させる (toggle-input-method, 英数/かなキー)
;; 英数キーをエミュレートする
;; https://www.inabamasaki.com/archives/1898
(when (eq system-type 'darwin)
(defun my-eisuu-key ()
"Emulating alphanumeric keys"
(interactive)
(call-process "osascript" nil t nil "-e" "tell application \"System Events\" to key code 102"))
;; Mozc が起動されたら英数にする
(add-hook 'mozc-mode-hook 'my-eisuu-key)
;; フレームがアクティブになった時英数にする
(add-hook 'focus-in-hook 'my-eisuu-key))
何をしているかというと、下記条件のときに強制的に Mac を英数入力にしているのです。
- Emacs の mozc が起動されたら Mac の入力ソースを英数にする
- 他のフレームから Emacs フレームへ移動したら Mac の入力ソースを英数にする
※でもちょっと問題が
- 上記対応をしていてもあとからうっかり、かなキーを押すと google 日本語入力が起動してしまいます。
- Emacs がアクティブなときは、Mac の日本語入力モードを OFF にしたいのですがコマンドがよくわからいのでお手上げでした。
⌘英かな.app で、かなキーの振る舞いをカスタマイズする
⌘英かな.app で、Emacs のときだけ、かなキーを強制的に他のキーバインドに変更してしまいます。
- かな → super+j (super+j に
toggle-input-method
を割り当てている) - Command_L → control+g (Emacs で control+g をよく使うので便利)
- Command_R → super+m (mozc-temp の mozc-temp-convert を設定している)
かなキーを super+j に変更することで Emacs での mozc の ON/OFF が可能になり、かつ google 日本語入力の ON/OFF ができなくなります。
※ここからが裏技です
- ⌘英かな.appは、除外アプリを設定できます。
- google 日本語入力を使いたいアプリを全て除外アプリに登録します。
- つまり、かなキーをカスタマイズして使うのは、Emacs だけという設定になるわけです。
- 残念ながら、この裏技が使えるのは、かなキーのある JIS キーボードだけ
- US キーボードの場合は、別のアルゴリズムを考える必要があります。
- かなり強引な手法ですが、快適さにはかえられません。
【参考】
私のEmacsのmozc設定を貼っておきます。
;; Bild mozc_emacs_helper on macos sierra
;; https://gist.github.com/ynkjm/7d6f22bb4338f84b1b287bf9abe79001
;; ===============================================================
(setq default-input-method "japanese-mozc")
(custom-set-variables '(mozc-leim-title " あ"))
(use-package mozc-cursor-color)
;; keyremap "s-j" to "kana" by eisuu.app for mac
(when (eq system-type 'darwin)
(bind-key "s-j" 'toggle-input-method))
;; For linux
(when (eq system-type 'gnu/linux)
(bind-key* "<hiragana-katakana>" 'toggle-input-method))
;; Turn to key code 102 when forcus in to emacs
(when (eq system-type 'darwin)
(defun my-eisuu-key ()
(interactive)
(call-process "osascript" nil t nil "-e" "tell application \"System Events\" to key code 102"))
(add-hook 'focus-in-hook 'my-eisuu-key))
;; Important settings
(defadvice toggle-input-method (around toggle-input-method-around activate)
"Input method function of key-chord.el to not be set to nil."
(let ((input-method-function-save input-method-function))
ad-do-it
(setq input-method-function input-method-function-save)))
;; mozc-temp
;; =================================================
;; Keyremap "s-m" to "command_r" by eisuu.app for mac
(when (eq system-type 'darwin)
(bind-key "s-m" 'mozc-temp-convert))
;; For linux
(when (eq system-type 'gnu/linux)
(bind-key* "<henkan>" 'mozc-temp-convert))
Author And Source
この問題について(MacのEmacsでemacs-mozcをかなキーでON-OFFさせる裏技), 我々は、より多くの情報をここで見つけました https://qiita.com/minoruGH/items/032f1705bd39c77427e4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .