add xtest faking key support.

SVN revision: 34128
This commit is contained in:
Carsten Haitzler 2008-03-28 14:38:35 +00:00
parent 42d262f5f3
commit 0a0f8904f2
4 changed files with 67 additions and 3 deletions

View File

@ -283,6 +283,11 @@ if test "x$want_ecore_x_xcb" = "xyes" ; then
AC_DEFINE(ECORE_XCB_XPRINT, 1, [Build support for XCB xprint]) ],
[ have_ecore_x_xcb_xprint="no" ])
PKG_CHECK_MODULES(XCB_XTEST, xcb-xtest,
[ have_ecore_x_xcb_xtest="yes"
AC_DEFINE(ECORE_XCB_XTEST, 1, [Build support for XCB xtest]) ],
[ have_ecore_x_xcb_xtest="no" ])
AC_DEFINE(BUILD_ECORE_X, 1, [Build Ecore_X Module (XCB backend)])
AC_DEFINE(HAVE_ECORE_X_XCB, 1, [Defined to 1 if XCB backend is enabled.])
@ -365,6 +370,7 @@ if test "x$have_ecore_x_xcb" != "xyes" ; then
ECORE_CHECK_X_EXTENSION([Xprint], [Print.h], [Xp], [XpQueryScreens])
ECORE_CHECK_X_EXTENSION([Xrandr], [Xrandr.h], [Xrandr], [XRRSizes])
ECORE_CHECK_X_EXTENSION([Xrender], [Xrender.h], [Xrender], [XRenderFindVisualFormat])
ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent])
ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], [XScreenSaverSelectInput])
fi
fi
@ -835,9 +841,9 @@ echo " Ecore_Txt....................: $have_ecore_txt"
echo " Ecore_Evas...................: $have_ecore_evas"
if test "x$have_ecore_x_xcb" = "xyes" ; then
echo " Ecore_X (XCB backend)........: $have_ecore_x_xcb (Xprint: $have_ecore_x_xcb_xprint) (Xinerama: $have_ecore_x_xcb_xinerama) (Xrandr: $have_ecore_x_xcb_randr) (Xscreensaver: $have_ecore_x_xcb_screensaver) (Xshape: $have_ecore_x_xcb_shape) (Xsync: $have_ecore_x_xcb_sync) (Xrender: $have_ecore_x_xcb_render) (Xfixes: $have_ecore_x_xcb_xfixes) (Xcomposite: $have_ecore_x_xcb_composite) (Xdamage: $have_ecore_x_xcb_damage) (Xdpms: $have_ecore_x_xcb_dpms)"
echo " Ecore_X (XCB backend)........: $have_ecore_x_xcb (Xprint: $have_ecore_x_xcb_xprint) (Xinerama: $have_ecore_x_xcb_xinerama) (Xrandr: $have_ecore_x_xcb_randr) (Xscreensaver: $have_ecore_x_xcb_screensaver) (Xshape: $have_ecore_x_xcb_shape) (Xsync: $have_ecore_x_xcb_sync) (Xrender: $have_ecore_x_xcb_render) (Xfixes: $have_ecore_x_xcb_xfixes) (Xcomposite: $have_ecore_x_xcb_composite) (Xdamage: $have_ecore_x_xcb_damage) (Xdpms: $have_ecore_x_xcb_dpms) (Xtest $have_ecore_x_xcb_xtest)"
else
echo " Ecore_X (Xlib backend).......: $have_ecore_x (Xcursor: $use_Xcursor) (Xprint: $use_xprint) (Xinerama: $use_xinerama) (Xrandr: $use_xrandr) (Xscreensaver: $use_xss) (Xrender: $use_xrender) (Xcomposite: $use_xcomposite) (Xfixes: $use_xfixes) (Xdamage: $use_xdamage) (Xdpms: $use_xdpms)"
echo " Ecore_X (Xlib backend).......: $have_ecore_x (Xcursor: $use_Xcursor) (Xprint: $use_xprint) (Xinerama: $use_xinerama) (Xrandr: $use_xrandr) (Xscreensaver: $use_xss) (Xrender: $use_xrender) (Xcomposite: $use_xcomposite) (Xfixes: $use_xfixes) (Xdamage: $use_xdamage) (Xdpms: $use_xdpms) (Xtest $use_xtest)"
fi
echo " Ecore_Evas X11 Support.......: $have_ecore_evas_x11"
echo " Ecore_Evas X11 GL Support....: $have_ecore_evas_x11_gl"

