ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2010年12月13日 星期一

input - input_event, input_report_xx

根據 input event 的 type, 又包裝成: key, rel, abs, ff_status, switch, sync, mt_sync。 實際上,都只是 包裝 input_event: include/input.h: 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

沒有留言:

標籤

網誌存檔