(重新设计)中英文混打:OS输入法管理包 smart-input-source

经测试,目前Windows11自带的微软拼音输入法只支持切换到英文模式,不支持切换回来,无论是w32还是im-select方案均如此。

兼容性设置里面勾选上“使用以前版本的微软拼音输入法”(Win10版)之后正常。

按照github配置,很好用,有一个小问题:从emacs换到别的程序时,输入法无法恢复。 想要一个需求,让sis记住切换到emacs之前的输入法状态,离开emacs时恢复。不知是否已实现。

可以用其他额外的软件来实现,或者用模式编辑,切换到其他 app 就到 normal mode,normal mode 下统一都是英文。

我希望的是离开emacs,比如进到微信、QQ等,恢复到原本的输入法,这些不需要normal。

macOS系统自带这个功能,
如果你是用windows的话,我就不清楚了。

sis里面也可以实现:

  • 切入emacs的时候,记下当前输入法。
  • 切出emacs的时候,恢复输入法。

我印象中,已经实现了这个功能啊。
不过也不确定,得翻一下代码。

怎么配置生效呢?

这些在 Mac 上有很多方法,自带的那个不太好用,我记得有个软件是可以实现这种记住当前的输入法的,而 hammerspoon 以及 Rime 本身是单独设置软件的默认输入法。

以后再有讨论,请到下面这个帖子去:

在mac系统上我可以使用shift按键切换英文输入法和中文输入法。但是在emac中使用这个包的话,在中文环境中按shift可以切换成英文输入,但是在英文环境中按shift就不能切换成中文输入了。这个问题大家有遇到过吗?我的emacs版本是29,是mac 2021 m1的。

emacs 不支持 shift 切换输入法

你需要用键盘映射软件中转下就可以实现在 Emacs 中通过 Shift 来切换输入法。 我在 macOS 用的是 karabiner 实现。

大概是这样做:

Emacs 中单按 Shift 时,用 Karabiner 等软件映射为 F9, F9 在 Emacs 中 邦定为 sis-switch 就可以了。

你需要装这个工具:

这个包使用感觉还有个问题,就是:emacs和外部软件输入法会相互干扰。比如我现在在emacs中使用的是英文,然后切换到外部浏览器打中文字,最后在切换到emacs中,发现当前emacs的输入法是中文了,而不是原来的英文了。这个很头疼啊。emacs输入的中英文最好别和外部的输入法的中英文相互干扰。

如果你使用模式编辑的话,可以设置 normal mode 下始终英文,Emacs 失去焦点后回到 normal mode,然后再根据不同的 mode 设置进入 insert mode 是中文还是英文。这样就不会互相干扰了。

这个方法感觉很好。在Emacs中会一瞬间的看到光标从蓝色(sis指中文输入法环境)变成其他颜色。感觉使用体验还可以,并没有感到有延迟的感觉。

在使用体验上感觉还是有点不是太好。这个问题发生在中文输入然后快速进入normal模式最后快速移动。比如:我当前在输入中文,然后快速按下ESC键,让编辑模式变成Normal,最后在快速移动,比如连续按j或k等。此时就会发现这个中文输入法框还滞留在屏幕上面,光标移动也发生混乱,此时的输入法好像还是中文模式,导致光标移动还是有问题。不知道大家有没有遇到这个问题。

我用的 meow,自己写了个 hook 在回到 normal mode 下变为英文,没有这样的问题。

有对应配置参考吗?