是否有一个正式的API,可以从C程序(Carbon / CoreFoundation ..)读取OSX上“系统偏好设置>键盘>修改键...”中的当前设置(希望以向前兼容的方式提供10.11.6)。 。)打算从命令行(无UI)运行?
我见过How can I change modifier keys in "System Preferences > Keyboard > Modifier Keys..."和(引用的)Does anyone know where OSX stores the settings in System Preferences > Keyboard > Modifier Keys?,但都没有提供“官方” API。
在挖掘IOHID标头并使用关键字进行搜索时,我还遇到了Replacement for deprecated NXOpenEventStatus?答案。查看包含HIDKeyboardModifierMappingPairs
的输出似乎很有希望。但是,运行答案示例显示空白的HIDKeyboardModifierMappingPairs
CFArray
。
粘贴代码以方便参考和输出代码段:
#import <Foundation/Foundation.h>
#import <IOKit/hidsystem/IOHIDLib.h>
#import <IOKit/hidsystem/IOHIDParameter.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
io_service_t service = IORegistryEntryFromPath(kIOMasterPortDefault, kIOServicePlane ":/IOResources/IOHIDSystem");
CFDictionaryRef parameters = IORegistryEntryCreateCFProperty(service, CFSTR(kIOHIDParametersKey), kCFAllocatorDefault, kNilOptions);
NSLog(@"%@", parameters);
IOObjectRelease(service);
}
return 0;
}
并输出代码段:
2018-11-10 17:32:38.564 iohidparam_mout[22543:1699981] {
...
HIDKeyboardModifierMappingPairs = (
);
...
}
奖金:当用户通过“系统偏好设置”更新这些设置时,是否有通知服务?