MSM的mahimahi平台具有触摸屏,轨迹球和简易的按键,这些功能在Android中的
8.4.1 触摸屏,轨迹球和按键驱动程序
MSM的Mahimahi平台的用户输入设备包括了以下几个Event设备。
/dev/input/event4:几个按键
/dev/input/event2:触摸屏
/dev/input/event5:轨迹球
MSM触摸屏的驱动程序在drivers/input/touchscreen目录中的synaptics_i2c_rmi.c,这是一个i2c触摸屏的驱动程序。
MSM系统包含了按键和轨迹球的功能,具体的驱动程序在arch/arm/mach-msm/目录board-mahimahi-keypad.c文件中实现。
board-mahimahi-keypad.c中的全局定义如下所示:
实现包括了驱动程序和用户空间的内容。
按键和轨迹球是通过GPIO系统来实现的,因此定义了gpio_event_info类型的数组。"mahimahi-keypad"和"mahimahi-nav"分别是两个设备的名称。gpio_event_info 指针各式的数组mahimahi_input_info中包含了mahimahi_keypad_matrix_info.info,mahimahi_keypad_key_ info.info,jogball_x_axis.info.info和jogball_y_axis.info.info。
按键驱动是一个利用GPIO矩阵的驱动,由gpio_event_matrix_info矩阵定义,定义还需要包含按键的GPIO矩阵和input设备的信息,内容如下所示:
mahimahi_keypad_key_matrix _info和mahimahi_keypad _info是gpio_event_matrix_info类型的结构体,分别负责两个和一个按键的处理,实际上,MSM的Mahimahi平台基本上只有三个按键:Power,音量增加按键和音量减少按键。音量增加和音量减少的扫描码分别是KEY_VOLUMEUP(=115)和KEY_VOLUMEDOWN(=114)。
提示:音量控制的两个按键在全键盘的qwerty.kl有所定义,同时符合Linux的input设备和Android的按键标准。
轨迹球部分也是由GPIO实现的,由X方向和Y方向两部分组成,内容如下所示:
这里的轨迹球是用jog_axis_info类型的结构体进行定义的,这种设备的类型(type)是相对设备EV_REL。