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


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

1、首先我們先處理GPIO硬件層驅(qū)動(dòng)
gpio 引腳通??梢耘渲贸奢斎牒洼敵龉δ?。作為輸入功能,一般在 linux 系統(tǒng)里面是以中斷的方式來使用;如果作為輸出功能一般主要用來提供一個(gè)高低電平信號(hào)。
把按鍵輸入設(shè)計(jì)為輸入子系統(tǒng)的設(shè)備,輸入子系統(tǒng)的框架比較清晰,運(yùn)用起來較為簡(jiǎn)單,只需實(shí)現(xiàn)對(duì)應(yīng)的接口即可。主要為:模塊加載函數(shù)swkbd_init()、模塊卸載函數(shù)swkbd_exit()、中斷函數(shù)sw_isr_key()。
其中,模塊加載函數(shù)負(fù)責(zé)進(jìn)行輸入設(shè)備初始化及注冊(cè),中斷申請(qǐng)等操作;卸載函數(shù)負(fù)責(zé)進(jìn)行釋放中斷、解注冊(cè)輸入設(shè)備;中斷函數(shù)用于在按鍵按下時(shí),讀取當(dāng)前電壓,進(jìn)行鍵值映射,并將按鍵事件進(jìn)行上報(bào)。
修改映射源碼,按鍵映射文件位置:\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驅(qū)動(dòng)對(duì)應(yīng)的board-8726m-refc03.c中的
adc_kp_key[]對(duì)應(yīng)的鍵位添加自定義的鍵碼
如 :{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:
通過以上的更改,新的鍵值就添加上去了,注意上面標(biāo)紅色的數(shù)字表示必須相同的,另外由于更改了 KeyEvent,影響到了API, 所以需要make update-api
3、這樣上層客戶APP就可以通過keycode接管響應(yīng)自定義按鍵了。