Якщо ви знаєте, як прив'язати яблучний скрипт до комбінації клавіш / жестів трекпада, це відповідь для вас.
Сценарій повинен бути універсальним. Він використовує найбільш узагальнені терміни, щоб включити якомога більше сценаріїв. Я тестував на Finder, Script Editor та Firefox. Немає помилок.
Однак він має застереження:
Сценарій працює лише тоді, коли є лише один екземпляр програми. (BTW, він все ще говорить "кілька екземплярів" в тексті ОП.) Можна працювати з ним декількома примірниками, але це боротьба за інший день.
Цей скрипт прокручує список вікон у 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