Qt 4.7.4:有没有方法可以查找大写锁定键的状态?

4

我知道在早期的Qt版本中(小于4.7.4),这个问题曾经存在过。现在这个问题已经得到了解决吗?


一些键盘甚至不报告大写锁定键的状态;Qt 可能不是唯一的问题。 - Carl Norum
看这里。[Qt - 密码字段][1]。此问题已在那里讨论过。 [1]: https://dev59.com/xXA85IYBdhLWcg3wCfDm - shan
1个回答

3

我不知道任何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项目文件中的LIBS中添加-lX11
我不确定如何在OS X上实现这一点。如果需要,请查看IOHIKeyboard及其alphaLock()函数。还可以参考此处,特别是函数darwinQueryHIDModifiers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接