NSEvent修饰符标志 - 按住Shift和Caps-Lock时的错误?

时间:2011-09-13 03:45:25

标签: objective-c macos cocoa

我有一个NSEvent Keyboard钩子回调。我正在查看事件的修饰符标志,以判断该字母是否应该大写。

当Caps-Lock打开并按住shift键,然后按一个键...该键以大写字母形式出现,但SHIFTCAPS标志都返回{{1 }}

FALSE

所以,

-Cap-Lock为ON(指示灯亮)

-Shift正在被压制

-Tap [e] key

- 输出为“E”

- 上面代码的输出为FALSE FALSE。

正确使用shift OR caps报告值。为什么没有正确报告它们?如果它们都关闭了......为什么这封信仍然被大写?

如果出于某种原因这是正确的...除了按住按键和按下按键之外,我怎么能告诉正常的按键呢? (它们具有相同的FALSE-FALSE标志)

1 个答案:

答案 0 :(得分:11)

您不想使用==,您需要使用按位运算符:

if( flags & NSShiftKeyMask ){

...

if( flags & NSAlphaShiftKeyMask ){