Seite 1 von 1

nativeEventFilter

Verfasst: 12. April 2016 23:17
von vkohaupt
Hallo,
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 */*~
main.cpp

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();
}