#include #include #include #include #include #include #include #include static const char *event_names[] = { "WSCONS_EVENT_KEY_UP", "WSCONS_EVENT_KEY_DOWN", "WSCONS_EVENT_ALL_KEYS_UP", "WSCONS_EVENT_MOUSE_UP", "WSCONS_EVENT_MOUSE_DOWN", "WSCONS_EVENT_MOUSE_DELTA_X", "WSCONS_EVENT_MOUSE_DELTA_Y", "WSCONS_EVENT_MOUSE_ABSOLUTE_X", "WSCONS_EVENT_MOUSE_ABSOLUTE_Y", "WSCONS_EVENT_MOUSE_DELTA_Z", "WSCONS_EVENT_MOUSE_ABSOLUTE_Z", "WSCONS_EVENT_SCREEN_SWITCH", "WSCONS_EVENT_ASCII", "WSCONS_EVENT_MOUSE_DELTA_W", "WSCONS_EVENT_MOUSE_ABSOLUTE_W", "WSCONS_EVENT_HSCROLL", "WSCONS_EVENT_VSCROLL" }; int main(int argc, char *argv[]) { if (argc == 2) { struct wscons_event e; int r; int wfd = open(argv[1],O_RDWR); if (wfd < 0) { errx(1, "open: %s", strerror(errno)); } while ((r = read(wfd, &e, sizeof(struct wscons_event))) > 0) { if (e.type > __arraycount(event_names)) { printf("%ld.%ld %d %d\n",e.time.tv_sec,e.time.tv_nsec,e.type,e.value); } else { printf("%ld.%ld %s %d\n",e.time.tv_sec,e.time.tv_nsec,event_names[e.type],e.value); } } close(wfd); } else { printf("wscons_event_dump WSCONS_DEVICE\n"); exit(1); } }