【问题标题】:Capture modifier keys pressing ( Control, Alt, Shift o CMD )捕获修饰键按下(Control、Alt、Shift o CMD)
【发布时间】:2023-03-18 00:29:01
【问题描述】:

我知道如何检测按键。除 Control、Alt、Shift 和 CMD 之外的所有键。

如何检测何时按下此键。

提前致谢。

【问题讨论】:

    标签: objective-c macos keyboard


    【解决方案1】:

    如果您想在NSView 对象中检测这些键,请查看NSResponder 类。当您覆盖NSView 类(或其子类之一)时,您可以覆盖keyDown:(NSEvent *)theEvent(Apple Documentation)。当您调用[theEvent modifierFlags] 时,将返回一个NSUInteger 位域,然后您可以对其进行评估。

    例如,与

    if ([theEvent modifierFlags] & NSCommandKeyMask) {
       ...
    }
    
    您可以检查是否按下了 Command 键。

    有关详细信息,请参阅 Apple 的 Cocoa Event-handling Guide,尤其是“处理关键事件”部分。

    【讨论】:

    • 按下修饰键时不会捕捉到修饰键。这只会让您知道按下普通键时按下了哪个修饰键。
    【解决方案2】:

    - (void) flagsChanged: (NSEvent *)theEvent
    

    [theEvent keyCode]CRTLSHIFTALT 等提供一个数字,因此您只需为这些修饰符切换一个变量,在开始时设置为0

    如果你使用 OpenGL,你可能需要设置:

    -(BOOL) canBecomeKeyWindow
    

    【讨论】:

    • 请使用代码降价(`code`),换行并清楚一点。
    猜你喜欢
    • 2018-06-30
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多