summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier_xkb.c
diff options
context:
space:
mode:
Diffstat (limited to 'libxklavier/xklavier_xkb.c')
-rw-r--r--libxklavier/xklavier_xkb.c18
1 files changed, 12 insertions, 6 deletions
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;