2012-03-22 4 views
4

Я знаю, что раньше были проблемы с этим в < 4.7.4 версии Qt. это было разрешено?Qt 4.7.4: Есть ли способ узнать статус CAPS LOCK?

+0

Некоторые клавиатуры даже не сообщают о состоянии клавиши блокировки колпачков; Qt может быть не единственной проблемой. –

+0

Посмотрите это. [Qt - Поле пароля] [1]. Эта проблема уже обсуждалась там. [1]: http://stackoverflow.com/questions/2968336/qt-password-field – shan

ответ

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 не забудьте добавить -lX11 к LIBS в файле QMAKE проекта.

Я не знаю, как это сделать на OS X. Если вам это нужно, взгляните на IOHIKeyboard и его функцию alphaLock(). Также проверьте this, особенно функцию darwinQueryHIDModifiers.

Смежные вопросы