MTK 按鍵處理流程


主要簡單分析一下左右軟件的事件,以左軟鍵事件爲例


牽涉到的常用函數:


     void SetKeyHandler( FuncPtr funcPtr, U16 keyCode, U16 keyType );


     void SetLeftSoftkeyFunction( void (*f)(void), MMI_key_event_type k );


     void ChangeLeftSoftkey( U16 s, U16 i );


1.   SetKeyHandler與SetLeftSoftkeyFunction


     (1). SetKeyHandler


           主要作用就是將需要起作用的函數的指針(funcPtr)


        -->全局矩陣數組currKeyFuncPtrs[keyCode][keyType]的指定位置 ;


     (2). SetLeftSoftkeyFunction


           該函數內部主要流程:


           Step1. call register_left_softkey_handler( )


                  這個函數call SetKeyHandler: 存儲需要起作用的函數(left_softkey_down/left_softkey_up)


                      以left_softkey爲例, 該函數首先首先刷新按鍵區域圖像(redraw_softkey),


                  然後執行關聯函數(softkey_functions[key][k]).


           Step2. 在上一步裏我們會發現,softkey_functions[key][k]裏的函數指針沒有初始化


                  通過 call set_left_softkey_function(f, k);


                   --->softkey_functions[key][k] = f;


                  這樣,就成功的把按鍵按下/放開的作用函數與具體的動作關聯起來了。


           Step3. 最後call SetInputboxLSKFunction(f)


                  --->將上述函數與特定的輸入(如觸摸筆)關聯起來。


     (3). 以上兩個函數的主要區別:


           SetLeftSoftkeyFunction可以識別長按狀態並且可以關聯觸摸筆操作等。


2.   ChangeLeftSoftkey


     主要執行流程:


     Step1. call change_left_softkey: 設置左軟鍵圖表,文字


     Step2. redraw_softkey: 刷新左軟鍵顯示區域
本文來源於無聲無息 http://www.imeans.net/ , 原文地址:http://www.imeans.net/post/201004/43.html

 

發佈了81 篇原創文章 · 獲贊 6 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章