refactor: sendevent to hide X11 deps, rename and move enums

This commit is contained in:
Mathias Panzenböck
2014-02-19 00:26:24 +01:00
parent cd97b1633e
commit c1647166a8
6 changed files with 115 additions and 97 deletions

View File

@ -1,21 +1,35 @@
#include <QX11Info>
#include "event.h"
//this should be initialized by main.cpp as soon as the program starts.
Display *display = 0;
//actually creates an XWindows event :)
void sendevent(Display* display, const xevent &e ) {
if (e.value1 == 0 && e.value2 == 0) return;
if (e.type == WARP) {
XTestFakeRelativeMotionEvent(display, e.value1, e.value2, 0);
}
else {
if (e.type == KREL || e.type == KPRESS) {
XTestFakeKeyEvent(display, e.value1, (e.type == KPRESS), 0);
}
else if (e.type == BREL || e.type == BPRESS) {
XTestFakeButtonEvent(display, e.value1, (e.type == BPRESS), 0);
}
void sendevent(const FakeEvent &e) {
Display* display = QX11Info::display();
switch (e.type) {
case FakeEvent::MouseMove:
if (e.move.x == 0 && e.move.y == 0) return;
XTestFakeRelativeMotionEvent(display, e.move.x, e.move.y, 0);
break;
case FakeEvent::KeyUp:
if (e.keycode == 0) return;
XTestFakeKeyEvent(display, e.keycode, false, 0);
break;
case FakeEvent::KeyDown:
if (e.keycode == 0) return;
XTestFakeKeyEvent(display, e.keycode, true, 0);
break;
case FakeEvent::MouseUp:
if (e.keycode == 0) return;
XTestFakeButtonEvent(display, e.keycode, false, 0);
break;
case FakeEvent::MouseDown:
if (e.keycode == 0) return;
XTestFakeButtonEvent(display, e.keycode, true, 0);
break;
}
XFlush(display);
}