2016-09-05 117 views
1

我使用检测的CapsLock键按下

QShortcut* capsKey = new QShortcut (Qt::Key_CapsLock,  this, SLOT(keyCaps())); 

然而,信号只能检测到每个其他时间,当CapsLock键从事(大写锁定指示灯是否点亮) - 而不是当它被禁用(大写锁定指示灯是否点亮关)

我该如何检测其他密钥? 感谢

[我使用Qt5.4在2014年的MacBook Pro]

回答

1

Caps Lock键可以是有趣的。我不知道到底发生了什么,但可以做出一些猜测。

在某些早期的Mac键盘上,按下时大写锁定键被物理锁定,因此直到第二次按键时才会生成释放代码。后来对没有物理锁的键盘的键处理程序可能会模拟相同的行为(以便那些期待它的旧应用程序仍能正常工作)。你的程序得到的将是一个新闻,然后是一个释放,当锁键被第二次击中时。如果是这种情况,只有一个按键可以检测,而不是两个。

某些平台允许用户关闭大写锁而不打大写锁定键(通常通过按下shift键)。在这些系统中可能根本没有第二次击中。