0

现在我直接从 /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

使用标题,https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/input-event-codes.h

我知道关键序列是:

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?

4

0 回答 0