Я хочу включить Доступ для вспомогательных устройств в Установках системы программно. Но проблема состоит в том, что мое приложение не работает, поскольку пользователь root и я не хотим, чтобы мое приложение было как пользователь root и также не должны просить промежуточную аутентификацию.
Я хочу коснуться всех событий клавиатуры глобально. Я использую CGEventTapCreate () для того же. В документации CGEventTapCreate () API упоминается, что, касания События получают, настраивают и ключ вниз события, если одно из следующих условий верно:
Я попробовал вручную путем проверки Разрешать Доступа на вспомогательные устройства от Системного Предпочтения, и это дает мне ожидаемый вывод.
Таким образом, там какой-либо путь состоит в том, чтобы сделать то же с помощью программы, не прося аутентификацию, и также приложение не работает как пользователь root?
Спасибо,
Dheeraj.
Вы можете запустить Applescript (или перевести Applescript в ScriptingBridge или любой другой уровень Objective-C поверх AppleEvents)
Вот Applescript, который я использую в одном конкретном проекте, который что-то делает аналогично тому, что вам нужно:
on isUIScriptingOn()
tell application "System Events" to set isUIScriptingEnabled to UI elements enabled
return isUIScriptingEnabled
end isUIScriptingOn
on turnUIScriptingOn(switch)
tell application "System Events"
activate
set UI elements enabled to switch
end tell
end turnUIScriptingOn
on run
if not isUIScriptingOn() then
display dialog "Enable Access for assistive devices (found in the Universal Access System Preference) must be on for this software to correctly work. This program will enable this setting for you"
turnUIScriptingOn(true)
display dialog "Access for assistive devices in now on"
end if
end run
Обычно считается невежливым изменять системные настройки пользователя, хотя бы не предупредив его, а то и не спросив разрешения. Большинство приложений, которым нужна эта настройка, просто проверяют, включена ли она, и если нет, говорят пользователю включить ее.
Есть способ включить его для каждого процесса. К сожалению, я не знаю, что это такое, у меня есть приложения, которые делают это, и я думаю, что помню, что видел что-то об этом в списке рассылки разработчиков какао
. Вы уверены, что его можно включить для каждого процесса, без нужны права администратора? И если да, будут ли захвачены все события или только те, которые относятся к процессу?