--- a/plugins/g15_plugin_uinput.c 2008-01-24 13:51:07.000000000 +0100 +++ b/plugins/g15_plugin_uinput.c 2010-04-30 00:02:57.309022997 +0200 @@ -125,6 +125,14 @@ static void g15_uinput_keydown(unsigned 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)); + } static void g15_uinput_keyup(unsigned char code) @@ -137,6 +145,13 @@ static void g15_uinput_keyup(unsigned ch 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)); } void (*keyup)(unsigned char code) = &g15_uinput_keyup;