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

@goumao 这个新的mode 搞的怎么样了?

我发现在Lwin前面加个* 就表示任何和Lwin的组合键都触发AHK的语句,这样就解决了按s-J的时Win和shift的顺序问题。

*Lwin::
IfWinActive,ahk_class Emacs
{
    Send ^x
    sleep 100
    Send % "@s"
    KeyWait, Lwin
}
else
{
    Send {Lwin down}
    KeyWait, Lwin
    send {Lwin up}
}

现在剩下的问题是:

  1. s-J 这样的组合没法连续触发。(这种情况,其实用的不多,可以克服 :smiley:
  2. 按太快会直接输入@s 。
    这个问题我发现是因为上面的100毫秒延迟造成的,如果去掉这个延迟,在英文状态下就可以正常工作了。 不过如果是中文状态,因为必须留点时间给输入法切换为英文,这个看来是避免不了了。(正常手速也不会快过100ms :grin:

@aqua0210 这个进步很大!

=========更新==========

使用外置工具切换输入法的,
请参照readme修改do-set的配置

不改也行,
但改了后,输入法切换从同步改成异步。
效果已经和native api切换没有区别了。

默认的macism,
因为要绕过MacOS的bug,切换是最慢的
采用异步方式后(最新git版已包含)
体验提升非非非非非非非非常之大。

你说的外置切换工具是指macism 和 im-select 这种?我看了read me 但还是不怎么明白怎么设置,能否举例下macism怎么设置改为异步吗?

macism不用改啊。
更新最新的代码就行了。

@goumao Windows 下最新版本正常使用,切换输入法速度很快。
Mac 下更新最新版后,没办法切换输入法了,切成中文后瞬间就自动切回英文。
回滚到5f0631a94b6bc23d8af5def5a5a1bf62ff70b60d 这个版本就正常。

是那个switch吧?
我这里最开始出现过,后来就没有了。
现在的方式,
set的时候直接启动进程,不启动shell
应该是sleep太短。

是的,用的smart-input-source-switch 功能切换,直接M-x启动也是一样

@aqua0210

(setq-default smart-input-source-do-set
      (lambda(source) (start-process "set-input-source" nil "macism" source "5000")))

5ms太小,改后面的5000那个值,测一下什么时候可以。

启动switch的时候报错了

Debugger entered--Lisp error: (wrong-type-argument stringp 5000)

换成 "5000"

我试过换成 “5000” 然后系统就疯狂提示我更改权限。还要设置什么权限?

我试试。
不应该啊~~~

应该是辅助功能权限吧?
第一次运行的时候,就要求过了。

因为模拟的快捷键,
而快捷键是需要权限的。

对的,提示设置辅助功能权限,但是这个之前都是设置过的。

我试了下,我这边不需要重新授权啊。。。

其实可以把sleep设大,反正都异步了,sleep时间长不影响体验。

brew upgrade macism

我更新了, 把sleep从5ms升到20ms
我觉得可能还是不够

brew upgrade macism 更新到1.2.2版本还是不行

@aqua0210

那你用我刚才的方法增加sleep时间呢?
看下到底需要多久。
那个授权,
是不断弹出,授权一次没有用么?

我有个想法:

  1. macism默认还是5ms
  2. 本package里面从启动参数设一个高很多的时间。

这样,vim或者其它用户,用macism也不会性能下降很大
本package是异步的,也不会受到影响。

没法授权的,因为已经授权了。一直无限弹出提示打开设置授权的窗口

更新:

刚才成功设置到了 8000 可以切换了。但是重启软件后又无限弹这个界面。

我这边感觉原来的版本没什么延迟啊!你那边延迟很明显吗?