Локальный монитор NSEvent выдает неверный код - PullRequest
0 голосов
/ 02 февраля 2019

Я использую локальный монитор для наблюдения за ключевыми событиями.Тем не менее, я получаю неправильный код клавиши, когда модификаторы ⌥ и ⌥ активны, и одновременно нажимается клавиша с кодом 42.Код события в событии - 8, что на моей клавиатуре - C.Монитор событий используется в подклассе NSTextField для перехвата ключевых событий.

Это единственный случай, когда я до сих пор получаю неправильный код ключа.Я также пытался использовать CGEventTap, чтобы воспроизвести это, но keyCode всегда корректен при использовании CGEventTap.

Кто-нибудь когда-либо испытывал это?Это известная ошибка?

import Foundation import Cocoa

class FooTextField : NSTextField {

func initMonitor() {
    NSEvent.addLocalMonitorForEvents(matching: [.keyUp, .keyDown, .flagsChanged], handler: onKeyEvent)
}

private func onKeyEvent(_ e: NSEvent) -> NSEvent? {
    //prints 8 when key with keycode 42 is pressed and (⌥,⌘) are active.
    //the textfield seems to receives the correct keycode since a # appears for German keyboards
    print(e.keyCode)
    return e
}

}

...