main.c
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <linux/input.h> int main(int argc, char **argv) { int fd = -1; int valid = 0; struct input_event ev = {0}; fd = open(argv[1], O_RDONLY); if (fd > 0) { while (read(fd, &ev, sizeof(struct input_event))) { //printf("type:%d, code:%d, value:%d\n", ev.type, ev.code, ev.value); if (ev.type == EV_ABS) { if (ev.code == ABS_MT_TRACKING_ID) { valid = 1; printf("ID=%d, ", ev.value); } else if (ev.code == ABS_MT_POSITION_X) { valid = 1; printf("X=%d, ", ev.value); } else if (ev.code == ABS_MT_POSITION_Y) { valid = 1; printf("Y=%d, ", ev.value); } else if (ev.code == ABS_MT_PRESSURE) { valid = 1; printf("Pressure=%d, ", ev.value); } } else if (ev.type == EV_SYN) { if ((ev.code == ABS_Z) && (ev.value == 0)) { if (valid) { valid = 0; printf("\n"); } else { printf("Released\n"); } } } } close(fd); } return 0; }