handle xcb/xkb
This commit is contained in:
parent
40af227b7f
commit
ddf96521e4
|
@ -6,14 +6,16 @@
|
|||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
/* create qapp and QML engine */
|
||||
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QApplication app(argc, argv);
|
||||
QQmlApplicationEngine engine;
|
||||
engine.load(QUrl(QStringLiteral("qrc:/fookb.qml")));
|
||||
|
||||
// Install event filter to handle mapping change
|
||||
/* Install event filter to handle mapping change */
|
||||
XcbEventFilter eventFilter;
|
||||
app.installNativeEventFilter(&eventFilter);
|
||||
|
||||
/* run application */
|
||||
return app.exec();
|
||||
}
|
||||
|
|
|
@ -3,6 +3,9 @@
|
|||
#include <QDebug>
|
||||
|
||||
#include <xcb/xcb.h>
|
||||
#define explicit dont_use_cxx_explicit
|
||||
#include <xcb/xkb.h>
|
||||
#undef explicit
|
||||
|
||||
XcbEventFilter::XcbEventFilter()
|
||||
{
|
||||
|
@ -15,9 +18,17 @@ XcbEventFilter::~XcbEventFilter()
|
|||
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";
|
||||
// ...
|
||||
/* 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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue