summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kbd.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/kbd.c b/src/kbd.c
index e378dcc..be6948c 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -45,6 +45,10 @@
#include "xkbstr.h"
#include "xkbsrv.h"
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 23
+#define HAVE_THREADED_INPUT 1
+#endif
+
#define CAPSFLAG 1
#define NUMFLAG 2
#define SCROLLFLAG 4
@@ -352,7 +356,11 @@ KbdProc(DeviceIntPtr device, int what)
*/
if (pInfo->fd >= 0) {
xf86FlushInput(pInfo->fd);
+#if HAVE_THREADED_INPUT
+ xf86AddEnabledDevice(pInfo);
+#else
AddEnabledDevice(pInfo->fd);
+#endif
}
device->public.on = TRUE;
@@ -365,8 +373,13 @@ KbdProc(DeviceIntPtr device, int what)
/*
* Restore original keyboard directness and translation.
*/
- if (pInfo->fd != -1)
+ if (pInfo->fd != -1) {
+#if HAVE_THREADED_INPUT
+ xf86RemoveEnabledDevice(pInfo);
+#else
RemoveEnabledDevice(pInfo->fd);
+#endif
+ }
pKbd->KbdOff(pInfo, what);
device->public.on = FALSE;
break;