现在我直接从 /dev/input/eventX 读取。是否有一些库或 api 可以为我转换字节流?下面是我正在运行的代码,示例输入和输出。
int main (void)
{
struct input_event ev;
int fd, rd;
//Open Device
if ((fd = open ("/dev/input/event0", O_RDONLY)) == -1){
printf ("not a vaild device.\n");
return -1;
}
while (1){
memset((void*)&ev, 0, sizeof(ev));
rd = read (fd, (void*)&ev, sizeof(ev));
if (rd > 0 && ev.type==1){
printf("value: %d, code: %d\n", ev.value, ev.code);
}
}
如果我输入
XAL4
我得到:
value: 1, code: 42
value: 1, code: 45
value: 0, code: 42
value: 0, code: 45
value: 1, code: 42
value: 1, code: 30
value: 0, code: 42
value: 0, code: 30
value: 1, code: 42
value: 1, code: 38
value: 0, code: 42
value: 0, code: 38
value: 1, code: 5
value: 0, code: 5
我知道关键序列是:
KEY_DOWN: SHIFT
KEY_DOWN: X
KEY_UP: SHIFT
KEY_UP: X
KEY_DOWN: SHIFT
KEY_DOWN: A
KEY_UP: SHIFT
KEY_UP: A
KEY_DOWN: SHIFT
KEY_DOWN: L
KEY_UP: SHIFT
KEY_UP: L
KEY_DOWN: 4
KEY_UP: 4
是否有库或 api 可以为我将其转换为原始 ascii?