2016-09-05 146 views
1

我使用檢測的CapsLock鍵按下

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

然而,信號只能檢測到每個其他時間,當CapsLock鍵從事(大寫鎖定指示燈是否點亮) - 而不是當它被禁用(大寫鎖定指示燈是否點亮關)

我該如何檢測其他密鑰? 感謝

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

回答

1

Caps Lock鍵可以是有趣的。我不知道到底發生了什麼,但可以做出一些猜測。

在某些早期的Mac鍵盤上,按下時大寫鎖定鍵被物理鎖定,因此直到第二次按鍵時纔會生成釋放代碼。後來對沒有物理鎖的鍵盤的鍵處理程序可能會模擬相同的行爲(以便那些期待它的舊應用程序仍能正常工作)。你的程序得到的將是一個新聞,然後是一個釋放,當鎖鍵被第二次擊中時。如果是這種情況,只有一個按鍵可以檢測,而不是兩個。

某些平臺允許用戶關閉大寫鎖而不打大寫鎖定鍵(通常通過按下shift鍵)。在這些系統中可能根本沒有第二次擊中。