Функции 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;
}