Хорошо, я немного покопался в этом и придумал следующий скрипт. Если открыто окно аудиозаписи, этот сценарий начнет или возобновит запись, если запись приостановлена, и приостановит запись, если это не так. При этом используется python для имитации нажатий клавиши выбора (удерживание клавиши выбора превращает кнопку «стоп» в кнопку «пауза»), , поэтому вам может потребоваться установить Objective- python Objective- C пакеты. См. этот ответ StackOverflow для получения подробной информации: Я только что обнаружил, что PyObj c 2.5 установлен в OSX по умолчанию, и этого должно быть более чем достаточно для этой цели.
tell application "QuickTime Player" to activate
tell application "System Events"
tell process "QuickTime Player"
tell window "Audio Recording"
set actionButton to first button whose description is "stop recording" or description is "start recording" or description is "resume recording"
if description of actionButton is in {"start recording", "resume recording"} then
-- start/resume audio recording
click actionButton
else if description of actionButton is "stop recording" then
-- pause audio recording
my controlKeyEvent(true)
click actionButton
my controlKeyEvent(false)
end if
end tell
end tell
end tell
on controlKeyEvent(isKeyDown)
if isKeyDown then
set boolVal to "True"
else
set boolVal to "False"
end if
do shell script "
/usr/bin/python <<END
from Quartz.CoreGraphics import CGEventCreateKeyboardEvent
from Quartz.CoreGraphics import CGEventCreate
from Quartz.CoreGraphics import CGEventPost
from Quartz.CoreGraphics import kCGHIDEventTap
import time
def keyEvent(keyCode, isKeyDown):
theEvent = CGEventCreateKeyboardEvent(None, keyCode, isKeyDown)
CGEventPost(kCGHIDEventTap, theEvent)
keyEvent(58," & boolVal & ");
END"
end controlKeyEvent
В данный момент Quicktime Player должен находиться на переднем плане, чтобы перехватить событие нажатия клавиши, иначе приостановка не будет работать. Я думаю, что могу настроить это так, чтобы событие нажатия клавиш направлялось прямо в приложение Player, но я должен разобраться в этом. Кроме того, я никак не кодировал, чтобы остановить запись (хотя это было бы достаточно просто: просто нажмите кнопку без вызова controlKeyEvent). Я не был уверен, как выглядит ваш рабочий процесс, и я не хотел нарушать его, выдавая неудобное предупреждение.