--- g15daemon/g15_uinput.c.orig 2006-11-14 09:34:57.000000000 +0200 +++ g15daemon/g15_uinput.c 2010-02-06 15:06:11.000000000 +0200 @@ -30,10 +30,10 @@ #include #include #include +#include #include #include #include -#include #include #ifdef HAVE_CONFIG_H @@ -101,11 +101,20 @@ struct input_event event; memset(&event, 0, sizeof(event)); + gettimeofday(&event.time, NULL); event.type = EV_KEY; event.code = code; event.value = G15KEY_DOWN; write (uinp_fd, &event, sizeof(event)); + + event.type = EV_SYN; + event.code = SYN_REPORT; + event.value = 0; + + write(uinp_fd, &event, sizeof(event)); + + daemon_log(LOG_DEBUG,"UINPUT device: G key pressed."); } void g15_uinput_keyup(unsigned char code) @@ -113,11 +122,20 @@ struct input_event event; memset(&event, 0, sizeof(event)); + gettimeofday(&event.time, NULL); event.type = EV_KEY; event.code = code; event.value = G15KEY_UP; write (uinp_fd, &event, sizeof(event)); + + event.type = EV_SYN; + event.code = SYN_REPORT; + event.value = 0; + + write(uinp_fd, &event, sizeof(event)); + + daemon_log(LOG_DEBUG,"UINPUT device: G key released."); } #endif