嵌入式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);
}