static inline void input_report_key(struct input_dev *dev, unsigned int code, int value)
{
input_event(dev, EV_KEY, code, !!value);
}
static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value)
{
input_event(dev, EV_REL, code, value);
}
static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value)
{
input_event(dev, EV_ABS, code, value);
}
static inline void input_report_ff_status(struct input_dev *dev, unsigned int code, int value)
{
input_event(dev, EV_FF_STATUS, code, value);
}
input_device 要register 之前,先要把自己的 input capability 設定好,再用 input_register_devie( ) 來註冊。
input capability 包括: input 的 種類 (mouse move, key event ..)。
key 的種類 (keycode. button code..)
有關
keycode 與實體 key 的 mapping ,和 hardware 相關,所以有些 作法會定義在 board driver.
所有的 KEY_XX constant 都定義在 include/linux/input.h
/* * Event types */ #define EV_SYN 0x00 #define EV_KEY 0x01 #define EV_REL 0x02 #define EV_ABS 0x03 #define EV_MSC 0x04 #define EV_SW 0x05 #define EV_LED 0x11 #define EV_SND 0x12 #define EV_REP 0x14 #define EV_FF 0x15 #define EV_PWR 0x16 #define EV_FF_STATUS 0x17 #define EV_MAX 0x1f #define EV_CNT (EV_MAX+1)
Android 基本的:
- KEY_MENU : 139
- KEY_BACK : 158
- KEY_ENTER : 28
沒有留言:
張貼留言