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 

Reply via email to