我有一个NSEvent Keyboard钩子回调。我正在查看事件的修饰符标志,以判断该字母是否应该大写。
当Caps-Lock打开并按住shift键,然后按一个键...该键以大写字母形式出现,但SHIFT
和CAPS
标志都返回{{1 }}
FALSE
所以,
-Cap-Lock为ON(指示灯亮)
-Shift正在被压制
-Tap [e] key
- 输出为“E”
- 上面代码的输出为FALSE FALSE。
正确使用shift OR caps报告值。为什么没有正确报告它们?如果它们都关闭了......为什么这封信仍然被大写?
如果出于某种原因这是正确的...除了按住按键和按下按键之外,我怎么能告诉正常的按键呢? (它们具有相同的FALSE-FALSE标志)
答案 0 :(得分:11)
您不想使用==,您需要使用按位运算符:
if( flags & NSShiftKeyMask ){
...
if( flags & NSAlphaShiftKeyMask ){