I\'m familiar with C\'s select() function. I\'ve been using this function for many purposes. Most of them, if not all, for reading and writing
Can I ask a stupid question - are you sure there are really 8 bytes left?
Device nodes don't necessarily behave like normal files. It might be that you have to read the entire struct input_event in a single read() system call. (And if you don't read enough, the rest gets thrown away). A bit like recvmsg() on datagram sockets.