Emacs Mac Port Programmatically 切换输入法

之前没注意到 Emacs Mac Port 文档:(info "(emacs) Mac Functions"),其中介绍了很多有用和有趣的信息,比如:环境变量、默认语言、按键、字体、颜色、执行脚本、获得偏好、切屏动画、输入法、标签栏。

一些关于输入法的 API:

  • (mac-input-source-list) 获得所有的输入法;
  • (mac-input-source) 获得选中的输入法;
  • (mac-select-input-source "com.apple.keylayout.US") 选中特定输入法(以「美国」为例)。

我在 Mac 键盘设置中设置了 C-SPC 切换中英文,下面是对应的 Emacs Lisp 实现:

(defun chunyang-switch-input-source ()
  "在「简体拼音」和「美国」之间切换."
  (interactive)
  (let ((US "com.apple.keylayout.US")
        (CN "com.apple.inputmethod.SCIM.ITABC"))
    (pcase (mac-input-source)
      ((pred (string= US)) (mac-select-input-source CN))
      ((pred (string= CN)) (mac-select-input-source US)))))

如果你想在 C-x 之后或者进入 Minibuffer 之后自动切换到英文输入法,mac-auto-ascii-mode 已经实现了,只是它不会恢复之前的输入法。

4 个赞