Если вы знаете, как связать applecript с сочетанием клавиш / жестом трекпада, это ответ для вас.
Сценарий должен быть универсальным. Он использует наиболее обобщенные термины, чтобы включить как можно больше сценариев. Я тестировал на Finder, Script Editor и Firefox. Нет ошибок
Тем не менее, у него есть предостережения:
Сценарий работает только тогда, когда есть только один экземпляр приложения. (Кстати, в тексте ОП все еще говорится «несколько экземпляров».) В него можно включить несколько экземпляров, но это борьба за другой день.
Этот скрипт прокручивает список окон в Window
меню. По сути, он щелкает по элементу, который находится прямо под пунктом с галочкой («✓»). Если элемент с «✓» является последним элементом, сценарий вместо этого щелкнет первый элемент под последней строкой разделителя. Скрипт, который идет назад в обратном направлении, может быть получен путем модификации этого скрипта. Тем не менее, я не вижу, как эти два могут быть объединены в один сценарий.
try
Утверждение , что производит errorMessage
наиболее CPU-эффективный способ я знаю , чтобы произвести индекс separator
. Если вы знаете лучший способ, пожалуйста, просветите меня.
Сценарий:
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