nativeEventFilter

Alles rund um die Programmierung mit Qt
Antworten
vkohaupt
Beiträge: 5
Registriert: 21. Februar 2012 21:02

nativeEventFilter

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

Antworten