Hi,
Please try this patch (also attached). It fixes the problem for me on
sid. Thanks to Julien Cristeau who gave me the hint on #debian-x.
Index: g15daemon/g15daemon/g15_uinput.c
===================================================================
--- g15daemon/g15daemon/g15_uinput.c (revision 526)
+++ g15daemon/g15daemon/g15_uinput.c (working copy)
@@ -106,6 +106,14 @@
event.value = G15KEY_DOWN;
write (uinp_fd, &event, sizeof(event));
+
+ /* Need to write sync event */
+ memset(&event, 0, sizeof(event));
+ event.type = EV_SYN;
+ event.code = SYN_REPORT;
+ event.value = 0;
+ write(uinp_fd, &event, sizeof(event));
+
}
void g15_uinput_keyup(unsigned char code)
@@ -118,6 +126,13 @@
event.value = G15KEY_UP;
write (uinp_fd, &event, sizeof(event));
+
+ /* Need to write sync event */
+ memset(&event, 0, sizeof(event));
+ event.type = EV_SYN;
+ event.code = SYN_REPORT;
+ event.value = 0;
+ write(uinp_fd, &event, sizeof(event));
}
#endif
Index: g15daemon/g15daemon/g15_uinput.c
===================================================================
--- g15daemon/g15daemon/g15_uinput.c (revision 526)
+++ g15daemon/g15daemon/g15_uinput.c (working copy)
@@ -106,6 +106,14 @@
event.value = G15KEY_DOWN;
write (uinp_fd, &event, sizeof(event));
+
+ /* Need to write sync event */
+ memset(&event, 0, sizeof(event));
+ event.type = EV_SYN;
+ event.code = SYN_REPORT;
+ event.value = 0;
+ write(uinp_fd, &event, sizeof(event));
+
}
void g15_uinput_keyup(unsigned char code)
@@ -118,6 +126,13 @@
event.value = G15KEY_UP;
write (uinp_fd, &event, sizeof(event));
+
+ /* Need to write sync event */
+ memset(&event, 0, sizeof(event));
+ event.type = EV_SYN;
+ event.code = SYN_REPORT;
+ event.value = 0;
+ write(uinp_fd, &event, sizeof(event));
}
#endif