Я пытаюсь написать небольшой инструмент командной строки Objective-C, который регулирует поворот данного дисплея.
К сожалению, я не могу найти ссылку в документации Apple, в которой рассказывается, как изменить вращение (помимо его получения). Я думаю, что это нужно сделать с помощью CGDisplayModeRef, но я не могу понять, как это сделать. Любая помощь будет оценена по достоинству!
Ответ 1 · рейтинг 4 · Nicolas
Извлечено из https://github.com/CdLbB/fb-rotate - кажется, IOKit может сделать работа, хотя поведение кажется мне немного странным. В двух словах:
io_service_t service = CGDisplayIOServicePort(myDisplayID); //IOKit Handle (get myDisplayID yourself)
IOOptionBits options = (0x00000400 | (kIOScaleRotate90) << 16) //Some undocumented hex'ing
IOServiceRequestProbe(service, options); //Set rotation to display
Не забудьте поставить ссылку на IOKit.
Ответ 2 · codeanpeace
Взломал достаточно хорошее решение, используя applescript, который работает на OS El Capitan (10.11.6), поэтому YMMV. Это легко запустить с помощью Quicksilver напрямую или с помощью триггера Quicksilver, и это занимает примерно столько же времени, сколько требуется для физического поворота и настройки монитора. Надеюсь, это поможет кому-то!
Этот яблочный скрипт переключает целевой дисплей "DELL U2414H" в портретный режим с поворотом на 270 градусов. Обратите внимание, что строка "DELL U2414H" взята из заголовка окна, представляющего указанный дисплей в разделе "Системные настройки" > "Дисплеи". Не уверен, что произойдет, если он запустится, когда есть два дисплея одной марки и модели - не стесняйтесь сообщать о результатах. Легкими потенциальными улучшениями было бы заставить его проверять состояние и переключаться между двумя наиболее часто используемыми ориентациями, но нехватка времени и документации означала, что это было достаточно хорошо для моего варианта использования как есть. ¯\_(ツ)_/¯
tell application "System Preferences"
activate
end tell
tell application "System Events"
delay 1
click UI element "Displays" of scroll area 1 of window "System Preferences" of application process "System Preferences"
delay 1
click window "DELL U2414H" of application process "System Preferences"
delay 1
click pop up button 2 of tab group 1 of window "DELL U2414H" of application process "System Preferences"
-- select 270° for portrait, for landscape replace 4 with "Standard" (with quotes)
delay 1
click menu item 4 of menu 1 of pop up button 2 of tab group 1 of window "DELL U2414H" of application process "System Preferences"
-- click the "Confirm" button, not necessary for "Standard" orientation
delay 5
click UI element "Confirm" of sheet 1 of window "DELL U2414H" of application process "System Preferences"
end tell
tell application "System Preferences"
quit
end tell