Can someone please tell me what are the properties of the datatypes used by the input_event structure?
It is defined as follows in the input.h file:
struct input_event {
struct timeval time;
__u16 type;
__u16 code;
__s32 value;
};
but there are no other descriptions! Even googling gave me nothing interesting.
The only thing I know is that time
gives seconds or miliseconds from epoch and value
gives code of pressed button. But even value of value
property isn't really clear for me. In my program every keystroke generates six events. Following events are response for pressing ENTER key:
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
and those are for a
letter:
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
I would like to decode value to the real letter, but I don't understand the meaning of the properties.
Please help!
The
struct input_event
is, among others, defined in include/linux/input.h.From 5. Event interface in Linux kernel Documentation/input/input.txt (and modified to provide the correct header file names):
time
is the timestamp, it returns the time at which the event happened.type
is for exampleEV_REL
for relative moment,EV_KEY
for a keypress or release. More types are defined in include/linux/input-event-codes.h.code
is event code, for exampleREL_X
orKEY_BACKSPACE
, again a complete list is in include/linux/input-event-codes.h.value
is the value the event carries. Either a relative change forEV_REL
, absolute new value forEV_ABS
(joysticks ...), or0
forEV_KEY
for release,1
for keypress and2
for autorepeat.For guides and example code, do a web search for
"linux kernel" "input subsystem"
.