在我继续之前,我想在这篇文章的开头说这可能是最骇人听闻、彻头彻尾的邪恶、令人讨厌的话题,所以我不希望答案包含“合法”代码。
在尝试访问 OS X Mountain Lion 用于包含激活听写的热键组合的内部首选项文件时,我遇到了一些制作精美的有符号整数,其中包含在 System Preferences.app 中定义的键码。问题是,我能想到的唯一方法CGEvent
是通过并基本上解析给定密钥代码的位掩码,这可能是徒劳无益且令人讨厌的努力。并且因为CGEvent
方便地对内部结构 ( __CGEvent
) 进行类型定义,所以无法看到它的内部组织(换句话说,我无法malloc()
摆脱这种情况)。到目前为止,我所获得的内容显示在下面的代码中:
/***************************************UNSAFE*****************************************************/
//1048584, -1048585 - Two Left CMD presses; 1048576, -1048577 - Two CMD presses; 8388608, -8388609 - Two Fn presses; 1048592, -1048593 - Two Right CMD presses
- (void)forceDictation {
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject]stringByAppendingPathComponent:@"Preferences/com.apple.symbolichotkeys.plist"];
NSDictionary *dictationPrefs = [NSDictionary dictionaryWithContentsOfFile:path];
NSDictionary *dictationDict = dictationPrefs[@"AppleSymbolicHotKeys"];
NSDictionary *keyvalueDict = dictationDict[@"164"];
NSDictionary *valueDict = keyvalueDict[@"value"];
NSArray *parameters = valueDict[@"parameters"];
NSInteger firstCode = [[parameters objectAtIndex:0]longLongValue];
NSInteger secondCode = [[parameters objectAtIndex:1]longLongValue];
}
任何熟悉 HIToolbox 中的事件位掩码的人都可以看到这些关键代码表示会有多么令人难以置信的帮助,只要它们可以轻松地转换为事件然后发射为蓝色。