Как вы и предполагаете, касания событий не будут работать в Мохаве, если у вас нет доступа к ним. Из документации :
Сигналы событий получают события «вверх» и «вниз», если одно из следующего
условие истинно: текущий процесс выполняется от имени пользователя root.
Доступ для вспомогательных устройств включен. В OS X v10.4 вы можете включить
эта функция с помощью системных настроек, панель универсального доступа,
Вид клавиатуры.
Приложение с графическим интерфейсом предложит пользователю включить доступность в первый раз, когда это необходимо, но похоже, что приложение CLI этого не делает (что имеет смысл).
Нет способа включить это программно или через скрипт; пользователь должен сделать это самостоятельно.
Запуск инструмента как root
должен работать - можете ли вы применить это?
В противном случае вы можете направить пользователя в нужное место в Системных настройках:
tell application "System Preferences"
reveal anchor "Privacy_Accessibility" of pane id "com.apple.preference.security"
activate
end tell
Это возможно при использовании Углерод , если ваше приложение не помещено в "песочницу".
Наконец, быстрый тест показывает, что это возможно, по крайней мере, с использованием IOHID. Я бесстыдно позаимствовал класс KeyboardWatcher
из этого ответа . Затем изменил тип устройства:
[self watchDevicesOfType:kHIDUsage_GD_Keyboard];
в
[self watchDevicesOfType:kHIDUsage_GD_Mouse];
Наконец, мой обратный вызов выглядит так:
static void Handle_DeviceEventCallback (void *inContext, IOReturn inResult, void *inSender, IOHIDValueRef value)
{
IOHIDElementRef element = IOHIDValueGetElement(value);
IOHIDElementType elemType = IOHIDElementGetType(element);
if (elemType == kIOHIDElementTypeInput_Button)
{
int elementValue = (int) IOHIDValueGetIntegerValue(value);
// 1 == down 0 == up
if (elementValue == 1)
{
CGEventRef ourEvent = CGEventCreate(NULL);
CGPoint point = CGEventGetLocation(ourEvent);
printf("Mouse Position: %.2f, y = %.2f \n", (float) point.x, (float) point.y);
}
}
}
Это действительно быстрая хакерская работа, но она демонстрирует, что это возможно, и, надеюсь, вы сможете усовершенствовать ее для своих нужд.