¿Cómo puedo crear un método abreviado de teclado que voltea mi pantalla al revés?
Sé cómo habilitar esta configuración en las Preferencias del sistema, pero quiero poder vincularla a un acceso directo.
¿Es posible hacer que el mismo método abreviado de teclado revierta la pantalla a su orientación normal?
Escribí un programa llamado displayplacer que hace que esto sea fácil de hacer a través de un comando de terminal. Puede vincular esto a un atajo de teclado con un programa como BetterTouchTool o tal vez Automator. Funciona con todas las versiones de macOS por encima de 10.6.
Ejemplo para voltear 180:displayplacer 'id:123467890 res:1920x1200 scaling:off origin:(0,0) degree:180'
Ejemplo para voltear 0:displayplacer 'id:123467890 res:1920x1200 scaling:off origin:(0,0) degree:0'
id
sirvedisplayplacer list
. En la parte inferior de la salida, verá su "perfil" actual, que representa cómo están dispuestos actualmente sus monitores. Edita esto a tu gusto.displayplayer list
). Me tuviste en "Essentially XRandR para macOS". :-)Lo siguiente se probó en macOS Sierra 10.12.5 y macOS High Sierra 10.13.3 y funciona sin problemas en mi sistema.
Usando el código AppleScript de ejemplo , de mi respuesta original, guardado como una aplicación AppleScript llamada Flip Display 180 ° y agregado a Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad , para permitir que procese el código , luego usé un Automator flujo de trabajo de servicio , también llamado Flip Display 180° , para abrir la aplicación AppleScript del mismo nombre, mientras asigna el siguiente método abreviado de teclado : ⇧⌃⌘R
Tenga en cuenta que el atajo de teclado ⇧⌃⌘F , que funcionaba en OS X 10.8.5 , estaba en conflicto con un atajo de teclado predeterminado del sistema en macOS 10.12.5 , macOS 10.13.3 y por qué lo cambié. Es posible que deba usar un método abreviado de teclado diferente y, como de costumbre, debe elegir uno que aún no esté asignado en ninguna aplicación que tenga el foco cuando se presiona para activar este flujo de trabajo del servicio Automator .
También ejecuté el siguiente comando , en la Terminal , para no mostrar el Dock Tile para la aplicación AppleScript en el Dock :
defaults write '/Applications/Flip Display 180°.app/Contents/Info.plist' LSUIElement -bool yes
Dicho esto, si la interfaz de usuario para pantallas en Preferencias del sistema en macOS High Sierra en su sistema es diferente por alguna razón no revelada, entonces el código AppleScript de ejemplo deberá modificarse para adaptarse a las diferencias entre lo que funciona en mi sistema y el suyo. Si necesita ser modificado, me imagino que no sería tan difícil de averiguar.
Preferencias del sistema > Pantallas > Pantalla , como se muestra en mi sistema:
Aplicación AppleScript , denominada Flip Display 180° :
Flujo de trabajo de servicio de Automator , también llamado Flip Display 180° :
Código:open -a 'Flip Display 180°'
Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad :
Preferencias del sistema > Teclado > Accesos directos > Servicios > General > Voltear pantalla 180°
Por el momento, dejo mi respuesta original en la parte inferior de esta respuesta, ya que funciona como se indica en OS X 10.8.6 y puede ser beneficioso para otros usuarios.
Respuesta original:
Sé que está usando macOS High Sierra y tal vez pueda usar lo que funciona para mí en OS X 10.8.6 .
El siguiente código AppleScript de ejemplo utilizado en una acción Ejecutar AppleScript en un flujo de trabajo de servicio de Automator gira la pantalla 180° cuando presiono: ⇧⌃⌘F
if running of application "System Preferences" then
quit application "System Preferences"
delay 1
end if
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
delay 1
tell application "System Events"
tell pop up button "Rotation:" of tab group 1 of window 1 of application process "System Preferences"
if (value) contains "Standard" then
click
click menu item "180°" of menu 1
my clickConfirmButton()
else
click
click menu item "Standard" of menu 1
end if
end tell
end tell
quit
end tell
on clickConfirmButton()
set wasClicked to false
repeat until wasClicked
delay 0.5
tell application "System Events"
try
click button "Confirm" of sheet 1 of window 1 of application process "System Preferences"
set wasClicked to true
end try
end tell
end repeat
end clickConfirmButton
delay
comandos para su sistema y que se necesiten o no delay
comandos adicionales. Ajuste los valores de y o agregue/elimine los delay
comandos según corresponda.Nota: El código AppleScript de ejemplo es solo eso y no emplea ningún otro manejo de errores además de lo que se muestra y está destinado solo a mostrar una de las muchas formas de realizar una tarea. La responsabilidad siempre recae sobre el Usuario para agregar/usar el manejo de errores apropiado según sea necesario/deseable.
Flujo de trabajo del servicio de Automator :
Si está utilizando otro idioma, modifique el nombre del botón a su idioma.
En script "LG Ultra HD"
significa el nombre de su monitor, esto es útil si tiene más de 2 monitores, de lo contrario, puede reemplazar (first window whose name is "LG Ultra HD")
porwindow 1
if running of application "System Preferences" then
quit application "System Preferences"
delay 1
end if
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
delay 1
tell application "System Events"
tell pop up button "旋转:" of tab group 1 of (first window whose name is "LG Ultra HD") of application process "System Preferences"
if (value) contains "标准" then
click
click menu item "270°" of menu 1
my clickConfirmButton()
else
click
click menu item "标准" of menu 1
end if
end tell
end tell
quit
end tell
on clickConfirmButton()
set wasClicked to false
set i to 10
repeat until wasClicked or i ≤ 0
delay 0.5
tell application "System Events"
try
click button "确认" of sheet 1 of (first window whose name is "LG Ultra HD") of application process "System Preferences"
set wasClicked to true
end try
end tell
set i to i - 1
end repeat
end clickConfirmButton
Tomé la solución de user3439894 y la modifiqué para que funcione con el mismo error que encontró theonlygusti porque también me estaba encontrando con ese problema.
El siguiente script es un truco masivo, pero la idea general es que a veces la pestaña de rotación es la ventana 1 y a veces es la ventana 2. Para resolver esto, utilicé un bloque try catch que solo probará el primero y si falla, también lo hará. prueba con el segundo. Siéntase libre de mejorar este script, pero solo quería algo que funcione.
if running of application "System Preferences" then
quit application "System Preferences"
delay 1
end if
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
delay 1
tell application "System Events"
try
tell pop up button "Rotation:" of tab group 1 of window 2 of application process "System Preferences"
if (value) contains "Standard" then
click
click menu item "270°" of menu 1
my clickConfirmButton()
else
click
click menu item "Standard" of menu 1
end if
end tell
on error errMsg
tell pop up button "Rotation:" of tab group 1 of window 1 of application process "System Preferences"
if (value) contains "Standard" then
click
click menu item "270°" of menu 1
my clickConfirmButton()
else
click
click menu item "Standard" of menu 1
end if
end tell
end try
end tell
quit
end tell
on clickConfirmButton()
set wasClicked to false
repeat until wasClicked
delay 0.5
tell application "System Events"
try
click button "Confirm" of sheet 1 of window 1 of application process "System Preferences"
set wasClicked to true
end try
end tell
end repeat
end clickConfirmButton
Saludos por hacer el 99% del trabajo user3439894
Probado en macOS 11.3 Big Sur.
Basado en la solución de @Vxider, con elementos de menú traducidos al inglés.
Deberá cambiar ambas apariciones de "LG HDR 4K"
para que coincidan con el nombre de su monitor, como se presenta en la ventana de Preferencias del sistema:
if running of application "System Preferences" then
quit application "System Preferences"
delay 1
end if
tell application "System Preferences"
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
delay 1
tell application "System Events"
tell pop up button "Rotation:" of tab group 1 of (first window whose name is "LG HDR 4K") of application process "System Preferences"
if (value) contains "Standard" then
click
click menu item "90°" of menu 1
my clickConfirmButton()
else
click
click menu item "Standard" of menu 1
end if
end tell
end tell
quit
end tell
on clickConfirmButton()
set wasClicked to false
set i to 10
repeat until wasClicked or i ≤ 0
delay 0.5
tell application "System Events"
try
click button "Confirm" of sheet 1 of (first window whose name is "LG HDR 4K") of application process "System Preferences"
set wasClicked to true
end try
end tell
set i to i - 1
end repeat
end clickConfirmButton
Basándome en soluciones anteriores, adapté el script a macOS Monterey. Funciona bien con mi macOS 12.3.1. Disfrútala.
if running of application "System Preferences" then
quit application "System Preferences"
delay 1
end if
tell application "System Preferences"
activate
reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
delay 1
(*set current pane to pane id "com.apple.preference.displays"*)
delay 1
tell application "System Events"
tell pop up button "Rotation:" of group 1 of window 1 of application process "System Preferences"
if (value) contains "90°" then
delay 1
click
click menu item "Standard" of menu 1
delay 3
display notification "Rotated to Landscape mode"
(*my clickConfirmButton()*)
else
delay 1
click
click menu item "90°" of menu 1
delay 5
display notification "Rotated to Portrait mode"
my clickConfirmButton()
delay 2
end if
end tell
end tell
quit application "System Preferences"
end tell
on clickConfirmButton()
set wasClicked to false
set i to 10
repeat until wasClicked or i ≤ 0
delay 0.5
tell application "System Events"
try
click button "Confirm" of sheet 1 of (first window whose name is "Displays") of application process "System Preferences"
set wasClicked to true
end try
end tell
set i to i - 1
end repeat
end clickConfirmButton
usuario3439894
usuario3439894
sologusti
sologusti
usuario3439894
usuario3439894
tell pop up button "Rotation:" ...
activate
reveal
usuario3439894
key code 58 using command down
y puede ser undelay 0.25
después y agregue esto antes deltell pop up button "Rotation:" ...
comando.