From: Julien Cristau <jcris...@debian.org> Reviewed-by: Mikhail Gusarov <dotted...@dottedmag.net> Reviewed-by: Eric Anholt <e...@anholt.net> Signed-off-by: Julien Cristau <jcris...@debian.org> --- configure.ac | 2 +- hw/kdrive/ephyr/hostx.c | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/configure.ac b/configure.ac index 2c9585d..db7ef7c 100644 --- a/configure.ac +++ b/configure.ac @@ -2116,7 +2116,7 @@ if test "$KDRIVE" = yes; then AC_DEFINE(KDRIVE_MOUSE, 1, [Enable KDrive mouse driver]) fi - XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm" + XEPHYR_REQUIRED_LIBS="x11 >= 1.6 $LIBXEXT xau xdmcp xcb x11-xcb xcb-shape xcb-aux xcb-image xcb-icccm xcb-shm xcb-keysyms" if test "x$XV" = xyes; then XEPHYR_REQUIRED_LIBS="$XEPHYR_REQUIRED_LIBS xv" fi diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c index 1261487..4bcc902 100644 --- a/hw/kdrive/ephyr/hostx.c +++ b/hw/kdrive/ephyr/hostx.c @@ -62,6 +62,7 @@ #include <xcb/shm.h> #include <xcb/xcb_image.h> #include <xcb/shape.h> +#include <xcb/xcb_keysyms.h> #ifdef XF86DRI #include <xcb/xf86dri.h> #include <xcb/glx.h> @@ -943,6 +944,10 @@ hostx_get_event(EphyrHostXEvent * ev) { XEvent xev; static int grabbed_screen = -1; + static xcb_key_symbols_t *keysyms; + + if (!keysyms) + keysyms = xcb_key_symbols_alloc(HostX.conn); if (XPending(HostX.dpy)) { XNextEvent(HostX.dpy, &xev); @@ -1007,11 +1012,9 @@ hostx_get_event(EphyrHostXEvent * ev) return 1; } case KeyRelease: - - if ((XKeycodeToKeysym(HostX.dpy, xev.xkey.keycode, 0) == XK_Shift_L - || XKeycodeToKeysym(HostX.dpy, xev.xkey.keycode, - 0) == XK_Shift_R) - && (xev.xkey.state & ControlMask)) { + if ((xcb_key_symbols_get_keysym(keysyms,xev.xkey.keycode, 0) == XK_Shift_L + || xcb_key_symbols_get_keysym(keysyms,xev.xkey.keycode, 0) == XK_Shift_R) + && (xev.xkey.state & XCB_MOD_MASK_CONTROL)) { struct EphyrHostScreen *host_screen = host_screen_from_window(xev.xexpose.window); -- 1.8.4.rc3 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel