X-Git-Url: http://git.scottworley.com/keystroke-timestamps/blobdiff_plain/408b617b057a187fd2cef65fb46511318a267a99..3e0d7d46765815f9918fc4137dca50cb74dd6af8:/keystroke-timestamps.c?ds=sidebyside diff --git a/keystroke-timestamps.c b/keystroke-timestamps.c index 5a27279..3108678 100644 --- a/keystroke-timestamps.c +++ b/keystroke-timestamps.c @@ -9,6 +9,12 @@ #include #include +// This constant is defined in include/uapi/linux/input-event-codes.h +#ifndef EV_KEY +#define EV_KEY 0x01 +#endif + + int main (int argc, char **argv) { int print_usec = 0; @@ -34,6 +40,7 @@ int main (int argc, char **argv) if (c != 0) exit(EX_USAGE); } + /* Open output file */ FILE *output_file; if (output == NULL) { output_file = stdout; @@ -44,6 +51,7 @@ int main (int argc, char **argv) } } + /* Open device inputs */ fd_set all_inputs; FD_ZERO(&all_inputs); int maxfd = 0; @@ -67,10 +75,11 @@ int main (int argc, char **argv) } globfree(&glob_result); + /* Report keystroke timestamps */ struct input_event i; while (1) { fd_set ready_inputs = all_inputs; - if (select(maxfd+1, &ready_inputs, NULL, NULL, NULL) != 1) { + if (select(maxfd+1, &ready_inputs, NULL, NULL, NULL) < 1) { err(EX_IOERR, "select"); } for (int fd=0; fd <= maxfd; fd++) { @@ -82,7 +91,7 @@ int main (int argc, char **argv) if (read_return != sizeof(i)) { errx(EX_IOERR, "Unexpected EOF"); } - if (i.type == 1 && i.value == 1) { + if (i.type == EV_KEY && i.value == 1) { if (print_usec) { fprintf(output_file, "%ld.%06ld\n", i.time.tv_sec, i.time.tv_usec); } else {