【求助】Mac下能禁用Emacs使用系统中文输入法么?

Mac下我也想用Emacs自带的输入法输入中文,不想用系统的,但是在切换窗口的过程中经常会误打开系统中文输入法,想问一下大家有碰到过这个困扰人的问题么?咋解决的?

可以试试看这个软件

1 个赞

我是通过 hammerspoon 这个软件来实现,让指定的 App 在启动时默认使用英文/中文。

这是我的配置:

我用的是 Rime (鼠须管),如果是苹果自带输入法,将 “im.rime.inputmethod.Squirrel.Rime” 改为 “com.apple.inputmethod.SCIM.ITABC” 就可以了。

另外,记得打开系统设置中“自动切换到文稿的输入法”,这样切换应用时就会记住每个应用程序原来使用的输入法。

PS:如果配合 sis 这个包,系统输入法也可以在 Emacs 中很好的使用。

3 个赞

有没有windows下类似的解决方案?

Windows 下我使用 Rime(其实用Windows输入法也可以设置默认为英文),可以设置 Emacs 启动时默认为英文。

weasel.custom.yaml 中加入下面的设置:

patch:
  # 以下软件默认英文模式
  app_options/emacs.exe:
    ascii_mode: true

通过 sis 直接就可以在 Emacs 中绑定按键(比如 f9)切换 Rime(小狼毫)的中英文状态。

在操作系统中,默认就是 Shift 切换输入法。在Emacs 中,通过 AHK 软件,将 Shift 映射为 f9, 也相当于用 Shift 切换中英文状态。
在Rime(小狼毫)的 default.custom.yaml中设置 Shift 切换输入法:

patch:
  ascii_composer: # 设置caps、shift、control等键的作用
    good_old_caps_lock: true # 若为true,caps只切换大小写
    switch_key:
      Shift_L: commit_code
      Shift_R: inline_ascii
      Control_L: noop
      Control_R: noop
      Caps_Lock: clear
      Eisu_toggle: clear

在 AHK 中映射 Shift 为 f9:

Shift::
        if WinActive("ahk_class Emacs")
	   Send {f9}
Return

这样不管是在 Emacs 内,还是 Emacs 外,输入法的体验都统一了。

注意:需要 Emacs 28 以上才支持直接切换系统输入法的中英文状态。

1 个赞

给个思路,系统使用 Rime 输入法,按照楼上的方法设置,可以在 emacs 里自动禁止输入法; 在 emacs 里,使用 GitHub - DogLooksGood/emacs-rime: RIME ㄓ in Emacs 这个依赖,可以做各种配置。

二者采用 Rime 的同步方案来同步词库,除了不能实时同步词库外,算是一种比较好用的方案了。

谢谢!

改了改,加上了eventType == hs.application.watcher.activated 的处理,真香!

1 个赞