研維工業(yè)平板電腦pad支持自定義按鍵_無線手持終端按鍵按需定制功能
研維工業(yè)平板電腦pad支持自定義按鍵_無線手持終端按鍵按需定制功能
? ? ? 很多小伙伴,在選擇工業(yè)類安卓平板電腦、手持終端的時候,想要自定義平板電腦自帶的部分按鍵,如何實現(xiàn)呢?研維小編今天就為大家介紹一下安卓手持終端自定義按鍵開發(fā)、android平板電腦自定義實體按鍵這方面知識。
我們選擇一款8寸的安卓平板電腦,自帶2個自定義按鍵:


我們選擇一款8寸的安卓平板電腦,自帶2個自定義按鍵:

1、首先我們先處理GPIO硬件層驅動
gpio 引腳通??梢耘渲贸奢斎牒洼敵龉δ堋W鳛檩斎牍δ?,一般在 linux 系統(tǒng)里面是以中斷的方式來使用;如果作為輸出功能一般主要用來提供一個高低電平信號。
把按鍵輸入設計為輸入子系統(tǒng)的設備,輸入子系統(tǒng)的框架比較清晰,運用起來較為簡單,只需實現(xiàn)對應的接口即可。主要為:模塊加載函數(shù)swkbd_init()、模塊卸載函數(shù)swkbd_exit()、中斷函數(shù)sw_isr_key()。
? ? ? ? 其中,模塊加載函數(shù)負責進行輸入設備初始化及注冊,中斷申請等操作;卸載函數(shù)負責進行釋放中斷、解注冊輸入設備;中斷函數(shù)用于在按鍵按下時,讀取當前電壓,進行鍵值映射,并將按鍵事件進行上報。
修改映射源碼,按鍵映射文件位置:\android42\device\softwinner\smfy-super3\sw-keyboard.kl
編譯前需要修改Kconfig及Makefile文件。其源碼位置在:lichee/linux-3.4/drivers/input/keyboard/
2、處理framework
在*.kl文件中,添加新的鍵值信息:Example: key 100 MEDIA_PLAY_PAUSE
把100定義到input.h中#define KEY_PLAYPAUSE 100
/kernel/drivers/**/input/Adc_keypad.c驅動對應的board-8726m-refc03.c中的
adc_kp_key[]對應的鍵位添加自定義的鍵碼
如 :{KEY_PLAYPAUSE , "playpause", CHAN_5, 419, 60},
./frameworks/base/include/ui/keycodeLabels.h在數(shù)組static const KeycodeLabel KEYCODES[] 中添加 新定義的信息{ "PLAYPAUSE", 120 }
./ frameworks/base/native/include/android/Keycodes.h 枚舉類型 中添加
AKEYCODE_PLAYPAUSE = 120,在bool KeyEvent::isSystemKey(int32_t keyCode)()中,同樣需要添加:
case AKEYCODE_PLAYPAUSE:
通過以上的更改,新的鍵值就添加上去了,注意上面標紅色的數(shù)字表示必須相同的,另外由于更改了 KeyEvent,影響到了API, 所以需要make update-api
3、這樣上層客戶APP就可以通過keycode接管響應自定義按鍵了。