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

objective-c – NSEvent修饰符标志 – 按住Shift和Caps-Lock时的错误?,第1张

概述我有一个NSEvent Keyboard钩子回调.我正在查看事件的修饰符标志,以判断该字母是否应该大写. 当Caps-Lock打开并按住shift键,然后按一个键……该键以大写字母形式出现,但SHIFT和CAPS标志都返回FALSE. //For testing which flags are on.//Holding down Shift and Caps for some reason = 我有一个NSEvent Keyboard钩子回调.我正在查看事件的修饰符标志,以判断该字母是否应该大写.

当Caps-Lock打开并按住shift键,然后按一个键……该键以大写字母形式出现,但SHIFT和CAPS标志都返回FALSE.

//For testing which flags are on.//Holding down Shift and Caps for some reason = FALSE FALSE...NSUInteger flags = [NSEvent modifIErFlags] & NSDeviceIndependentModifIErFlagsMask;if( flags == NSShiftKeyMask ){    NSLog(@"Shift - TRUE");} else {    NSLog(@"Shift - FALSE");}if( flags == NSAlphaShiftKeyMask ){    NSLog(@"CAPS - TRUE");} else {    NSLog(@"CAPS - FALSE");}return newUserKeypress;

所以,

-Cap-Lock打开(指示灯亮)

-Shift被压制住了

– 点击[e]键

– 输出为“E”

– 上面代码的输出为FALSE FALSE.

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

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

解决方法 你不想使用==,你需要使用按位运算符:

if( flags & NSShiftKeyMask ){...if( flags & NSAlphaShiftKeyMask ){
总结

以上是内存溢出为你收集整理的objective-c – NSEvent修饰符标志 – 按住Shift和Caps-Lock时的错误?全部内容,希望文章能够帮你解决objective-c – NSEvent修饰符标志 – 按住Shift和Caps-Lock时的错误?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1007505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存