解决GhostSKB的一些bug

最近的一些更新

7月份的时候,我在知乎上,mac相关的话题下推荐了自己的小工具:GhostSKB。

带来下载量的同时,也暴露出以前没有充分测试的bug:

以下是暴露出来的bug

  1. 列表乱序
  2. 设置不生效,设置混淆
  3. 偶尔会切换失败
  4. 对word 和chrome支持不太好

解决

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