Существует известная ошибка, при которой выбор источников входного сигнала CJVK с помощью TISSelectInputSource не работает.
Решение kawa
имеет , в результате чего включает в себя использование ярлыка Select the previous input source
(по умолчанию CTRL-пробел).
Вот код, который я использовал для имитации ярлыка:
let spaceDown = CGEvent(keyboardEventSource: nil, virtualKey: UInt16(kVK_Space), keyDown: true)
let spaceUp = CGEvent(keyboardEventSource: nil, virtualKey: UInt16(kVK_Space), keyDown: false)
spaceDown?.flags = .maskControl
spaceUp?.flags = .maskControl
spaceDown?.post(tap: .cghidEventTap)
spaceUp?.post(tap: .cghidEventTap)
Однако, когда он запускается, отображается всплывающее окно источников ввода с клавиатуры ( вместо простого переключения источника):

Это меню отображается, когда вы удерживаете CTRL-Пробел, а не когда Вы просто активируете команду.
Забавное поведение, которое я заметил, состоит в том, что перемещение мыши или нажатие любой клавиши приводит к исчезновению всплывающего окна, что не является причиной, когда вы удерживаете CTRL- Пробел.
Вопрос в том, как получить реальный результат, который я хочу получить от излучения CGEvents?