View File

@ -1681,7 +1681,9 @@ EAPI void ecore_x_dpms_timeout_standby_set(unsigned int new_timeout
EAPI void ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
EAPI void ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
EAPI int ecore_x_test_fake_key_down(const char *key);
EAPI int ecore_x_test_fake_key_up(const char *key);
#ifdef __cplusplus
}
#endif

View File

@ -13,6 +13,7 @@ AM_CPPFLAGS = \
@XCB_XFIXES_CFLAGS@ \
@XCB_XINERAMA_CFLAGS@ \
@XCB_XPRINT_CFLAGS@ \
@XCB_XTEST_CFLAGS@ \
@XCB_CFLAGS@ \
-I$(top_srcdir)/src/lib/ecore \
-I$(top_srcdir)/src/lib/ecore_txt \
@ -30,6 +31,7 @@ AM_CPPFLAGS = \
@XRANDR_CFLAGS@ \
@XRENDER_CFLAGS@ \
@XSS_CFLAGS@ \
@XTEST_CFLAGS@ \
@x_cflags@ \
-I$(top_srcdir)/src/lib/ecore \
-I$(top_srcdir)/src/lib/ecore_txt \
@ -85,6 +87,7 @@ libecore_x_la_LIBADD = \
@XCB_XFIXES_LIBS@ \
@XCB_XINERAMA_LIBS@ \
@XCB_XPRINT_LIBS@ \
@XCB_XTEST_LIBS@ \
@XCB_LIBS@ \
$(top_builddir)/src/lib/ecore/libecore.la \
$(top_builddir)/src/lib/ecore_txt/libecore_txt.la
@ -130,6 +133,7 @@ ecore_x_screensaver.c \
ecore_x_dpms.c \
ecore_x_drawable.c \
ecore_x_cursor.c \
ecore_x_test.c \
ecore_x_private.h
libecore_x_la_LIBADD = \
@ -143,6 +147,7 @@ libecore_x_la_LIBADD = \
@XRANDR_LIBS@ \
@XRENDER_LIBS@ \
@XSS_LIBS@ \
@XTEST_LIBS@ \
@x_libs@ \
$(top_builddir)/src/lib/ecore/libecore.la \
$(top_builddir)/src/lib/ecore_txt/libecore_txt.la
@ -185,4 +190,5 @@ ecore_x_screensaver.c \
ecore_x_dpms.c \
ecore_x_drawable.c \
ecore_x_cursor.c \
ecore_x_test.c \
ecore_x_private.h

View File

@ -0,0 +1,50 @@
/*
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
#include "ecore_x_private.h"
#include "Ecore_X.h"
EAPI int
ecore_x_test_fake_key_down(const char *key)
{
#ifdef ECORE_XTEST
KeyCode keycode = 0;
KeySym keysym;
if (!strncmp(key, "Keycode-", 8))
keycode = atoi(key + 8);
else
{
keysym = XStringToKeysym(key);
if (keysym == NoSymbol) return 0;
keycode = XKeysymToKeycode(_ecore_x_disp, XStringToKeysym(key));
}
if (keycode == 0) return 0;
return XTestFakeKeyEvent(_ecore_x_disp, keycode, 1, 0);
#else
return 0;
#endif
}
EAPI int
ecore_x_test_fake_key_up(const char *key)
{
#ifdef ECORE_XTEST
KeyCode keycode = 0;
KeySym keysym;
if (!strncmp(key, "Keycode-", 8))
keycode = atoi(key + 8);
else
{
keysym = XStringToKeysym(key);
if (keysym == NoSymbol) return 0;
keycode = XKeysymToKeycode(_ecore_x_disp, XStringToKeysym(key));
}
if (keycode == 0) return 0;
return XTestFakeKeyEvent(_ecore_x_disp, keycode, 0, 0);
#else
return 0;
#endif
}