<p>一些AppleScriptObjC(好的,几乎所有的东西)可能更快,但是即使使用常规AppleScript做了很长一段时间,如果不使用shell脚本,也会更快,因为多次调用shell脚本的开销是昂贵的。在我的机器上,shell脚本事件占用了94%的时间,而您的脚本还有很多事情要做</p>
<p>漫长的过程包括单步遍历每个热键项的字符,用描述替换特殊字符,并添加<code>+</code>分隔符。通过在热键项中使用常规<code>space</code>并将其替换为与其他修改器字符相同的字符,以及在找到<code>F</code>后仅追加热键字符串的其余部分(修改器键通常位于第一位),可以在遍历字符时处理边缘大小写</p>
<p>请注意,控制符号<code>⌃</code>与插入符号<code>^</code>(shift+6)不同:</p>
<pre><code>set hotkeyShortcutList to {"$", "U", "J", "G", "R", "⇧R", "⇧Y", "⇧G", "⇧B", "⇧P", "⇧⌫", "⌃M", "⌃W", "⌃^", "⌃X", "⌃C", "⌃V", "⌃N", "⇧⌃N", "⌃U", "⌃B", "⇧⌃A", "⌃A", "⌥I", "⌥O", "⇧⌥I", "⇧⌥O", "⌥B", "⌥D", "⌥S", "⌃⌥M", "⌃⌥B", "⌃⌥X", "⇧⌃G", "⇧⌃⌥R", "⇧⌃⌥L", "⌃Å", "⌃]", "⇧⌃Å", "⇧⌃}", "⇧⌃M", "⇧⌃⌥!", "⇧⌃⌥@", "⇧⌃⌥£", "⇧⌃⌥$", "⇧⌃⌥%", "⇧⌃⌥^", "⌃1", "⌃2", "⌃3", "⌃4", "⌃5", "⌃6", "⇧⌃!", "⇧⌃\"", "⇧⌃#", "⇧⌃€", "⇧⌃%", "⇧⌃&", "K", "⌃K", "⌃V", "⇧⌃⌥K", "A", "Y", "Z", "⇧⌃*", "⇧⌃⌥*", "X", "⌃,", "⌃.", "⇧⌃;", "⇧⌃:", "⌃P", "⇧⌃)", "⇧⌃?", "⌃+", "⌘ ", "[", "]", "V", "L", "P", "S", "N", "Q", "O", "T", "E", "D", "W", "C", "⌘F1", "⌃F12"}
set replacements to {{" ", "space"}, {"⇧", "shift"}, {"⌃", "control"}, {"⌥", "option"}, {"⌘", "command"}, {"↵", "enter"}, {"↩", "return"}, {"⌫", "backspace"}} key symbols to replace
set processedShortcutList to {}
repeat with anItem in hotkeyShortcutList
set processedItem to ""
set anItem to contents of anItem
repeat with here from 1 to (count anItem)
set char to item here of anItem
repeat with replacement in replacements replace key symbol with its description
if first item of replacement is char then
set char to second item of replacement
exit repeat
end if
end repeat
considering case and diacriticals tighten the comparison a little
if char is "F" then can be function key, so just append the rest
set processedItem to processedItem & text here thru -1 of anItem & "+"
exit repeat
end if
end considering
set processedItem to processedItem & char & "+"
end repeat
set end of processedShortcutList to text 1 thru -2 of processedItem strip last
end repeat
return processedShortcutList
</code></pre>