2013-05-22 50 views
16

有人能告訴我什麼是由input_event結構中使用的數據類型的屬性?input_event結構描述(從Linux/input.h)

它被定義爲在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 

我想值進行解碼,以真正的信,但我不明白的意思屬性。

請幫忙!

回答

33

struct input_event是,除其他外,include/linux/input.h定義。


從Linux內核5.事件接口Documentation/input/input.txt(和修改,以提供正確的頭文件名):

  • 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(遊戲杆...),或0EV_KEY爲 釋放,1的按鍵和2用於自動重複絕對新的價值。

有關指南和示例代碼,請執行網頁搜索"linux kernel" "input subsystem"