linux中event按键程序

2019-07-13 01:59发布

嵌入式Linux设备中经常会使用按键,如果驱动遵循标准的linux input驱动,那么应用程序中该怎么获得按键的状态和键值呢?本文就来讲讲event input按键应用编程。 首先要包含头文件 #include
定义设备号 #define KEY_EVENT_DEV    "/dev/event0"
最重要的是struct input_event结构体 struct input_event { struct timeval time; //按键时间 __u16 type; //类型,在下面有定义 __u16 code; //要模拟成什么按键 __s32 value;//是按下还是释放 };
按键程序实例如下: void main() { int fd; struct input_event event; _mui_msg keymsg; memset(&keymsg, 0, sizeof(keymsg)); fd = open(KEY_EVENT_DEV, O_RDONLY); if (fd < 0) { perror("Open key device failed!"); return; } while (1) { read(fd, &event, sizeof(struct input_event)); if (event.type == EV_KEY) { printf("time: %ld %ld, type: %u, code: %x, value: %d ", event.time.tv_sec, event.time.tv_usec, event.type, event.code, event.value); if(event.value==0) { printf("key up! "); } else if(event.value==1) { printf("key down! "); } printf("key number is %x ",event.code); keymsg.keynumber = event.code; } } if (fd > 0) close(fd); }