swift - macOS 在 KeyDown 中检测鼠标按钮是否按下

标签 swift macos keydown mousedown nsevent

keyDown(with event: NSEvent)中,我可以通过以下代码知道是否按下了OPT、CMD、CTRL、Shift

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 内鼠标左键是向上还是向下?

最佳答案

您可能会注意到,keyDown:跟踪键盘而不是鼠标,因此您需要跟踪鼠标。然后:

捕获鼠标事件并跟踪mouseDown: ,在其中设置一个标志,您可以在 mouseUp: 中重置该标志,然后在您的 keyDown: 中测试此标志.

-----编辑----

您还可以使用方法 pressedMouseButtons: 轮询鼠标(无论如何轮询并不总是一个好主意)的NSEvent .

关于swift - macOS 在 KeyDown 中检测鼠标按钮是否按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886732/

相关文章:

swift - UILabel SizetoFit 指定行数后?

ios - 无法将类型 'P?' 的返回表达式转换为返回类型 'UIViewController'

ios - Swift 5 闭包解释

swift - IOS10、Xcode 8.2 谷歌 Admob 问题

c++ - 过剩 - 按住一个键

macos - 如何确定 OS X 中的文件编码?

macos - 使用变量创建 Mac 终端脚本

c++ - 通过命令行在 OS X 上编译简单的 Hello World 程序

c# - WPF:ComboBox F4 键未在 KeyDown 事件中触发

javascript - 在文本字段中发生按键事件后检测输入文本字段的 "value"?