> + n = read(uinput_fd, (char *)&inp_event + offset, sizeof(inp_event) - offset); > + offset += n; > + if (offset < sizeof(inp_event)) { > + return; > + } Nit: you don't handle errors (I realize you're only here when select indicates read data is present, but still...) Cheers, Jeremy