2016-11-30 144 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:中测试此标志。

-----编辑----

您也可以与NSEvent方法pressedMouseButtons:查询鼠标(轮询并不总是反正是个好主意)。

+0

我这样做,我不知道是否有一个“标准方式” – Nisba

+0

我相信这是标准的方式。与鼠标事件发生时无法查询键盘状态的方式相同,在发生按键事件时无法轮询鼠标状态:-)您需要设置变量以协调它们。 –

+0

@LucaMarconato查看我的投票编辑。 –