--- a/mouseemu.c 2021-01-11 16:44:11.242213686 +0100 +++ b/mouseemu.c 2021-01-11 16:45:42.351171654 +0100 @@ -80,6 +80,7 @@ static void send_event(int fd, int type, int code, int value) { struct input_event event; + struct timeval tv; if (fd < 0) return; @@ -87,7 +88,9 @@ event.type = type; event.code = code; event.value = value; - gettimeofday(&event.time, NULL); + gettimeofday(&tv, NULL); + event.input_event_sec = tv.tv_sec; + event.input_event_usec = tv.tv_usec; if (write(fd, &event, sizeof(event)) < sizeof(event)) perror("send_event"); @@ -197,7 +200,7 @@ return; if (!event_parse(inp.code, inp.value) && !is_modifier(inp)) { - last_key = (inp.time.tv_sec*1000000 + inp.time.tv_usec); + last_key = (inp.input_event_sec*1000000 + inp.input_event_usec); } /* I think its best not to pass scroll, or experiment with not passing the release if * we actually used it for scrolling (but some apps may get stuck?) @@ -228,7 +231,7 @@ report_scroll (inp.value); //printf("inp.value %d\n", inp.value); } else { - if ((inp.time.tv_sec*1000000+inp.time.tv_usec)-last_key > typing_block_delay*1000 + if ((inp.input_event_sec*1000000+inp.input_event_usec)-last_key > typing_block_delay*1000 || inp.type == EV_REL) passthrough(ui_mouse_fd, inp); }