Как программно изменить настройки мыши в macOS с помощью IOKit - PullRequest
0 голосов
/ 10 октября 2019

Функции IOHIDGetAccelerationWithKey и IOHIDSetAccelerationWithKey устарели начиная с macOS 10.12, поэтому я пытаюсь реализовать то же самое, используя другие IO* -методы.

Я никогда не работал с IOKit, поэтому всеЯ могу сделать это Google для функций и попытаться заставить его работать. Теперь я нашел это: Не могу редактировать IORegistryEntry , в котором есть пример того, как изменить свойство TrackpadThreeFingerSwipe, однако он использует функцию, которая не определена для меня: getEVSHandle. Поиск в Google показывает, что он должен быть Найден в фреймворке MachineSettings , однако я не могу добавить какие-либо фреймворки "MachineSettings" в XCode 11.

Что мне делать? Текущий код выглядит так:

#import <Foundation/Foundation.h>
#import <IOKit/hidsystem/IOHIDLib.h>

int main(int argc, const char * argv[]) {
   @autoreleasepool {
      NSInteger value = -65536;
      CFNumberRef number = CFNumberCreate(kCFAllocatorDefault, kCFNumberNSIntegerType, &value);
      CFMutableDictionaryRef propertyDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 1, NULL, NULL);
      CFDictionarySetValue(propertyDict, @"HIDMouseAcceleration", number);

      io_connect_t connect = getEVSHandle(); // ???

      if (!connect)
      {
          NSLog(@"Unable to get EVS handle");
      }

      res = IOConnectSetCFProperties(connect, propertyDict);

      if (res != KERN_SUCCESS)
      {
         NSLog(@"Failed to set mouse acceleration (%d)", res);
      }

      IOObjectRelease(service);

      CFRelease(propertyDict);
   }
   return 0;
}

...