handle xcb/xkb
[projets/fookb-qt.git] / xcbEventFilter.cpp
index b7e300b088194e5387174a67061ddee8da79a718..0141f77469f6b69ef77d32d59c9f43612778d722 100644 (file)
@@ -3,6 +3,9 @@
 #include <QDebug>
 
 #include <xcb/xcb.h>
 #include <QDebug>
 
 #include <xcb/xcb.h>
+#define explicit dont_use_cxx_explicit
+#include <xcb/xkb.h>
+#undef explicit
 
 XcbEventFilter::XcbEventFilter()
 {
 
 XcbEventFilter::XcbEventFilter()
 {
@@ -15,9 +18,17 @@ XcbEventFilter::~XcbEventFilter()
 bool XcbEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *)
 {
     if (eventType == "xcb_generic_event_t") {
 bool XcbEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *)
 {
     if (eventType == "xcb_generic_event_t") {
-        xcb_generic_event_t* ev = static_cast<xcb_generic_event_t *>(message);
+        xcb_generic_event_t *event = static_cast<xcb_generic_event_t *>(message);
+        uint response_type = event->response_type & ~0x80;
+
         qDebug() << "XCB Event";
         qDebug() << "XCB Event";
-        // ...
+        /* We are only interested in XCB_XKB_STATE_NOTIFY */
+        if (response_type ==  XCB_XKB_STATE_NOTIFY)
+        {
+            xcb_xkb_state_notify_event_t *kbd_event = reinterpret_cast<xcb_xkb_state_notify_event_t *>(event);
+
+            qDebug() << "XCB Mapping Event - group: " << kbd_event->group;
+        }
     }
     return false;
 }
     }
     return false;
 }