Я хотел бы имитировать нажатие мультимедийных клавиш из приложения в Mac OS. Я использую Swift в Xcode 10 на Мохаве 10.14.4.
Используя такие ответы, как Имитация нажатия клавиш с помощью Swift, я могу имитировать различные клавиши, но не клавиши передачи мультимедиа (воспроизведение/пауза, увеличение громкости и т. д.).
import Carbon.HIToolbox.Events
@IBAction func buttonPressed(_ sender: AnyObject) {
//let keyCode = CGKeyCode(kVK_F11)
let keyCode = CGKeyCode(kVK_VolumeUp)
let keySource = CGEventSource(stateID: .hidSystemState)
let keyDownEvent = CGEvent(keyboardEventSource: keySource,
virtualKey: keyCode,
keyDown: true)
//keyDownEvent?.flags = .maskCommand
//keyDownEvent?.flags = .maskControl
//keyDownEvent?.flags = .maskAlternate
//keyDownEvent?.flags = .maskSecondaryFn
//keyDownEvent?.flags = .maskShift
//keyDownEvent?.flags = .maskNumericPad
//keyDownEvent?.flags = .maskHelp
let keyUpEvent = CGEvent(keyboardEventSource: keySource,
virtualKey: keyCode,
keyDown: false)
keyDownEvent?.post(tap: .cghidEventTap)
keyUpEvent?.post(tap: .cghidEventTap)
}
Если я создаю событие для клавиши kVK_F11 (которая по умолчанию является клавишей VolumeUp), она выполняет свою немедийную функцию, то есть заставляет все окна бежать к краям экрана. Я пробовал разные модификаторы флагов в событии keyDown, но безрезультатно.
Есть ли способ программно сгенерировать событие нажатия клавиши для воспроизведения/паузы, увеличения/уменьшения громкости и т. д.?





Предлагаемый повторяющийся вопрос эмулировать нажатие клавиши мультимедиа на Mac, указанный https://stackoverflow.com/users/4244136/виллеке в комментариях выше, включает решение моего вопроса на Python. Я перевел его на Swift и разместил там рабочий код. Спасибо!