Как переключиться с оттенками серого в Yosemite?

Я предпочитаю оттенки серого, а не инвертирование цвета при работе в условиях низкой освещенности, а также в целом, так как это меньше напрягает глаза. Но слишком много кликов для переключения настроек. Я знаю, что для инвертирования цвета дисплея используется ярлык Cmd+ Alt+ Ctrl+ 8. И откройте параметры специальных возможностей с помощью Cmd+ Alt+ F5, но в параметрах нет оттенков серого. Прямо сейчас я открываю «Доступность» через Spotlight, затем выбираю «Показать и переключаю флажок». Мне интересно, есть ли для этого какая-либо комбинация клавиш? Если нет, то можно ли сделать сочетание клавиш.

Не похоже, что ты можешь. Я заглянул в область сочетаний клавиш (в разделе «Клавиатура» в «Системных настройках»), и, похоже, нет способа сделать экран в оттенках серого с помощью привязки клавиш. :(

Ответы (6)

В следующем примере кода AppleScript будет переключаться состояние флажка «Использовать оттенки серого» в специальных возможностях в разделе «Системные настройки» в OS X Yosemite (проверено в версии 10.10.4) независимо от того, что было последним выбрано в разделе «Специальные возможности», поскольку он указывает Системным настройкам открываться непосредственно в расположение флажка «Использовать оттенки серого» и переключить его состояние.

tell application "System Preferences"
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
    tell application "System Events" to tell front window of application process "System Preferences"
        with timeout of 5 seconds
            repeat until (exists checkbox "Use grayscale")
                delay 0.1
            end repeat
            click checkbox "Use grayscale"
        end timeout
    end tell
    quit
end tell

Следующая проблема заключается в том, как вы хотите его выполнить. Проблема, связанная с настройкой его в качестве службы через Automator для использования сочетания клавиш без использования сторонней утилиты, заключается в том, что каждое приложение, которое получает комбинацию клавиш быстрого доступа, должно иметь разрешение на это, и это становится проблемой, если вы только не выберете, например Искатель вместо всех приложений. Поэтому без сторонней утилиты я бы либо сохранил его как сценарий в папке Users Script, а затем получил к нему доступ из меню Script в строке меню Apple или как приложение.

Настройки меню «Сценарий» в строке меню Apple находятся в настройках редакторов сценариев. Затем всего два щелчка мыши в любое время, когда вы хотите переключить состояние флажка «Использовать оттенки серого». Один, чтобы щелкнуть меню «Сценарии», а другой, чтобы щелкнуть имя сценария.

Как приложение его можно поместить в Dock, а затем одним щелчком мыши в любое время, когда вы хотите переключить состояние флажка «Использовать оттенки серого».

В любом из этих двух случаев вам нужно будет дать разрешение в разделе «Доступность» на вкладке «Конфиденциальность» в разделе «Безопасность и конфиденциальность» в Системных настройках, чтобы запустить его успешно.


В качестве примечания: если вы используете такую ​​программу, как FastScripts , вам нужно только использовать пример кода AppleScript в виде .scpt , сохраненного в редакторе сценариев , а не создавать службу Automator , используя обходной путь, упомянутый в комментарии, и можете назначить сочетание клавиш в Настройки для FastScripts . _

Обратите внимание, что я не связан с разработчиком FastScripts, а просто доволен пользователем.

Большое спасибо за решение. Сохраняю как приложение на доке. Думаю, безопаснее дать контроль этому одному приложению, а не всему редактору сценариев. Большое спасибо за ответ.
@qbektrix, да, с точки зрения безопасности, это более безопасный способ. Кстати, если вам не нравится значок, вы можете изменить его, заменив файл «applet.icns» внутри пакета приложений или использовать стороннюю утилиту, чтобы назначить ему другой значок. Если вы сделаете это вручную, файл .icns должен иметь то же имя, даже если он переименован из файла "other_name.icns". Щелкните правой кнопкой мыши пакет приложения и выберите «Показать содержимое пакета», затем перейдите в «Содержимое/Ресурсы/». Вы, вероятно, захотите запустить killall Finderи killall Dockполучить новый файл .icns для отображения или цикл выхода из системы/входа в систему.
Мне удалось обойти проблему «каждому приложению потребуется разрешение», сохранив сценарий оттенков серого как приложение Automator, а затем создав службу Automator, которая просто запускает это приложение. Я даю сервису сочетание клавиш, и приложение получает разрешение на управление моим компьютером. Изменить: только что заметил, что во втором ответе есть ссылка, которая рекомендует делать то же самое! Так что респект им. У них также есть 0,5-секундная задержка в их скрипте — я обнаружил, что мне это тоже нужно.

Я нашел старую дискуссию Apple по этому поводу, и пользователь, ответивший на вопрос, опубликовал файл AppleScript, который будет включать и выключать оттенки серого. Я изменил исходный код, чтобы он работал с OS X Yosemite.

Откройте «Редактор сценариев» и в новом документе вставьте следующее:

tell application "System Preferences" to activate
delay 1

tell application "System Events"
tell process "System Preferences"
click the menu item "Accessibility" of the menu "View" of menu bar 1
delay 0.5
click the checkbox "Use grayscale" of window "Accessibility"
end tell
end tell
tell application "System Preferences" to quit

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

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

Перед запуском убедитесь, что «Дисплей» выделен в специальных возможностях.

При первом запуске приложения произойдет сбой, и OS X спросит, хотите ли вы разрешить приложению управлять компьютером с помощью специальных возможностей. Разрешите доступ, закройте приложение и перезапустите его.

Иногда это не сработает и вылетит с сообщением об ошибке. Если это произойдет, просто перезапустите его, и он будет работать нормально.

РЕДАКТИРОВАТЬ: Это может помочь сделать его сочетанием клавиш: Ссылка

Одна из проблем, в частности, с вашим AppleScript, заключается в том, что вы предполагаете, что при открытии настроек специальных возможностей он будет отображаться, однако это может быть не так, как это будет на том, что было выбрано последним. Например, если он был последним в Zoom, он откроется в Zoom и выдаст сообщение об ошибке: «Ошибка AppleScript. Системные события получили ошибку: не удается установить флажок «Использовать оттенки серого» окна «Доступность» процесса «Системные настройки». "."
Спасибо, @user3439894, я не очень хорошо разбираюсь в AppleScript.
@CreeperzEdge, большое спасибо за ответ. Ссылка на создание сочетания клавиш была действительно полезной.

Я использовал сценарий из ответа @CreeperzEdge, и на моем компьютере была небольшая задержка. Я немного изменил этот скрипт на:

tell application "System Preferences" to reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
tell application "System Preferences"
    activate
    tell application "System Events" to tell process "System Preferences"
        click the checkbox "Use grayscale" of window "Accessibility"
    end tell
end tell

tell application "System Preferences" to quit

Как-то

tell application "System Preferences" to reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"

быстрее, чем

tell application "System Preferences"
    activate
    reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
end tell

Мне был бы интересен чужой опыт.

Не знаю, как вы это поняли, но ваше решение действительно работает быстрее, не требуя delay 1строки. Сохранил как приложение с ярлыком через сервис Automator .

Я обнаружил, что 1-секундная задержка необходима, чтобы заставить его работать на меня.

tell application "System Preferences"
    activate
    reveal anchor "Seeing_Display" of pane "com.apple.preference.universalaccess"
    delay 1
    tell application "System Events" to tell process "System Preferences"
        click the checkbox "Use grayscale" of window "Accessibility"
    end tell
end tell
tell application "System Preferences" to quit

Я создал приложение, чтобы упростить этот процесс. Он позволяет переключать отображение в градациях серого из строки состояния. Это оболочка для AppleScript, упомянутого в ответах, написанных с использованием PyObjC. Я протестировал его для работы на macOS Mojave.

Вы можете скачать его отсюда . Исходный код здесь .

Примечание . Из-за ограничений Apple для работы приложению необходимы три вида разрешений: а) разрешить открытие приложения от неизвестного разработчика б) разрешить доступ к системным событиям. в) права доступа.

Для тех, кто сталкивается с этой веткой на более новом Mac, я изменил AppleScript, чтобы он справился с новым пользовательским интерфейсом вкладки:

tell application "System Preferences"
    set the current pane to pane id "com.apple.preference.universalaccess"
    delay 0.7 #needs time to open universal access
    tell application "System Events" to tell process "System Preferences" to tell window "Accessibility"
        select row 5 of table 1 of scroll area 1 #open display preferences
        click radio button "Color Filters" of tab group 1 of group 1
        click checkbox "Enable Color Filters" of tab group 1 of group 1
    end tell
end tell
tell application "System Preferences" to quit

Я также создал приложение, которое выполняет эту задачу одним щелчком мыши: Оттенки серого . Если кто-то хочет, чтобы я сделал версию для более старых версий (High Sierra и старше), напишите комментарий к этому посту.