MSM的mahimahi平臺具有觸摸屏,軌跡球和簡易的按鍵,這些功能在Android中的
8.4.1 觸摸屏,軌跡球和按鍵驅(qū)動程序
MSM的Mahimahi平臺的用戶輸入設備包括了以下幾個Event設備。
/dev/input/event4:幾個按鍵
/dev/input/event2:觸摸屏
/dev/input/event5:軌跡球
MSM觸摸屏的驅(qū)動程序在drivers/input/touchscreen目錄中的synaptics_i2c_rmi.c,這是一個i2c觸摸屏的驅(qū)動程序。
MSM系統(tǒng)包含了按鍵和軌跡球的功能,具體的驅(qū)動程序在arch/arm/mach-msm/目錄board-mahimahi-keypad.c文件中實現(xiàn)。
board-mahimahi-keypad.c中的全局定義如下所示:
實現(xiàn)包括了驅(qū)動程序和用戶空間的內(nèi)容。
按鍵和軌跡球是通過GPIO系統(tǒng)來實現(xiàn)的,因此定義了gpio_event_info類型的數(shù)組。"mahimahi-keypad"和"mahimahi-nav"分別是兩個設備的名稱。gpio_event_info 指針各式的數(shù)組mahimahi_input_info中包含了mahimahi_keypad_matrix_info.info,mahimahi_keypad_key_ info.info,jogball_x_axis.info.info和jogball_y_axis.info.info。
按鍵驅(qū)動是一個利用GPIO矩陣的驅(qū)動,由gpio_event_matrix_info矩陣定義,定義還需要包含按鍵的GPIO矩陣和input設備的信息,內(nèi)容如下所示:
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實現(xiàn)的,由X方向和Y方向兩部分組成,內(nèi)容如下所示:
這里的軌跡球是用jog_axis_info類型的結構體進行定義的,這種設備的類型(type)是相對設備EV_REL。