API OSX для чтения "Системные настройки> Клавиатура> Клавиши-модификаторы" - PullRequest
0 голосов
/ 11 ноября 2018

Существует ли официальный API для чтения текущих настроек в «Системных настройках> Клавиатура> Клавиши-модификаторы ...» в OSX (10.11.6, надеюсь, в совместимом режиме) из программы на C (Carbon / CoreFoundation .. .) который предназначен для запуска из командной строки (без интерфейса)?

Я видел Как я могу изменить клавиши-модификаторы в «Системные настройки> Клавиатура> Клавиши-модификаторы ...» и (ссылка) Кто-нибудь знает, где OSX хранит настройки в Системных настройках> Клавиатура> Клавиши-модификаторы? , но ни один не предоставляет "официальный" API.

Я также сталкивался с Замена устаревшего ответа NXOpenEventStatus? при копании в заголовках IOHID и использовании ключевых слов для поиска. Это выглядело многообещающе, глядя на вывод, который содержал 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 =     (
    );
    ...
}

Бонус: есть ли служба уведомлений, когда пользователь обновляет эти настройки через Системные настройки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...