Qt 4.7.4:有没有办法找出CAPS LOCK的状态?

时间:2012-03-22 21:34:13

标签: qt

我知道在< 4.7.4 Qt版本。这已经解决了吗?

1 个答案:

答案 0 :(得分:2)

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

但是这个代码应该适用于两个窗口(未经测试)和基于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