2016-11-30 42 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查看我的投票編輯。 –