Bir el yazısını klavye kısayoluna / izleme dörtgeni hareketine nasıl bağlayacağınızı biliyorsanız, bu cevap tam size göre.
Senaryo evrensel olmak içindir. Mümkün olduğunca çok senaryo eklemek için en genel terimleri kullanır. Finder, Script Editor ve Firefox üzerinde test yaptım. Hata yok.
Ancak, uyarılar vardır:
Komut dosyası yalnızca bir uygulamanın tek örneği olduğunda çalışır. (BTW, OP metninde hala "birkaç örnek" diyor.) Bunun içinde birden fazla örnek çalışmak mümkündür, ancak bu başka bir gün için bir kavga.
Bu komut dosyası Window
menüdeki pencerelerin listesini aşağı kaydırır . Özünde bir onay ("✓") işaretli öğenin hemen altındaki öğeyi tıklar. "✓" olan öğe son öğeyse, komut dosyası bunun yerine son ayırıcı satırın altındaki ilk öğeyi tıklar. Ters yönde geriye doğru giden bir komut dosyası, bu komut dosyasını değiştirerek elde edilebilir. Ancak, ikisinin tek bir senaryoda nasıl birleştirilebileceğini görmüyorum.
try
Bir üreten deyimi errorMessage
ben dizinini üretmek için bildiğim en CPU verimli yoludur separator
. Daha iyi bir yol biliyorsanız, lütfen beni aydınlatın.
Senaryo:
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