diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | libxklavier/xklavier_xkb.c | 18 |
2 files changed, 18 insertions, 6 deletions
@@ -1,3 +1,9 @@ +2011-01-29 svu + + * libxklavier/xklavier_xkb.c: checking that XInput is >=2, otherwise + DevicePresence may be missing. + https://bugzilla.gnome.org/show_bug.cgi?id=583709 + 2011-01-28 svu * libxklavier/xkl_config_registry.h, libxklavier/xklavier_config.c, diff --git a/libxklavier/xklavier_xkb.c b/libxklavier/xklavier_xkb.c index 7cb8e59..9ee41dc 100644 --- a/libxklavier/xklavier_xkb.c +++ b/libxklavier/xklavier_xkb.c @@ -621,13 +621,19 @@ xkl_xkb_init(XklEngine * engine) (display, "XInputExtension", &xi_opc, &xkl_engine_backend(engine, XklXkb, xi_event_type), &xkl_engine_backend(engine, XklXkb, xi_error_code))) { - xkl_debug(150, "XInputExtension found (%d, %d, %d)\n", - xi_opc, + XExtensionVersion *ev = + XGetExtensionVersion(display, "XInputExtension"); + xkl_debug(150, + "XInputExtension found (%d, %d, %d) version %d.%d\n", + xi_opc, xkl_engine_backend(engine, XklXkb, + xi_event_type), xkl_engine_backend(engine, XklXkb, - xi_event_type), - xkl_engine_backend(engine, XklXkb, - xi_error_code)); - xkl_engine_priv(engine, features) |= XKLF_DEVICE_DISCOVERY; + xi_error_code), + ev->major_version, ev->minor_version); + if (ev->major_version >= 2) + xkl_engine_priv(engine, features) |= + XKLF_DEVICE_DISCOVERY; + XFree(ev); } else { xkl_debug(0, "XInputExtension not found\n"); xkl_engine_backend(engine, XklXkb, xi_event_type) = -1; |