Как программно инвертировать цвета экрана на Mac - PullRequest
5 голосов
/ 28 июня 2011

Как мне написать скрипт для запуска на Mac, который инвертирует цвета экрана?

Аналогично Как программно инвертировать цвета экрана в Linux , но, к сожалению, xcalib работает на Windows и Linux, но не на Mac, насколько я могу судить.

РЕДАКТИРОВАТЬ: У меня есть частичное решение. Я нашел способ сбросить все мои настройки до и после инвертирования цветов экрана:

$ mkdir before && mkdir after && cd before
$ for d in $(defaults domains | sed 's/,//g'); do defaults read $d > $d; done
$ cd ../after
$ # System Preferences > Universal Access > Display > White on Black
$ for d in $(defaults domains | sed 's/,//g'); do defaults read $d > $d; done
$ diff -r before after
diff -r before/com.apple.CoreGraphics after/com.apple.CoreGraphics
3c3
<     DisplayUseInvertedPolarity = 0;
---
>     DisplayUseInvertedPolarity = 1;
diff -r before/com.apple.universalaccess after/com.apple.universalaccess
5c5
<     whiteOnBlack = 0;
---
>     whiteOnBlack = 1;

Так что теперь я знаю, какие настройки отвечают за инверсию экрана. Но когда я пробую очевидное,

$ defaults write com.apple.universalaccess whiteOnBlack -int 1
$ defaults write com.apple.CoreGraphics DisplayUseInvertedPolarity -int 1

Ничего не происходит. Предположительно, любые программы, использующие эти значения, должны быть уведомлены для их перезагрузки (поскольку примеры, например, dotfiles , должны уничтожить Finder, чтобы вступили в силу). Но я не уверен, что это будут за приложения, или это правильное решение в любом случае.

Ответы [ 3 ]

4 голосов
/ 28 июня 2011

Этот фрагмент Apple Script сделает это:

tell application "System Events"
    key code 28 using {control down, option down, command down}
end tell

Используется ярлык Control-Option-Cmd-8 (код клавиши 28 - это номер 8). Тебе придется выяснить, как звонить из того, что тебе нужно ...

1 голос
/ 21 ноября 2015
tell application "System Preferences"
  activate
  reveal anchor "Seeing_Display" of pane id "com.apple.preference.universalaccess"
  tell application "System Events" to tell process "System Preferences"
    click the checkbox "Invert colors" of window "Accessibility"
  end tell
end tell
tell application "System Preferences" to quit
1 голос
/ 19 июня 2014

Вы можете попробовать усовершенствовать этот фрагмент, который возвращает текущее состояние с помощью сценариев GUI. Значение кажется доступным только для чтения, и попытка установить его на 1 или 0 не удалась.

tell application "System Preferences"
    launch
    set current pane to pane "com.apple.preference.universalaccess"
    tell application "System Events"
        return value of checkbox "Invert colors" of window 1 of process "System Preferences"
    end tell
    quit
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...