2012-03-22 111 views
4

我知道< 4.7.4 Qt版本中存在此问题。有没有解决?Qt 4.7.4:有没有办法找出CAPS LOCK的状态?

+0

有些键盘甚至不报告大写锁定键的状态; Qt可能不是唯一的问题。 – 2012-03-22 21:37:35

+0

看到这个。 [Qt - 密码字段] [1]。这个问题已经在那里讨论过了。 [1]:http://stackoverflow.com/questions/2968336/qt-password-field – shan 2012-03-23 04:48:49

回答

2

我不知道任何Qt解决方案。

但是这个代码应该在Windows(未测试)和基于X11的操作系统上的工作(在Linux)

#include <X11/XKBlib.h> 
#include <QX11Info> 

bool capsOn() 
{ 
#ifdef Q_WS_WIN // MS Windows version 
    return GetKeyState(VK_CAPITAL) == 1; 
#elif Q_WS_X11 // X11 version 
    unsigned int n = 0; 
    Display *d = QX11Info::display(); 
    XkbGetIndicatorState(d, XkbUseCoreKbd, &n); 
    return (n & 0x01) == 1; 
#else 
# error Platform not supported 
#endif 
} 

在X11不要忘了在你的Qmake工程文件添加到-lX11 LIBS。

我不完全知道如何在OS X上执行此操作。如果需要,请查看IOHIKeyboard及其alphaLock()函数。还请检查this,特别是功能darwinQueryHIDModifiers

相关问题