嵌入式Linux设备中经常会使用按键,如果驱动遵循标准的linux input驱动,那么应用程序中该怎么获得按键的状态和键值呢?本文就来讲讲event input按键应用编程。
首先要包含头文件
#include <linux/input.h>
定义设备号
#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\n\n", event.time.tv_sec,
event.time.tv_usec, event.type, event.code, event.value);
if(event.value==0)
{
printf("key up!\n");
}
else if(event.value==1)
{
printf("key down!\n");
}
printf("key number is %x\n",event.code);
keymsg.keynumber = event.code;
}
}
if (fd > 0)
close(fd);
}