Симуляция нажатия Media-Key в MacOS
Я хотел бы имитировать нажатия клавиш мультимедиа из приложения в Mac OS. Я использую Swift в Xcode 10 на Мохаве 10.14.4
Используя такие ответы, как Имитация нажатия клавиш с помощью Swift, я могу имитировать различные клавиши, но не клавиши переноса мультимедиа (воспроизведение / пауза, VolumeUp и т. Д.).
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 безрезультатно.
Есть ли способ сгенерировать событие нажатия клавиш для Play/Pause, VolumeUp/Down и т. Д. Программно?
1 ответ
Предлагаемый повторяющийся вопрос, имитирующий нажатие клавиши мультимедиа на Mac, указанный в Willeke в комментариях выше, включает в себя решение Python для моего вопроса. Я перевел его на Swift и разместил там рабочий код. Спасибо!