Какао: имитация команды + вкладка в 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),

Другие вопросы по тегам