Есть ли способ включить и выключить функцию «Клавиши мыши» с помощью AppleScript или команды терминала?

Я использую Mac OS X 10.7.2. Есть ли способ запустить команду AppleScript или терминала, которая быстро включает или выключает функцию «клавиши мыши» на вкладке «Универсальный доступ»? В идеале я ищу решение, которое не включает в себя GUI-скрипты приложения «Системные настройки», хотя это было бы немного лучше, чем ничего.

Я исследовал defaults write com.apple.universalaccess useMouseKeysShortcutKeys 1и другие формы этого утверждения, но безрезультатно.

Ответы (2)

Вот решение для сценариев GUI:

tell application "System Preferences"
    reveal anchor "Mouse" of pane id "com.apple.preference.universalaccess"
    tell application "System Events"
        tell process "System Preferences"
            tell first window
                tell first tab group
                    tell radio group 1
                        if value of radio button 1 is 1 then
                            # enabled, so disable
                            click radio button 2
                        else
                            # disabled, so enable
                            click radio button 1
                        end if
                    end tell
                end tell
            end tell
        end tell
    end tell
    quit
end tell

При необходимости он запустит Системные настройки , но не показывает окно и затем закрывает его, поэтому с точки зрения пользовательского интерфейса он, по крайней мере, не показывает окно.


Вы можете изменить постоянный параметр, на котором основана конфигурация Системных настроек, с помощью следующих команд:

defaults write ~/Library/Preferences/com.apple.universalaccess mouseDriver -bool YES
defaults write ~/Library/Preferences/com.apple.universalaccess mouseDriver -bool NO

К сожалению, это только изменяет файл конфигурации и не применяет изменения к работающей системе.


Хотя вы можете программно нажимать клавиши Option с помощью AppleScript, например:

tell application "System Events"
    key down option
    key up option
end tell

Нажмите Option пять раз, чтобы переключить настройку, она находится на более высоком уровне и не срабатывает при этом. Хотя все обычные Optionнажатия клавиш игнорируются после запуска key down option, вы все равно можете переключать клавиши мыши.


Отладка системных настроек при изменении настройки показывает вызовы в частной структуре LaunchUAServerIfNeededи в ней . Если мы не реконструируем эту структуру и не напишем свои собственные двоичные файлы, я не думаю, что мы получим правильный программный способ сделать это.UAMouseKeysSetEnabledUniversalAccessCore

Феноменальный ответ, который стал только лучше с редактированием. Отличная работа!
как узнать как называются якоря? Я угадал «Клавиатура» и «Слух», но не могу угадать, каким должно быть имя привязки для вкладки «Видение». Это не Видение, Зрение, Видение... Что мне действительно интересно, так это то, как их найти, не догадываясь.

Разве вы не можете использовать для этого сценарии нажатия клавиш в AppleScript?

Что-то вроде:

tell application "System Events"
    repeat 5 times
    //any of these should work
    key option
    key code 58
    key code option
    //I do not know if this works
    keystroke option
end tell
Нет, к сожалению, насколько я могу судить, option — это модификатор, а не нажатие клавиши в сценарии.
@Daniel Команды будут key down optionи key up option, но не работают, даже delay 0.1между ними.
@ Даниэль Ты пробовал?
Я сделал. Не срабатывал переключатель при запуске. Будьте осторожны, чтобы никогда не ошибиться с парой из них, когда вы пытаетесь. Насколько я знаю, невозможно отпустить нажатую таким образом клавишу, если только с правильным key up.
Да, я пробовал, и нет, это не работает. :-(