2016-11-30 9 views
1

In keyDown(with event: NSEvent) ist nach unten kann ich wissen, ob OPT, CMD, CTRL, Umschalttaste gedrückt werden, mit dem folgenden CodemacOS erkennen, ob Maustaste in 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) 
    ... 

Wie kann ich, wenn die linke Maustaste erkennen ist oben oder unten in keyDown?

Antwort

1

Wie Sie vielleicht bemerken, keyDown: Spuren Tastatur nicht Maus, so müssen Sie die Maus verfolgen. Dann:

Fangen Sie Mausereignisse ein und verfolgen Sie mouseDown:, setzen Sie eine Flagge darin, die Sie in mouseUp: zurücksetzen, dann testen Sie diese Flagge in Ihrem keyDown:.

----- ---- EDIT

Sie auch mit der Maus abfragen können (Polling ist nicht immer eine gute Idee sowieso) mit Methode pressedMouseButtons: von NSEvent.

+0

Ich mache diesen Weg, ich frage mich, ob es einen "Standard Weg" – Nisba

+0

Ich glaube, es ist der Standard Weg. Genauso wie Sie den Tastaturstatus nicht abfragen können, wenn die Mausereignisse auftreten, können Sie den Mausstatus nicht abrufen, wenn die Schlüsselereignisse auftreten :-) Es liegt an Ihnen, Variablen einzurichten, um sie zu koordinieren. –

+0

@LucaMarconato siehe meine Bearbeitung für die Umfrage. –