Доступ к состоянию батареи мыши и клавиатуры через API - PullRequest
2 голосов
/ 23 августа 2010

Я хочу написать небольшое приложение для Mac, и мне нужен процент заряда батареи мыши и клавиатуры, подключенных через Bluetooth. Кто-нибудь может сказать мне, если есть какой-то API для этого?

1 Ответ

1 голос
/ 27 февраля 2012

Я знаю, что это немного поздно, прошло более 18 месяцев после того, как вы задали вопрос, но вот немного кода, который я использую в Battery Status:

mach_port_t     masterPort;
kern_return_t   kr;
io_iterator_t   ite;
io_object_t     obj = 0;
CFMutableDictionaryRef  properties;

kr = IOMasterPort(bootstrap_port, &masterPort);
if (kr != KERN_SUCCESS)
    printf("IOMasterPort() failed: %x\n", kr);

kr = IORegistryCreateIterator(masterPort,
                              kIOServicePlane,
                              true,
                              &ite);

while ((obj = IOIteratorNext(ite)))
{
    kr = IORegistryEntryCreateCFProperties(obj,
                                           &properties,
                                           kCFAllocatorDefault,
                                           kNilOptions);

    if ((kr != KERN_SUCCESS) || !properties) {
        printf("IORegistryEntryCreateCFProperties error %x\n", kr);
    }

    else
    {
        CFNumberRef percent = (CFNumberRef) CFDictionaryGetValue(properties, CFSTR("BatteryPercent"));
        if (percent)
        {
            SInt32 s;
            if(!CFNumberGetValue(percent, kCFNumberSInt32Type, &s))
            {
                printf("***CFNumber overflow***\n");
            }

            else
            {
                NSDictionary *deviceProperties = (__bridge NSDictionary *)properties;
                //Use the key @"BatteryPercent" in this dictionary to access the battery percent of any bluetooth mouse, keyboard, or trackpad connected.
            }
        }
    }
}

Надеюсь, это поможет ...если вы используете Spotlight для поиска приложения IORegistryExplorer, это может помочь выяснить, какие другие ключи могут быть полезны в словаре для поиска другой полезной информации (например, имени или типа устройства).

...