remove todo
[projets/fookb-qt.git] / xcbEventFilter.cpp
1 #include "xcbEventFilter.h"
2 #include <QApplication>
3 #include <QDebug>
4
5 #include <xcb/xcb.h>
6 #define explicit dont_use_cxx_explicit
7 #include <xcb/xkb.h>
8 #undef explicit
9
10 XcbEventFilter::XcbEventFilter(QObject *favicon)
11 {
12     m_favicon = favicon;
13 }
14
15 XcbEventFilter::~XcbEventFilter()
16 {
17 }
18
19 bool XcbEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *)
20 {
21     if (eventType == "xcb_generic_event_t") {
22         /* We are only interested in XCB_XKB_STATE_NOTIFY */
23         xcb_xkb_state_notify_event_t *xkb_event = static_cast<xcb_xkb_state_notify_event_t *>(message);
24         //qDebug() << "XCB Event: " << xkb_event->any.response_type;
25         if (xkb_event->xkbType == XCB_XKB_STATE_NOTIFY) {
26             /* We get the event twice here. Not critical, but to investigate */
27             //qDebug() << "XCB Mapping Event - group: " << xkb_event->group << " - eventType: " << xkb_event->eventType;
28             //qDebug() << "current icon: " << m_favicon->property("lang");
29             switch (xkb_event->group)
30             {
31             case 1:
32                 m_favicon->setProperty("lang", "fr");
33                 break;
34             case 0:
35             default:
36                 m_favicon->setProperty("lang", "ru");
37                 break;
38             }
39         }
40     }
41     return false;
42 }