X-Git-Url: https://git.ralfj.de/multypo.git/blobdiff_plain/f10ceadf1f116abc5b5c4ec0b0e89096de9b1430:/qt/multikbd.cpp..1d03d11fb0aa8e3418597e7c1ab38f2b28d48924:/qt/static/gitweb.css diff --git a/qt/multikbd.cpp b/qt/multikbd.cpp deleted file mode 100644 index fb30f21..0000000 --- a/qt/multikbd.cpp +++ /dev/null @@ -1,91 +0,0 @@ -#include "multikbd.h" -#include "ui_multikbd.h" - -#include -#include - -#include -#include -#include - -MultiKBD::MultiKBD(QWidget *parent) : - QWidget(parent), - ui(new Ui::MultiKBD), - xiInited(false) -{ - ui->setupUi(this); -} - -MultiKBD::~MultiKBD() -{ - delete ui; -} - -void MultiKBD::showEvent ( QShowEvent * ) -{ - if (xiInited) return; - - Display *dpy = x11Info().display(); - - /* XInput Extension available? */ - int eventID, errorID; - if (!XQueryExtension(dpy, "XInputExtension", &xiOpcode, &eventID, &errorID)) { - qCritical() << "X Input extension not available"; - } - - /* Which version of XI2? We support 2.0 */ - int major = 2, minor = 0; - if (XIQueryVersion(dpy, &major, &minor) == BadRequest) { - qCritical() << "XI2 not available. Server supports" << major << "." << - minor; - } - - qDebug() << "System is sane"; - - - // Now let's listen to keypress events - XIEventMask eventmask; - unsigned char mask [1] = { 0 }; // will change - eventmask.deviceid = XIAllMasterDevices; - eventmask.mask_len = sizeof (mask); // in bytes, for whatever reason... - eventmask.mask = mask; - XISetMask(mask, XI_KeyPress); - XISelectEvents (dpy, winId(), &eventmask, 1); - - xiInited = true; - - /*activateWindow(); - raise(); - setFocus(Qt::OtherFocusReason);*/ -} - -void MultiKBD::handleKeyPress(int device, QString string) -{ - qDebug() << "Device" << device << "String" << string; -} - -bool MultiKBD::handleX11Event(XEvent *event) -{ - if (!xiInited) return false; - Display *dpy = x11Info().display(); - - if (event->xcookie.type == GenericEvent && event->xcookie.extension == xiOpcode - && event->xcookie.evtype == XI_KeyPress && XGetEventData(dpy, &event->xcookie)) { - - XIDeviceEvent *d_ev = (XIDeviceEvent*) event->xcookie.data; - KeyCode keycode = d_ev->detail; - int kbdid = d_ev->deviceid; - - if (!(d_ev->flags & XIKeyRepeat)) { - int keysyms_per_keycode; - KeySym keysym = XGetKeyboardMapping (dpy, keycode, 1, &keysyms_per_keycode)[0]; - handleKeyPress(kbdid, XKeysymToString(keysym)); - } - - XFreeEventData(dpy, &event->xcookie); - - return true; - } - - return false; -}