input_event结构体描述(来自linux/input.h)

32

请问有人能告诉我input_event结构所使用的数据类型的属性是什么吗?

在input.h文件中如下定义:

struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};

但是没有其他的描述!即使谷歌搜索也没有给我任何有趣的结果。

我知道的唯一一件事是time会从纪元开始给出秒数或毫秒数,而value会给出按下按钮的代码。但是,连value属性的值对我来说都不是很清晰。在我的程序中,每次按键都会生成六个事件。以下事件是按ENTER键产生的响应:

type=4,code=4,value=458792
type=1,code=28,value=1
type=0,code=0,value=0
type=4,code=4,value=458792
type=1,code=28,value=0
type=0,code=0,value=0 

这些是用于a信件的。

type=4,code=4,value=458756
type=1,code=30,value=1
type=0,code=0,value=0
atype=4,code=4,value=458756
type=1,code=30,value=0
type=0,code=0,value=0

我想将值解码成实际字母,但我不理解这些属性的含义。

请帮忙!

1个回答

53
struct input_event是在include/linux/input.h中定义的。
来自Linux内核Documentation/input/input.txt中“5.事件接口”(经修改以提供正确的头文件名称):
  • time是时间戳,它返回事件发生时的时间。

  • type例如EV_REL表示相对移动,EV_KEY表示按键按下或释放。更多类型在include/linux/input-event-codes.h中定义。

  • code是事件代码,例如REL_XKEY_BACKSPACE,完整列表也在include/linux/input-event-codes.h中。

  • value是事件所携带的值。对于EV_REL,它是相对变化;对于EV_ABS(例如摇杆),它是绝对新值;对于释放的EV_KEY,值为0,按下的键为1,自动重复的键为2

要获取指南和示例代码,请搜索"linux kernel" "input subsystem"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接