+#ifdef WITH_XTEST
#include <X11/extensions/XTest.h>
+#endif
#include <msp/graphics/display_private.h>
#include "keys_private.h"
#include "synthesizer.h"
Synthesizer::Synthesizer(Graphics::Display &d):
display(d)
{
+#ifdef WITH_XEST
::Display *dpy = display.get_private().display;
int event_base;
int error_base;
int minor_ver;
if(!XTestQueryExtension(dpy, &event_base, &error_base, &major_ver, &minor_ver))
throw runtime_error("XTest is not supported");
+#else
+ throw unsupported("Input::Synthesizer");
+#endif
}
void Synthesizer::press_key(Key key)
{
+#ifdef WITH_XTEST
::Display *dpy = display.get_private().display;
unsigned code = XKeysymToKeycode(dpy, key_to_sys(key));
XTestFakeKeyEvent(dpy, code, true, CurrentTime);
+#else
+ (void)key;
+#endif
}
void Synthesizer::release_key(Key key)
{
+#ifdef WITH_XTEST
::Display *dpy = display.get_private().display;
unsigned code = XKeysymToKeycode(dpy, key_to_sys(key));
XTestFakeKeyEvent(dpy, code, false, CurrentTime);
+#else
+ (void)key;
+#endif
}
void Synthesizer::move_mouse_to(int x, int y)
{
+#ifdef WITH_XTEST
::Display *dpy = display.get_private().display;
XTestFakeMotionEvent(dpy, -1, x, y, CurrentTime);
+#else
+ (void)x;
+ (void)y;
+#endif
}
void Synthesizer::press_mouse_button(MouseButton button)
{
+#ifdef WITH_XTEST
::Display *dpy = display.get_private().display;
XTestFakeButtonEvent(dpy, button, true, CurrentTime);
+#else
+ (void)button;
+#endif
}
void Synthesizer::release_mouse_button(MouseButton button)
{
+#ifdef WITH_XTEST
::Display *dpy = display.get_private().display;
XTestFakeButtonEvent(dpy, button, false, CurrentTime);
+#else
+ (void)button;
+#endif
}
} // namespace Input