Nếu bạn biết cách liên kết một applescript với cử chỉ bàn phím / trackpad, đây là câu trả lời cho bạn.
Kịch bản có nghĩa là phổ quát. Nó sử dụng các thuật ngữ tổng quát nhất để bao gồm càng nhiều kịch bản càng tốt. Tôi đã thử nghiệm trên Finder, Script Editor và Firefox. Không có lỗi.
Tuy nhiên, nó có cảnh báo:
Kịch bản chỉ hoạt động khi chỉ có một phiên bản của ứng dụng. (BTW, nó vẫn nói "một vài trường hợp" trong văn bản của OP.) Có thể thực hiện nhiều trường hợp trong đó, nhưng đó là một cuộc chiến cho một ngày khác.
Kịch bản này cuộn xuống danh sách các cửa sổ trong Window
menu. Về bản chất, nó nhấp vào mục ngay bên dưới mục có dấu ("✓"). Nếu mục có "✓" là mục cuối cùng, tập lệnh sẽ thay vào đó nhấp vào mục đầu tiên bên dưới dòng phân cách cuối cùng. Một tập lệnh đi ngược theo hướng ngược lại có thể thu được là sửa đổi tập lệnh này. Tuy nhiên, tôi không thấy làm thế nào hai có thể được kết hợp thành một tập lệnh.
Câu try
lệnh tạo ra một errorMessage
cách hiệu quả nhất về CPU mà tôi biết để tạo ra chỉ mục của separator
. Nếu bạn biết một cách tốt hơn, xin vui lòng khai sáng cho tôi.
Kịch bả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