2016-11-30 14 views
1

В keyDown(with event: NSEvent) я могу знать, если OPT, CMD, CTRL, Shift нажимаются, со следующим кодомMacos обнаружить, если кнопка мыши нажата в KeyDown

override func keyDown(with event: NSEvent) { 
    let shiftPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.shift.rawValue != 0) 
    let commandPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.command.rawValue != 0) 
    let optionPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.option.rawValue != 0) 
    let controlPressed = (event.modifierFlags.rawValue & NSEventModifierFlags.control.rawValue != 0) 
    ... 

Как я могу обнаружить, если левая кнопка мыши вверх или вниз внутри keyDown?

ответ

1

Как вы можете заметить, keyDown: отслеживает клавиатуру не мышь, поэтому вам нужно отслеживать мышь. Затем:

Поймать события мыши и дорожку mouseDown:, установить в нее флаг, который вы сбросили в mouseUp:, а затем проверить этот флаг в keyDown:.

----- EDIT ----

Вы также можете опрашивать мышь (опрос не всегда хорошая идея, так или иначе) методом pressedMouseButtons: из NSEvent.

+0

Я делаю так, интересно, был ли «стандартный способ» – Nisba

+0

Я верю, что это стандартный путь. Точно так же вы не можете запросить состояние клавиатуры, когда происходят события мыши, вы не можете опросить состояние мыши при возникновении ключевых событий :-) Вы должны настроить переменные для их координации. –

+0

@ LucaMarconato см. Мое редактирование для опроса. –