OSX API要阅读“系统偏好设置>键盘>修改键”

时间:2018-11-11 01:48:56

标签: c objective-c macos

是否有一个正式的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 =     (
    );
    ...
}

奖金:当用户通过“系统偏好设置”更新这些设置时,是否有通知服务?

0 个答案:

没有答案