Si sabe cómo vincular un método de método abreviado de teclado / trackpad de una secuencia de comandos de manzana, esta es la respuesta para usted.
El script está destinado a ser universal. Utiliza los términos más generalizados para incluir tantos escenarios como sea posible. He probado en Finder, Script Editor y Firefox. No hay errores.
Sin embargo, tiene advertencias:
-
El script solo funciona cuando solo hay una instancia de una aplicación. (Por cierto, aún dice "varias instancias" en el texto de OP). Es posible incluir múltiples instancias en ella, pero eso es una pelea para otro día.
-
Este script se desplaza hacia abajo en la lista de ventanas en el menú Window
. En esencia, hace clic en el elemento justo debajo del que tiene una marca de verificación ("✓"). Si el elemento con un "✓" es el último, el script hará clic en el primer elemento debajo de la última línea de separación. Un script que va hacia atrás en la dirección inversa se puede obtener modificando este script. Sin embargo, no veo cómo se pueden combinar los dos en un solo script.
-
La instrucción try
que produce un errorMessage
es la manera más eficiente de CPU que conozco para producir el índice del separator
. Si conoces una forma mejor, por favor, ilumíname.
El guión:
tell application "System Events" to tell (first application process whose frontmost is true) to tell menu bar 1 to tell menu "Window"
set cellingSeperator to last menu item whose value of attribute "AXEnabled" is false
set checkedItem to first menu item whose value of attribute "AXMenuItemMarkChar" is "✓"
try
set intentionalError to cellingSeperator as Unicode text
on error errorMessage
set firstItemIndex to (characters ((offset of "«class menI» " in errorMessage) + 13) through ((offset of " of" in errorMessage) - 1) of errorMessage as string as integer) + 1
end try
repeat with iterator from firstItemIndex to number of menu items
if value of attribute "AXFrame" of menu item iterator is equal to value of attribute "AXFrame" of checkedItem then
set clickItemIndex to iterator + 1
exit repeat
end if
end repeat
if clickItemIndex is greater than number of menu items then set clickItemIndex to firstItemIndex
tell menu item clickItemIndex to perform action "AXPress"
end tell