#include "xcbEventFilter.h" #include #include #include #define explicit dont_use_cxx_explicit #include #undef explicit XcbEventFilter::XcbEventFilter(QObject *favicon) { m_favicon = favicon; } XcbEventFilter::~XcbEventFilter() { } bool XcbEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *) { if (eventType == "xcb_generic_event_t") { /* We are only interested in XCB_XKB_STATE_NOTIFY */ xcb_xkb_state_notify_event_t *xkb_event = static_cast(message); //qDebug() << "XCB Event: " << xkb_event->any.response_type; if (xkb_event->xkbType == XCB_XKB_STATE_NOTIFY) { /* We get the event twice here. Not critical, but to investigate */ //qDebug() << "XCB Mapping Event - group: " << xkb_event->group << " - eventType: " << xkb_event->eventType; //qDebug() << "current icon: " << m_favicon->property("lang"); switch (xkb_event->group) { case 1: m_favicon->setProperty("lang", "fr"); break; case 0: default: m_favicon->setProperty("lang", "ru"); break; } } } return false; }