unter Linux möchte ich die Maustasten abfragen, aber nicht im eigenen Fenster sondern Global also allgemein.
In der switch Afrage springt er aber immer nur ins default aber nie in XCB_BUTTON_RELEASE und XCB_BUTTON_PRESS.
Wie macht man es richtig?
test.pro
Code: Alles auswählen
TEMPLATE = app
TARGET = test
DEPENDPATH += .
INCLUDEPATH += .
# Input
SOURCES += main.cpp
QT += gui widgets
LIBS += -lxcb
QMAKE_CLEAN += $$TARGET */*~
Code: Alles auswählen
#include <xcb/xcb.h>
#include <QtGui>
#include <QApplication>
#include <QAbstractNativeEventFilter>
class MyXcbEventFilter : public QAbstractNativeEventFilter
{
protected:
virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE
{
if ( eventType == "xcb_generic_event_t" )
{
xcb_generic_event_t *event = static_cast<xcb_generic_event_t*>(message);
switch ( event->response_type & ~0x80 )
{
case XCB_BUTTON_PRESS:
{
qDebug() << "XCB_BUTTON_PRESS";
break;
}
case XCB_BUTTON_RELEASE:
{
qDebug() << "XCB_BUTTON_RELEASE";
break;
}
default:
{
qDebug() << "default";
break;
}
}
}
return false;
}
};
int main(int argc, char **argv)
{
QApplication app(argc, argv);
MyXcbEventFilter filter;
app.installNativeEventFilter(&filter);
return app.exec();
}