Какао: имитация команды + вкладка в CGEvent
Я хочу симулировать Application Switcher
в моем приложении, и я думаю, что CGEvent может сделать это.
Хорошо, после изучения некоторой базовой информации о CGEvent, я могу смоделировать нажатие клавиши Command + Tab
, Но окно переключателя приложений просто мигает и сразу переключается на другое приложение.
Я понимаю, что мне нужно hold
Клавиша Command и нажмите клавишу Tab, чтобы выбрать приложение. Итак, вот мой код:
// Hold the Command key
let source = CGEventSourceCreate(.HIDSystemState)
let event = CGEventCreateKeyboardEvent(source, 55 as CGKeyCode, true)
CGEventSetIntegerValueField(event, .KeyboardEventAutorepeat, 1)
CGEventPost(.CGHIDEventTap, event)
// Press Tab key once
let source = CGEventSourceCreate(.HIDSystemState)
let keyDown = CGEventCreateKeyboardEvent(source, 48 as CGKeyCode, true)
CGEventSetFlags(keyDown, .MaskCommand)
CGEventPost(.CGHIDEventTap, keyDown)
let keyUp = CGEventCreateKeyboardEvent(source, 48 as CGKeyCode, false)
CGEventPost(.CGHIDEventTap, keyUp)
Но это не работает! Есть идеи? Спасибо!
1 ответ
Решение
Флаг события отсутствует в событии keyup. добавлять CGEventSetFlags(keyUp, .MaskCommand)
до CGEventPost(.CGHIDEventTap, keyUp)
,