7月份的时候,我在知乎上,mac相关的话题下推荐了自己的小工具:GhostSKB。
带来下载量的同时,也暴露出以前没有充分测试的bug:
前两个bug是由于列表混乱导致的,这个很容易就解决了。
后两个,我用了好久去官方查文档,自己去试,然后设置延迟时间什么的。最后的解决就两行代码,一个是设置一定的延迟时间,另一个是在切换到某个输入法之前要先enable一下。
if ([inputSourceId isEqualToString:targetInputId]) { OSStatus err = TISSelectInputSource(inputSource); NSNumber* pIsSelectCapable = (__bridge NSNumber*)(TISGetInputSourceProperty(inputSource, kTISPropertyInputSourceIsSelectCapable)); BOOL canSelect = [pIsSelectCapable boolValue]; NSNumber *pIsEnableCapable= (__bridge NSNumber *)(TISGetInputSourceProperty(inputSource, kTISPropertyInputSourceIsEnableCapable)); BOOL canEnable = [pIsEnableCapable boolValue]; if (canEnable) { TISEnableInputSource(inputSource); } if (canSelect) { TISSelectInputSource(inputSource); } }
目前,我还没查到如何监听类似spotlight这种窗口的事件,如果能监听到这种事件的话,针对他们的输入法切换控制也就能做了。