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这种窗口的事件,如果能监听到这种事件的话,针对他们的输入法切换控制也就能做了。