生活随笔
收集整理的這篇文章主要介紹了
Android下添加新的自定义键值和按键处理流程【转】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文轉載自:
Android下添加新的自定義鍵值和按鍵處理流程
說出來不怕大家笑話,我寫這篇博客的原因在于前幾天去一個小公司面試Android系統工程師,然后在面試的時候對方的技術總監問了我一個問題,請你詳細描述一下怎么在Android下添加自定義鍵值和詳細描述下Android的按鍵處理流程。現在回想起來當時回答的確實不是很好,乘著現在比較空閑的時機就來分析下上述的兩個問題。
??? 首先分析下Android下怎么添加新的自定義鍵值。在Android的原生系統中鍵值默認情況下是92個,從0-91;一般情況下,這些鍵值是夠用的,但是如果想擴充的話,還是需要添加新的鍵值的,那么如何將一個新的鍵值從驅動的設置映射到上層,使應用可以對我們自定義的鍵值進行相應的處理呢? 在介紹Android怎么添加新的鍵值以前先介紹下Android下INPUT子系統FLOW的流程,下面就是精簡的流程圖示意圖:
1.添加按鍵及其映射 1)如果系統有新的按鍵需要添加,瑪門是怎么添加并上報到系統上層去的呢(這里的上層主要指的是Android應用層),首先要確定的是我們的遙控設備是通過/dev/input目錄下那個event調用那個kl文件,這里可以通過如下命令超看cat /proc/bus/input/devices,下面是在終端下的打印信息
[cpp]?view plaincopy
<span?style="font-family:FangSong_GB2312;font-size:18px;">shell@orange:/?#?cat?/proc/bus/input/devices???I:?Bus=0018?Vendor=3697?Product=0001?Version=0001??N:?Name="MStar?Smart?TV?IR?Receiver"??P:?Phys=/dev/ir??S:?Sysfs=/devices/virtual/rc/rc0/input0??U:?Uniq=??H:?Handlers=kbd?event0???B:?PROP=0??B:?EV=13??B:?KEY=fc0000?0?fc900?142851?0?0?0?0?108000?1a8?c0000c01?9e37c0?48007?f8000000?10000ffc??B:?MSC=10????I:?Bus=0000?Vendor=0000?Product=0000?Version=0000??N:?Name="MCE?IR?Keyboard/Mouse?(ir)"??P:?Phys=/input0??S:?Sysfs=/devices/virtual/input/input1??U:?Uniq=??H:?Handlers=kbd?mouse0?event1???B:?PROP=0??B:?EV=100017??B:?KEY=30000?0?7?ff87207a?c14057ff?febeffdf?ffefffff?ffffffff?fffffffe??B:?REL=3??B:?MSC=10????shell@orange:/?#???shell@orange:/?#?</span>?? 通過打印信息我們可以知道,我們的終端設備使用的是Vendor_3697_Product_0001.kl文件,我這里只分析IT遙控設備,那我們的Vendor_3697_Product_0001.kl里面又是啥呢,我們可以通過cat命令查看,具體的信息如下:
[cpp]?view plaincopy
<span?style="font-family:FangSong_GB2312;font-size:18px;">#?Copyright?(C)?2010?The?Android?Open?Source?Project??#??#?Licensed?under?the?Apache?License,?Version?2.0?(the?"License");??#?you?may?not?use?this?file?except?in?compliance?with?the?License.??#?You?may?obtain?a?copy?of?the?License?at??#??#??????http://www.apache.org/licenses/LICENSE-2.0??#??#?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software??#?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS,??#?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied.??#?See?the?License?for?the?specific?language?governing?permissions?and??#?limitations?under?the?License.????#??#?MStar?Smart?TV?IR?Receiver.??#????key?116?????POWER???????????????????WAKE??key?11??????0??key?2???????1??key?3???????2??key?4???????3??key?5???????4??key?6???????5??key?7???????6??key?8???????7??key?9???????8??key?10??????9??key?398?????PROG_RED??key?399?????PROG_GREEN??key?400?????PROG_YELLOW??key?401?????PROG_BLUE??key?103?????DPAD_UP??key?108?????DPAD_DOWN??key?105?????DPAD_LEFT??key?106?????DPAD_RIGHT??key?28??????ENTER??key?402?????CHANNEL_UP??????????????WAKE_DROPPED??key?403?????CHANNEL_DOWN????????????WAKE_DROPPED??key?115?????VOLUME_UP???????????????WAKE_DROPPED??key?114?????VOLUME_DOWN?????????????WAKE_DROPPED??key?104?????PAGE_UP??key?109?????PAGE_DOWN??key?102?????HOME????????????????????WAKE_DROPPED??key?139?????MENU????????????????????WAKE_DROPPED??key?158?????BACK??key?113?????VOLUME_MUTE??key?167?????DVR??key?138?????GUIDE??key?358?????INFO??#key?82??????WINDOW??#key?79??????TV_INPUT??key?168?????MEDIA_REWIND??key?159?????MEDIA_FAST_FORWARD??key?165?????MEDIA_PREVIOUS??key?163?????MEDIA_NEXT??key?207?????MEDIA_PLAY??key?119?????MEDIA_PAUSE??key?128?????MEDIA_STOP????#?Common?extended??key?392?????SOUND_MODE??key?212?????PICTURE_MODE??key?372?????ASPECT_RATIO??key?363?????CHANNEL_RETURN??key?142?????SLEEP??key?365?????EPG??key?395?????LIST??#key?370?????SUBTITLE??key?466?????MTS??key?467?????FREEZE??key?468?????TTX??key?469?????CC??key?470?????TV_SETTING??key?471?????SCREENSHOT??key?356?????TV_POWER????#?Mstar?extended??key?59??????MSTAR_BALANCE??key?60??????MSTAR_INDEX??key?61??????MSTAR_HOLD??key?62??????MSTAR_UPDATE??key?63??????MSTAR_REVEAL??key?64??????MSTAR_SUBCODE??key?65??????MSTAR_SIZE??key?66??????MSTAR_CLOCK</span>?? ? ??
2)在Vendor_3697_Product_0001.kl文件中添加映射 key 123 WLS 說明: key?-- 是關鍵字。固定值,不需要改變。
? ? ?123?-- 該按鍵在linux驅動中對應的鍵值,我在這里只是假設的這個值,至于具體對應的是那個可以查看“include/linux/input.h”
? ? ?WLS?-- 123按鍵映射到Android中的按鍵,它對應是“KeycodeLabels.h”文件中的KEYCODES表格元素的“literal”值。
? ? ? ? 其中KeycodeLabels.h的定義如下,我們可以在"MSTAR_PVR_BROWSER", 319后面添加我們需要向Android上層拋的鍵值,我們這里定義為"WLS", 320,所以當Android上層監聽到320的按鍵值是就是我們新添加的鍵值了。
[cpp]?view plaincopy
<span?style="font-family:FangSong_GB2312;font-size:18px;">????#ifndef?_LIBINPUT_KEYCODE_LABELS_H??#define?_LIBINPUT_KEYCODE_LABELS_H??????#include?<android/keycodes.h>??????struct?KeycodeLabel?{??????const?char?*literal;??????int?value;??};??????static?const?KeycodeLabel?KEYCODES[]?=?{??????{?"SOFT_LEFT",?1?},??????{?"SOFT_RIGHT",?2?},??????{?"HOME",?3?},??????{?"BACK",?4?},??????{?"CALL",?5?},??????{?"ENDCALL",?6?},??????{?"0",?7?},??????{?"1",?8?},??????{?"2",?9?},??????{?"3",?10?},??????{?"4",?11?},??????{?"5",?12?},??????{?"6",?13?},??????{?"7",?14?},??????{?"8",?15?},??????{?"9",?16?},??????{?"STAR",?17?},??????{?"POUND",?18?},??????{?"DPAD_UP",?19?},??????{?"DPAD_DOWN",?20?},??????{?"DPAD_LEFT",?21?},??????{?"DPAD_RIGHT",?22?},??????{?"DPAD_CENTER",?23?},??????{?"VOLUME_UP",?24?},??????{?"VOLUME_DOWN",?25?},??????{?"POWER",?26?},??????{?"CAMERA",?27?},??????{?"CLEAR",?28?},??????{?"A",?29?},??????{?"B",?30?},??????{?"C",?31?},??????{?"D",?32?},??????{?"E",?33?},??????{?"F",?34?},??????{?"G",?35?},??????{?"H",?36?},??????{?"I",?37?},??????{?"J",?38?},??????{?"K",?39?},??????{?"L",?40?},??????{?"M",?41?},??????{?"N",?42?},??????{?"O",?43?},??????{?"P",?44?},??????{?"Q",?45?},??????{?"R",?46?},??????{?"S",?47?},??????{?"T",?48?},??????{?"U",?49?},??????{?"V",?50?},??????{?"W",?51?},??????{?"X",?52?},??????{?"Y",?53?},??????{?"Z",?54?},??????{?"COMMA",?55?},??????{?"PERIOD",?56?},??????{?"ALT_LEFT",?57?},??????{?"ALT_RIGHT",?58?},??????{?"SHIFT_LEFT",?59?},??????{?"SHIFT_RIGHT",?60?},??????{?"TAB",?61?},??????{?"SPACE",?62?},??????{?"SYM",?63?},??????{?"EXPLORER",?64?},??????{?"ENVELOPE",?65?},??????{?"ENTER",?66?},??????{?"DEL",?67?},??????{?"GRAVE",?68?},??????{?"MINUS",?69?},??????{?"EQUALS",?70?},??????{?"LEFT_BRACKET",?71?},??????{?"RIGHT_BRACKET",?72?},??????{?"BACKSLASH",?73?},??????{?"SEMICOLON",?74?},??????{?"APOSTROPHE",?75?},??????{?"SLASH",?76?},??????{?"AT",?77?},??????{?"NUM",?78?},??????{?"HEADSETHOOK",?79?},??????{?"FOCUS",?80?},??????{?"PLUS",?81?},??????{?"MENU",?82?},??????{?"NOTIFICATION",?83?},??????{?"SEARCH",?84?},??????{?"MEDIA_PLAY_PAUSE",?85?},??????{?"MEDIA_STOP",?86?},??????{?"MEDIA_NEXT",?87?},??????{?"MEDIA_PREVIOUS",?88?},??????{?"MEDIA_REWIND",?89?},??????{?"MEDIA_FAST_FORWARD",?90?},??????{?"MUTE",?91?},??????{?"PAGE_UP",?92?},??????{?"PAGE_DOWN",?93?},??????{?"PICTSYMBOLS",?94?},??????{?"SWITCH_CHARSET",?95?},??????{?"BUTTON_A",?96?},??????{?"BUTTON_B",?97?},??????{?"BUTTON_C",?98?},??????{?"BUTTON_X",?99?},??????{?"BUTTON_Y",?100?},??????{?"BUTTON_Z",?101?},??????{?"BUTTON_L1",?102?},??????{?"BUTTON_R1",?103?},??????{?"BUTTON_L2",?104?},??????{?"BUTTON_R2",?105?},??????{?"BUTTON_THUMBL",?106?},??????{?"BUTTON_THUMBR",?107?},??????{?"BUTTON_START",?108?},??????{?"BUTTON_SELECT",?109?},??????{?"BUTTON_MODE",?110?},??????{?"ESCAPE",?111?},??????{?"FORWARD_DEL",?112?},??????{?"CTRL_LEFT",?113?},??????{?"CTRL_RIGHT",?114?},??????{?"CAPS_LOCK",?115?},??????{?"SCROLL_LOCK",?116?},??????{?"META_LEFT",?117?},??????{?"META_RIGHT",?118?},??????{?"FUNCTION",?119?},??????{?"SYSRQ",?120?},??????{?"BREAK",?121?},??????{?"MOVE_HOME",?122?},??????{?"MOVE_END",?123?},??????{?"INSERT",?124?},??????{?"FORWARD",?125?},??????{?"MEDIA_PLAY",?126?},??????{?"MEDIA_PAUSE",?127?},??????{?"MEDIA_CLOSE",?128?},??????{?"MEDIA_EJECT",?129?},??????{?"MEDIA_RECORD",?130?},??????{?"F1",?131?},??????{?"F2",?132?},??????{?"F3",?133?},??????{?"F4",?134?},??????{?"F5",?135?},??????{?"F6",?136?},??????{?"F7",?137?},??????{?"F8",?138?},??????{?"F9",?139?},??????{?"F10",?140?},??????{?"F11",?141?},??????{?"F12",?142?},??????{?"NUM_LOCK",?143?},??????{?"NUMPAD_0",?144?},??????{?"NUMPAD_1",?145?},??????{?"NUMPAD_2",?146?},??????{?"NUMPAD_3",?147?},??????{?"NUMPAD_4",?148?},??????{?"NUMPAD_5",?149?},??????{?"NUMPAD_6",?150?},??????{?"NUMPAD_7",?151?},??????{?"NUMPAD_8",?152?},??????{?"NUMPAD_9",?153?},??????{?"NUMPAD_DIVIDE",?154?},??????{?"NUMPAD_MULTIPLY",?155?},??????{?"NUMPAD_SUBTRACT",?156?},??????{?"NUMPAD_ADD",?157?},??????{?"NUMPAD_DOT",?158?},??????{?"NUMPAD_COMMA",?159?},??????{?"NUMPAD_ENTER",?160?},??????{?"NUMPAD_EQUALS",?161?},??????{?"NUMPAD_LEFT_PAREN",?162?},??????{?"NUMPAD_RIGHT_PAREN",?163?},??????{?"VOLUME_MUTE",?164?},??????{?"INFO",?165?},??????{?"CHANNEL_UP",?166?},??????{?"CHANNEL_DOWN",?167?},??????{?"ZOOM_IN",?168?},??????{?"ZOOM_OUT",?169?},??????{?"TV",?170?},??????{?"WINDOW",?171?},??????{?"GUIDE",?172?},??????{?"DVR",?173?},??????{?"BOOKMARK",?174?},??????{?"CAPTIONS",?175?},??????{?"SETTINGS",?176?},??????{?"TV_POWER",?177?},??????{?"TV_INPUT",?178?},??????{?"STB_POWER",?179?},??????{?"STB_INPUT",?180?},??????{?"AVR_POWER",?181?},??????{?"AVR_INPUT",?182?},??????{?"PROG_RED",?183?},??????{?"PROG_GREEN",?184?},??????{?"PROG_YELLOW",?185?},??????{?"PROG_BLUE",?186?},??????{?"APP_SWITCH",?187?},??????{?"BUTTON_1",?188?},??????{?"BUTTON_2",?189?},??????{?"BUTTON_3",?190?},??????{?"BUTTON_4",?191?},??????{?"BUTTON_5",?192?},??????{?"BUTTON_6",?193?},??????{?"BUTTON_7",?194?},??????{?"BUTTON_8",?195?},??????{?"BUTTON_9",?196?},??????{?"BUTTON_10",?197?},??????{?"BUTTON_11",?198?},??????{?"BUTTON_12",?199?},??????{?"BUTTON_13",?200?},??????{?"BUTTON_14",?201?},??????{?"BUTTON_15",?202?},??????{?"BUTTON_16",?203?},??????{?"LANGUAGE_SWITCH",?204?},??????{?"MANNER_MODE",?205?},??????{?"3D_MODE",?206?},??????{?"CONTACTS",?207?},??????{?"CALENDAR",?208?},??????{?"MUSIC",?209?},??????{?"CALCULATOR",?210?},??????{?"ZENKAKU_HANKAKU",?211?},??????{?"EISU",?212?},??????{?"MUHENKAN",?213?},??????{?"HENKAN",?214?},??????{?"KATAKANA_HIRAGANA",?215?},??????{?"YEN",?216?},??????{?"RO",?217?},??????{?"KANA",?218?},??????{?"ASSIST",?219?},??????{?"BRIGHTNESS_DOWN",?220?},??????{?"BRIGHTNESS_UP",?221?},??????{?"MEDIA_AUDIO_TRACK",?222?},??????????????{?"SOUND_MODE",?251?},??????{?"PICTURE_MODE",?252?},??????{?"ASPECT_RATIO",?253?},??????{?"CHANNEL_RETURN",?254?},??????{?"SLEEP",?255?},??????{?"EPG",?256?},??????{?"LIST",?257?},??????{?"SUBTITLE",?258?},??????{?"FAVORITE",?259?},??????{?"MTS",?260?},??????{?"FREEZE",?261?},??????{?"TTX",?262?},??????{?"CC",?263?},??????{?"TV_SETTING",?264?},??????{?"SCREENSHOT",?265?},??????{?"CLOUD",?266?},??????{?"VOICE",?267?},??????{?"USB",?268?},??????{?"HDMI",?269?},??????{?"DISPLAY_MODE",?270?},??????{?"SONG_SYSTEM",?271?},??????{?"GINGA_BACK",?272},??????{?"NETFLIX",?273},??????{?"AMAZONE",?274},??????????{?"MSTAR_BALANCE",?301?},??????{?"MSTAR_INDEX",?302?},??????{?"MSTAR_HOLD",?303?},??????{?"MSTAR_UPDATE",?304?},??????{?"MSTAR_REVEAL",?305?},??????{?"MSTAR_SUBCODE",?306?},??????{?"MSTAR_SIZE",?307?},??????{?"MSTAR_CLOCK",?308?},??????{?"MSTAR_STORE_UP",?309?},??????{?"MSTAR_TRIANGLE_UP",?310?},??????{?"MSTAR_MOVIE",?311?},??????{?"MSTAR_FILE",?312?},??????{?"MSTAR_STAR_PLUS",?313?},??????{?"MSTAR_AUDIO_TRACK",?314?},??????{?"MSTAR_OPTIONAL_TIME",?315?},??????{?"MSTAR_LOOP",?316?},??????{?"MSTAR_INBOX",?317?},??????{?"MSTAR_VVOIP",?318?},??????{?"MSTAR_PVR_BROWSER",?319?},??????????{?"HAIER_TASK",?401?},??????{?"HAIER_USB",?402?},??????{?"HAIER_TOOLS",?403?},??????{?"HAIER_POWERSLEEP",?404?},??????{?"HAIER_WAKEUP",?405?},??????{?"HAIER_UNMUTE",?406?},??????{?"HAIER_CLEANSEARCH",?407?},??????????{?"KONKA_YPBPR",?501?},??????{?"KONKA_THREEPOINT_LOONPRESS",?502?},??????{?"KONKA_THREEPOINT_COLLECT",?503?},??????{?"KONKA_THREEPOINT_DISPERSE",?504?},??????{?"KONKA_VOICESWITCH",?505?},??????{?"KONKA_FLYIMEFINGER_SELECT",?506?},??????{?"KONKA_FLYIMEFINGER_CANCEL",?507?},??????{?"KONKA_SOUNDOUTPUT_ENABLE",?508?},??????{?"KONKA_SOUNDOUTPUT_DISABLE",?509?},??????{?"KONKA_BESTV_EXIT",?510?},??????{?"KONKA_BESTV_FORWARD",?511?},??????{?"KONKA_BESTV_BACKWARD",?512?},??????{?"KONKA_ENTER_FACTORY",?513?},??????{?"KONKA_FACTORY_BAKE_TV",?514?},??????????????????{?"TCL_MITV",?4001?},??????{?"TCL_USB_MENU",?4002?},??????{?"TCL_SWING_R1",?4003?},??????{?"TCL_SWING_R2",?4004?},??????{?"TCL_SWING_R3",?4005?},??????{?"TCL_SWING_R4",?4006?},??????{?"TCL_SWING_L1",?4007?},??????{?"TCL_SWING_L2",?4008?},??????{?"TCL_SWING_L3",?4009?},??????{?"TCL_SWING_L4",?4010},??????{?"TCL_WIDGET",?4011},??????{?"TCL_VGR_LEFT",?4012},??????{?"TCL_VGR_RIGHT",?4013?},??????{?"TCL_VGR_TAP",?4014?},??????{?"TCL_VGR_WAVE",?4015?},??????{?"TCL_VGR_WAVE_LEFT",?4016?},??????{?"TCL_VGR_WAVE_RIGHT",?4017?},??????{?"TCL_VGR_ACTIVE",?4018?},??????{?"TCL_VGR_DEACTIVE",?4019?},??????{?"TCL_BODY_SENSOR",?4020?},??????{?"TCL_CIRCLE_CLOCKWISE",?4021?},??????{?"TCL_CIRCLE_CTR_CLOCKWISE",?4022?},??????{?"TCL_GESTURE_X",?4023?},??????{?"TCL_GESTURE_ALPHA",?4024?},??????{?"TCL_GESTURE_MUTE",?4025?},??????{?"TCL_UP",?4026?},??????{?"TCL_DOWN",?4027?},??????{?"TCL_LEFT",?4028?},??????{?"TCL_RIGHT",?4029?},??????{?"TCL_UP_LEFT",?4030?},??????{?"TCL_UP_RIGHT",?4031?},??????{?"TCL_DOWN_LEFT",?4032?},??????{?"TCL_DOWN_RIGHT",?4033?},??????????{?"CHANGHONGIR_MUTE",?4101?},??????{?"CHANGHONGIR_INPUT",?4102?},??????{?"CHANGHONGIR_DEL",?4103?},??????{?"CHANGHONGIR_MENU",?4104?},??????{?"CHANGHONGIR_CORN",?4105?},??????{?"CHANGHONGIR_OK",?4106?},??????{?"CHANGHONGIR_FLCK_FU",?4107?},??????{?"CHANGHONGIR_FLCK_FD",?4108?},??????{?"CHANGHONGIR_FLCK_FL",?4109?},??????{?"CHANGHONGIR_FLCK_FR",?4110?},??????{?"CHANGHONGIR_FLCK_SU",?4111?},??????{?"CHANGHONGIR_FLCK_SD",?4112?},??????{?"CHANGHONGIR_FLCK_SL",?4113?},??????{?"CHANGHONGIR_FLCK_SR",?4114?},??????{?"CHANGHONGIR_PINCH",?4115?},??????{?"CHANGHONGIR_SPREAD",?4116?},??????{?"CHANGHONGIR_VOICE",?4117?},??????{?"CHANGHONGIR_HAND",?4118?},??????{?"CHANGHONGIR_3D",?4119?},??????{?"CHANGHONGIR_HELP",?4120?},??????{?"CHANGHONGIR_APP",?4121?},??????{?"CHANGHONGIR_MOUSE",?4122?},??????{?"CHANGHONGIR_EPG",?4123?},??????{?"CHANGHONGIR_HOME",?4124?},??????{?"CHANGHONGIR_SETTINGS",?4125?},??????????{?"HISENSE_G_SENSOR",?4201?},??????{?"HISENSE_LOW_BATTERY",?4202?},??????{?"HISENSE_SLIDEUP",?4203?},??????{?"HISENSE_SLIDEDOWN",?4204?},??????{?"HISENSE_SLIDELEFT",?4205?},??????{?"HISENSE_SLIDERIGHT",?4206?},??????{?"HISENSE_RAPID_SLIDEUP",?4207?},??????{?"HISENSE_RAPID_SLIDEDOWN",?4208?},??????{?"HISENSE_RAPID_SLIDELEFT",?4209?},??????{?"HISENSE_RAPID_SLIDERIGHT",?4210?},??????{?"HISENSE_FAC_NEC_M",?4211?},??????{?"HISENSE_FAC_NEC_IP",?4212?},??????{?"HISENSE_FAC_NEC_SAVE",?4213?},??????{?"HISENSE_FAC_NEC_3D",?4214?},??????{?"HISENSE_FAC_NEC_PC",?4215?},??????{?"HISENSE_FAC_NEC_LOGO",?4216?},??????{?"HISENSE_FAC_NEC_YPBPR",?4217?},??????{?"HISENSE_FAC_NEC_HDMI",?4218?},??????{?"HISENSE_FAC_NEC_F1",?4219?},??????{?"HISENSE_FAC_NEC_F2",?4220?},??????{?"HISENSE_FAC_NEC_F3",?4221?},??????{?"HISENSE_FAC_NEC_F4",?4222?},??????{?"HISENSE_FAC_NEC_F5",?4223?},??????{?"HISENSE_FAC_NEC_F6",?4224?},??????{?"HISENSE_FAC_NEC_F7",?4225?},??????{?"HISENSE_FAC_NEC_OK",?4226?},??????{?"HISENSE_FAC_NEC_MAC",?4227?},??????{?"HISENSE_FAC_NEC_AV",?4228?},??????{?"HISENSE_FAC_NEC_PATTERN",?4229?},??????{?"HISENSE_FAC_NEC_AGING",?4230?},??????{?"HISENSE_FAC_NEC_BALANCE",?4231?},??????{?"HISENSE_FAC_NEC_ADC",?4232?},??????{?"HISENSE_FAC_NEC_RDRV_INCREASE",?4233?},??????{?"HISENSE_FAC_NEC_RDRV_DECREASE",?4234?},??????{?"HISENSE_FAC_NEC_GDRV_INCREASE",?4235?},??????{?"HISENSE_FAC_NEC_GDRV_DECREASE",?4236?},??????{?"HISENSE_FAC_NEC_BDRV_INCREASE",?4237?},??????{?"HISENSE_FAC_NEC_BDRV_DECREASE",?4238?},??????{?"HISENSE_FAC_NEC_RCUT_INCREASE",?4239?},??????{?"HISENSE_FAC_NEC_RCUT_DECREASE",?4240?},??????{?"HISENSE_FAC_NEC_GCUT_INCREASE",?4241?},??????{?"HISENSE_FAC_NEC_GCUT_DECREASE",?4242?},??????{?"HISENSE_FAC_NEC_BCUT_INCREASE",?4243?},??????{?"HISENSE_FAC_NEC_BCUT_DECREASE",?4244?},??????{?"HISENSE_PRODUCT_SCAN_START",?4245?},??????{?"HISENSE_PRODUCT_SCAN_OVER",?4246?},??????{?"HISENSE_TEST_BROAD_TV",?4247?},??????{?"HISENSE_TEST_BROAD_DTV",?4248?},??????{?"HISENSE_TEST_BROAD_AV1",?4249?},??????{?"HISENSE_TEST_BROAD_AV2",?4250?},??????{?"HISENSE_TEST_BROAD_AV3",?4251?},??????{?"HISENSE_TEST_BROAD_SVIDEO1",?4252?},??????{?"HISENSE_TEST_BROAD_SVIDEO2",?4253?},??????{?"HISENSE_TEST_BROAD_SVIDEO3",?4254?},??????{?"HISENSE_TEST_BROAD_SCART1",?4255?},??????{?"HISENSE_TEST_BROAD_SCART2",?4256?},??????{?"HISENSE_TEST_BROAD_SCART3",?4257?},??????{?"HISENSE_TEST_BOARD_YPBPR1",?4258?},??????{?"HISENSE_TEST_BOARD_YPBPR2",?4259?},??????{?"HISENSE_TEST_BOARD_YPBPR3",?4260?},??????{?"HISENSE_TEST_BOARD_VGA",?4261?},??????{?"HISENSE_TEST_BOARD_HDMI1",?4262?},??????{?"HISENSE_TEST_BOARD_HDMI2",?4263?},??????{?"HISENSE_TEST_BOARD_HDMI3",?4264?},??????{?"HISENSE_TEST_BOARD_HDMI4",?4265?},??????{?"HISENSE_TEST_BOARD_HDMI5",?4266?},??????{?"HISENSE_TEST_BOARD_DMP",?4267?},??????{?"HISENSE_TEST_BOARD_EMP",?4268?},??????{?"HISENSE_TEST_BOARD_AUTOCOLOR",?4269?},??????{?"HISENSE_TEST_BOARD_SAVE",?4270?},??????{?"HISENSE_TEST_BOARD_TELITEXT",?4271?},??????{?"HISENSE_TEST_BOARD_SAPL",?4272?},??????{?"HISENSE_TEST_BOARD_VCHIP",?4273?},??????{?"HISENSE_TEST_BOARD_CCD",?4274?},??????{?"HISENSE_TEST_BOARD_BTSC",?4275?},??????{?"HISENSE_TEST_BOARD_FAC_OK",?4276?},??????????????????????????{?NULL,?0?}??};??????static?const?KeycodeLabel?FLAGS[]?=?{??????{?"WAKE",?0x00000001?},??????{?"WAKE_DROPPED",?0x00000002?},??????{?"SHIFT",?0x00000004?},??????{?"CAPS_LOCK",?0x00000008?},??????{?"ALT",?0x00000010?},??????{?"ALT_GR",?0x00000020?},??????{?"MENU",?0x00000040?},??????{?"LAUNCHER",?0x00000080?},??????{?"VIRTUAL",?0x00000100?},??????{?"FUNCTION",?0x00000200?},??????{?NULL,?0?}??};??????static?const?KeycodeLabel?AXES[]?=?{??????{?"X",?0?},??????{?"Y",?1?},??????{?"PRESSURE",?2?},??????{?"SIZE",?3?},??????{?"TOUCH_MAJOR",?4?},??????{?"TOUCH_MINOR",?5?},??????{?"TOOL_MAJOR",?6?},??????{?"TOOL_MINOR",?7?},??????{?"ORIENTATION",?8?},??????{?"VSCROLL",?9?},??????{?"HSCROLL",?10?},??????{?"Z",?11?},??????{?"RX",?12?},??????{?"RY",?13?},??????{?"RZ",?14?},??????{?"HAT_X",?15?},??????{?"HAT_Y",?16?},??????{?"LTRIGGER",?17?},??????{?"RTRIGGER",?18?},??????{?"THROTTLE",?19?},??????{?"RUDDER",?20?},??????{?"WHEEL",?21?},??????{?"GAS",?22?},??????{?"BRAKE",?23?},??????{?"DISTANCE",?24?},??????{?"TILT",?25?},??????{?"GENERIC_1",?32?},??????{?"GENERIC_2",?33?},??????{?"GENERIC_3",?34?},??????{?"GENERIC_4",?35?},??????{?"GENERIC_5",?36?},??????{?"GENERIC_6",?37?},??????{?"GENERIC_7",?38?},??????{?"GENERIC_8",?39?},??????{?"GENERIC_9",?40?},??????{?"GENERIC_10",?41?},??????{?"GENERIC_11",?42?},??????{?"GENERIC_12",?43?},??????{?"GENERIC_13",?44?},??????{?"GENERIC_14",?45?},??????{?"GENERIC_15",?46?},??????{?"GENERIC_16",?47?},??????????????????????{?NULL,?-1?}??};??????#endif?//?_LIBINPUT_KEYCODE_LABELS_H</span>?? 3)在/frameworks/native/include/android/keycodes.h中添加如下的 AKEYCODE_MSTAR_WLS ? ? ? ? ?= 320,下面看下該文件的定義
[cpp]?view plaincopy
<span?style="font-family:FangSong_GB2312;font-size:18px;">??#ifndef?_ANDROID_KEYCODES_H??#define?_ANDROID_KEYCODES_H??????#include?<sys/types.h>????#ifdef?__cplusplus??extern?"C"?{??#endif????enum?{??????AKEYCODE_UNKNOWN?????????=?0,??????AKEYCODE_SOFT_LEFT???????=?1,??????AKEYCODE_SOFT_RIGHT??????=?2,??????AKEYCODE_HOME????????????=?3,??????AKEYCODE_BACK????????????=?4,??????AKEYCODE_CALL????????????=?5,??????AKEYCODE_ENDCALL?????????=?6,??????AKEYCODE_0???????????????=?7,??????AKEYCODE_1???????????????=?8,??????AKEYCODE_2???????????????=?9,??????AKEYCODE_3???????????????=?10,??????AKEYCODE_4???????????????=?11,??????AKEYCODE_5???????????????=?12,??????AKEYCODE_6???????????????=?13,??????AKEYCODE_7???????????????=?14,??????AKEYCODE_8???????????????=?15,??????AKEYCODE_9???????????????=?16,??????AKEYCODE_STAR????????????=?17,??????AKEYCODE_POUND???????????=?18,??????AKEYCODE_DPAD_UP?????????=?19,??????AKEYCODE_DPAD_DOWN???????=?20,??????AKEYCODE_DPAD_LEFT???????=?21,??????AKEYCODE_DPAD_RIGHT??????=?22,??????AKEYCODE_DPAD_CENTER?????=?23,??????AKEYCODE_VOLUME_UP???????=?24,??????AKEYCODE_VOLUME_DOWN?????=?25,??????AKEYCODE_POWER???????????=?26,??????AKEYCODE_CAMERA??????????=?27,??????AKEYCODE_CLEAR???????????=?28,??????AKEYCODE_A???????????????=?29,??????AKEYCODE_B???????????????=?30,??????AKEYCODE_C???????????????=?31,??????AKEYCODE_D???????????????=?32,??????AKEYCODE_E???????????????=?33,??????AKEYCODE_F???????????????=?34,??????AKEYCODE_G???????????????=?35,??????AKEYCODE_H???????????????=?36,??????AKEYCODE_I???????????????=?37,??????AKEYCODE_J???????????????=?38,??????AKEYCODE_K???????????????=?39,??????AKEYCODE_L???????????????=?40,??????AKEYCODE_M???????????????=?41,??????AKEYCODE_N???????????????=?42,??????AKEYCODE_O???????????????=?43,??????AKEYCODE_P???????????????=?44,??????AKEYCODE_Q???????????????=?45,??????AKEYCODE_R???????????????=?46,??????AKEYCODE_S???????????????=?47,??????AKEYCODE_T???????????????=?48,??????AKEYCODE_U???????????????=?49,??????AKEYCODE_V???????????????=?50,??????AKEYCODE_W???????????????=?51,??????AKEYCODE_X???????????????=?52,??????AKEYCODE_Y???????????????=?53,??????AKEYCODE_Z???????????????=?54,??????AKEYCODE_COMMA???????????=?55,??????AKEYCODE_PERIOD??????????=?56,??????AKEYCODE_ALT_LEFT????????=?57,??????AKEYCODE_ALT_RIGHT???????=?58,??????AKEYCODE_SHIFT_LEFT??????=?59,??????AKEYCODE_SHIFT_RIGHT?????=?60,??????AKEYCODE_TAB?????????????=?61,??????AKEYCODE_SPACE???????????=?62,??????AKEYCODE_SYM?????????????=?63,??????AKEYCODE_EXPLORER????????=?64,??????AKEYCODE_ENVELOPE????????=?65,??????AKEYCODE_ENTER???????????=?66,??????AKEYCODE_DEL?????????????=?67,??????AKEYCODE_GRAVE???????????=?68,??????AKEYCODE_MINUS???????????=?69,??????AKEYCODE_EQUALS??????????=?70,??????AKEYCODE_LEFT_BRACKET????=?71,??????AKEYCODE_RIGHT_BRACKET???=?72,??????AKEYCODE_BACKSLASH???????=?73,??????AKEYCODE_SEMICOLON???????=?74,??????AKEYCODE_APOSTROPHE??????=?75,??????AKEYCODE_SLASH???????????=?76,??????AKEYCODE_AT??????????????=?77,??????AKEYCODE_NUM?????????????=?78,??????AKEYCODE_HEADSETHOOK?????=?79,??????AKEYCODE_FOCUS???????????=?80,???????AKEYCODE_PLUS????????????=?81,??????AKEYCODE_MENU????????????=?82,??????AKEYCODE_NOTIFICATION????=?83,??????AKEYCODE_SEARCH??????????=?84,??????AKEYCODE_MEDIA_PLAY_PAUSE=?85,??????AKEYCODE_MEDIA_STOP??????=?86,??????AKEYCODE_MEDIA_NEXT??????=?87,??????AKEYCODE_MEDIA_PREVIOUS??=?88,??????AKEYCODE_MEDIA_REWIND????=?89,??????AKEYCODE_MEDIA_FAST_FORWARD?=?90,??????AKEYCODE_MUTE????????????=?91,??????AKEYCODE_PAGE_UP?????????=?92,??????AKEYCODE_PAGE_DOWN???????=?93,??????AKEYCODE_PICTSYMBOLS?????=?94,??????AKEYCODE_SWITCH_CHARSET??=?95,??????AKEYCODE_BUTTON_A????????=?96,??????AKEYCODE_BUTTON_B????????=?97,??????AKEYCODE_BUTTON_C????????=?98,??????AKEYCODE_BUTTON_X????????=?99,??????AKEYCODE_BUTTON_Y????????=?100,??????AKEYCODE_BUTTON_Z????????=?101,??????AKEYCODE_BUTTON_L1???????=?102,??????AKEYCODE_BUTTON_R1???????=?103,??????AKEYCODE_BUTTON_L2???????=?104,??????AKEYCODE_BUTTON_R2???????=?105,??????AKEYCODE_BUTTON_THUMBL???=?106,??????AKEYCODE_BUTTON_THUMBR???=?107,??????AKEYCODE_BUTTON_START????=?108,??????AKEYCODE_BUTTON_SELECT???=?109,??????AKEYCODE_BUTTON_MODE?????=?110,??????AKEYCODE_ESCAPE??????????=?111,??????AKEYCODE_FORWARD_DEL?????=?112,??????AKEYCODE_CTRL_LEFT???????=?113,??????AKEYCODE_CTRL_RIGHT??????=?114,??????AKEYCODE_CAPS_LOCK???????=?115,??????AKEYCODE_SCROLL_LOCK?????=?116,??????AKEYCODE_META_LEFT???????=?117,??????AKEYCODE_META_RIGHT??????=?118,??????AKEYCODE_FUNCTION????????=?119,??????AKEYCODE_SYSRQ???????????=?120,??????AKEYCODE_BREAK???????????=?121,??????AKEYCODE_MOVE_HOME???????=?122,??????AKEYCODE_MOVE_END????????=?123,??????AKEYCODE_INSERT??????????=?124,??????AKEYCODE_FORWARD?????????=?125,??????AKEYCODE_MEDIA_PLAY??????=?126,??????AKEYCODE_MEDIA_PAUSE?????=?127,??????AKEYCODE_MEDIA_CLOSE?????=?128,??????AKEYCODE_MEDIA_EJECT?????=?129,??????AKEYCODE_MEDIA_RECORD????=?130,??????AKEYCODE_F1??????????????=?131,??????AKEYCODE_F2??????????????=?132,??????AKEYCODE_F3??????????????=?133,??????AKEYCODE_F4??????????????=?134,??????AKEYCODE_F5??????????????=?135,??????AKEYCODE_F6??????????????=?136,??????AKEYCODE_F7??????????????=?137,??????AKEYCODE_F8??????????????=?138,??????AKEYCODE_F9??????????????=?139,??????AKEYCODE_F10?????????????=?140,??????AKEYCODE_F11?????????????=?141,??????AKEYCODE_F12?????????????=?142,??????AKEYCODE_NUM_LOCK????????=?143,??????AKEYCODE_NUMPAD_0????????=?144,??????AKEYCODE_NUMPAD_1????????=?145,??????AKEYCODE_NUMPAD_2????????=?146,??????AKEYCODE_NUMPAD_3????????=?147,??????AKEYCODE_NUMPAD_4????????=?148,??????AKEYCODE_NUMPAD_5????????=?149,??????AKEYCODE_NUMPAD_6????????=?150,??????AKEYCODE_NUMPAD_7????????=?151,??????AKEYCODE_NUMPAD_8????????=?152,??????AKEYCODE_NUMPAD_9????????=?153,??????AKEYCODE_NUMPAD_DIVIDE???=?154,??????AKEYCODE_NUMPAD_MULTIPLY?=?155,??????AKEYCODE_NUMPAD_SUBTRACT?=?156,??????AKEYCODE_NUMPAD_ADD??????=?157,??????AKEYCODE_NUMPAD_DOT??????=?158,??????AKEYCODE_NUMPAD_COMMA????=?159,??????AKEYCODE_NUMPAD_ENTER????=?160,??????AKEYCODE_NUMPAD_EQUALS???=?161,??????AKEYCODE_NUMPAD_LEFT_PAREN?=?162,??????AKEYCODE_NUMPAD_RIGHT_PAREN?=?163,??????AKEYCODE_VOLUME_MUTE?????=?164,??????AKEYCODE_INFO????????????=?165,??????AKEYCODE_CHANNEL_UP??????=?166,??????AKEYCODE_CHANNEL_DOWN????=?167,??????AKEYCODE_ZOOM_IN?????????=?168,??????AKEYCODE_ZOOM_OUT????????=?169,??????AKEYCODE_TV??????????????=?170,??????AKEYCODE_WINDOW??????????=?171,??????AKEYCODE_GUIDE???????????=?172,??????AKEYCODE_DVR?????????????=?173,??????AKEYCODE_BOOKMARK????????=?174,??????AKEYCODE_CAPTIONS????????=?175,??????AKEYCODE_SETTINGS????????=?176,??????AKEYCODE_TV_POWER????????=?177,??????AKEYCODE_TV_INPUT????????=?178,??????AKEYCODE_STB_POWER???????=?179,??????AKEYCODE_STB_INPUT???????=?180,??????AKEYCODE_AVR_POWER???????=?181,??????AKEYCODE_AVR_INPUT???????=?182,??????AKEYCODE_PROG_RED????????=?183,??????AKEYCODE_PROG_GREEN??????=?184,??????AKEYCODE_PROG_YELLOW?????=?185,??????AKEYCODE_PROG_BLUE???????=?186,??????AKEYCODE_APP_SWITCH??????=?187,??????AKEYCODE_BUTTON_1????????=?188,??????AKEYCODE_BUTTON_2????????=?189,??????AKEYCODE_BUTTON_3????????=?190,??????AKEYCODE_BUTTON_4????????=?191,??????AKEYCODE_BUTTON_5????????=?192,??????AKEYCODE_BUTTON_6????????=?193,??????AKEYCODE_BUTTON_7????????=?194,??????AKEYCODE_BUTTON_8????????=?195,??????AKEYCODE_BUTTON_9????????=?196,??????AKEYCODE_BUTTON_10???????=?197,??????AKEYCODE_BUTTON_11???????=?198,??????AKEYCODE_BUTTON_12???????=?199,??????AKEYCODE_BUTTON_13???????=?200,??????AKEYCODE_BUTTON_14???????=?201,??????AKEYCODE_BUTTON_15???????=?202,??????AKEYCODE_BUTTON_16???????=?203,??????AKEYCODE_LANGUAGE_SWITCH?=?204,??????AKEYCODE_MANNER_MODE?????=?205,??????AKEYCODE_3D_MODE?????????=?206,??????AKEYCODE_CONTACTS????????=?207,??????AKEYCODE_CALENDAR????????=?208,??????AKEYCODE_MUSIC???????????=?209,??????AKEYCODE_CALCULATOR??????=?210,??????AKEYCODE_ZENKAKU_HANKAKU?=?211,??????AKEYCODE_EISU????????????=?212,??????AKEYCODE_MUHENKAN????????=?213,??????AKEYCODE_HENKAN??????????=?214,??????AKEYCODE_KATAKANA_HIRAGANA?=?215,??????AKEYCODE_YEN?????????????=?216,??????AKEYCODE_RO??????????????=?217,??????AKEYCODE_KANA????????????=?218,??????AKEYCODE_ASSIST??????????=?219,??????AKEYCODE_BRIGHTNESS_DOWN?=?220,??????AKEYCODE_BRIGHTNESS_UP???=?221,??????AKEYCODE_MEDIA_AUDIO_TRACK?=?222,??????????????AKEYCODE_SOUND_MODE?????????????????=?251,??????AKEYCODE_PICTURE_MODE???????????????=?252,??????AKEYCODE_ASPECT_RATIO???????????????=?253,??????AKEYCODE_CHANNEL_RETURN?????????????=?254,??????AKEYCODE_SLEEP??????????????????????=?255,??????AKEYCODE_EPG????????????????????????=?256,??????AKEYCODE_LIST???????????????????????=?257,??????AKEYCODE_SUBTITLE???????????????????=?258,??????AKEYCODE_FAVORITE???????????????????=?259,??????AKEYCODE_MTS????????????????????????=?260,??????AKEYCODE_FREEZE?????????????????????=?261,??????AKEYCODE_TTX????????????????????????=?262,??????AKEYCODE_CC?????????????????????????=?263,??????AKEYCODE_TV_SETTING?????????????????=?264,??????AKEYCODE_SCREENSHOT?????????????????=?265,??????AKEYCODE_CLOUD??????????????????????=?266,??????AKEYCODE_VOICE??????????????????????=?267,??????AKEYCODE_USB????????????????????????=?268,??????AKEYCODE_HDMI???????????????????????=?269,??????AKEYCODE_DISPLAY_MODE???????????????=?270,??????AKEYCODE_SONG_SYSTEM????????????????=?271,??????AKEYCODE_GINGA_BACK?????????????????=?272,??????AKEYCODE_NETFLIX????????????????????=?273,??????AKEYCODE_AMAZONE????????????????????=?274,??????????AKEYCODE_MSTAR_BALANCE??????????????=?301,??????AKEYCODE_MSTAR_INDEX????????????????=?302,??????AKEYCODE_MSTAR_HOLD?????????????????=?303,??????AKEYCODE_MSTAR_UPDATE???????????????=?304,??????AKEYCODE_MSTAR_REVEAL???????????????=?305,??????AKEYCODE_MSTAR_SUBCODE??????????????=?306,??????AKEYCODE_MSTAR_SIZE?????????????????=?307,??????AKEYCODE_MSTAR_CLOCK????????????????=?308,??????AKEYCODE_MSTAR_STORE_UP?????????????=?309,??????AKEYCODE_MSTAR_TRIANGLE_UP??????????=?310,??????AKEYCODE_MSTAR_MOVIE????????????????=?311,??????AKEYCODE_MSTAR_FILE?????????????????=?312,??????AKEYCODE_MSTAR_STAR_PLUS????????????=?313,??????AKEYCODE_MSTAR_AUDIO_TRACK??????????=?314,??????AKEYCODE_MSTAR_OPTIONAL_TIME????????=?315,??????AKEYCODE_MSTAR_LOOP?????????????????=?316,??????AKEYCODE_MSTAR_INBOX????????????????=?317,??????AKEYCODE_MSTAR_VVOIP????????????????=?318,??????AKEYCODE_MSTAR_PVR_BROWSER??????????=?319,??????????AKEYCODE_KONKA_YPBPR????????????????=?501,??????AKEYCODE_KONKA_THREEPOINT_LOONPRESS?=?502,??????AKEYCODE_KONKA_THREEPOINT_COLLECT???=?503,??????AKEYCODE_KONKA_THREEPOINT_DISPERSE??=?504,??????AKEYCODE_KONKA_VOICESWITCH??????????=?505,??????AKEYCODE_KONKA_FLYIMEFINGER_SELECT??=?506,??????AKEYCODE_KONKA_FLYIMEFINGER_CANCEL??=?507,??????AKEYCODE_KONKA_SOUNDOUTPUT_ENABLE???=?508,??????AKEYCODE_KONKA_SOUNDOUTPUT_DISABLE??=?509,??????AKEYCODE_KONKA_BESTV_EXIT???????????=?510,??????AKEYCODE_KONKA_BESTV_FORWARD????????=?511,??????AKEYCODE_KONKA_BESTV_BACKWARD???????=?512,??????AKEYCODE_KONKA_ENTER_FACTORY????????=?513,??????AKEYCODE_KONKA_FACTORY_BAKE_TV??????=?514,??????????AKEYCODE_HAIER_TASK?????????????????=?401,??????AKEYCODE_HAIER_TOOLS????????????????=?402,??????AKEYCODE_HAIER_POWERSLEEP???????????=?403,??????AKEYCODE_HAIER_WAKEUP???????????????=?404,??????AKEYCODE_HAIER_UNMUTE???????????????=?405,??????AKEYCODE_HAIER_CLEANSEARCH??????????=?406,????????????????AKEYCODE_TCL_MITV???????????????????=?4001,??????AKEYCODE_TCL_USB_MENU???????????????=?4002,??????AKEYCODE_TCL_SWING_R1???????????????=?4003,??????AKEYCODE_TCL_SWING_R2???????????????=?4004,??????AKEYCODE_TCL_SWING_R3???????????????=?4005,??????AKEYCODE_TCL_SWING_R4???????????????=?4006,??????AKEYCODE_TCL_SWING_L1???????????????=?4007,??????AKEYCODE_TCL_SWING_L2???????????????=?4008,??????AKEYCODE_TCL_SWING_L3???????????????=?4009,??????AKEYCODE_TCL_SWING_L4???????????????=?4010,??????AKEYCODE_TCL_WIDGET?????????????????=?4011,??????AKEYCODE_TCL_VGR_LEFT???????????????=?4012,??????AKEYCODE_TCL_VGR_RIGHT??????????????=?4013,??????AKEYCODE_TCL_VGR_TAP????????????????=?4014,??????AKEYCODE_TCL_VGR_WAVE???????????????=?4015,??????AKEYCODE_TCL_VGR_WAVE_LEFT??????????=?4016,??????AKEYCODE_TCL_VGR_WAVE_RIGHT?????????=?4017,??????AKEYCODE_TCL_VGR_ACTIVE?????????????=?4018,??????AKEYCODE_TCL_VGR_DEACTIVE???????????=?4019,??????AKEYCODE_TCL_BODY_SENSOR????????????=?4020,??????AKEYCODE_TCL_CIRCLE_CLOCKWISE???????=?4021,??????AKEYCODE_TCL_CIRCLE_CTR_CLOCKWISE???=?4022,??????AKEYCODE_TCL_GESTURE_X??????????????=?4023,??????AKEYCODE_TCL_GESTURE_ALPHA??????????=?4024,??????AKEYCODE_TCL_GESTURE_MUTE???????????=?4025,??????AKEYCODE_TCL_UP?????????????????????=?4026,??????AKEYCODE_TCL_DOWN???????????????????=?4027,??????AKEYCODE_TCL_LEFT???????????????????=?4028,??????AKEYCODE_TCL_RIGHT??????????????????=?4029,??????AKEYCODE_TCL_UP_LEFT????????????????=?4030,??????AKEYCODE_TCL_UP_RIGHT???????????????=?4031,??????AKEYCODE_TCL_DOWN_LEFT??????????????=?4032,??????AKEYCODE_TCL_DOWN_RIGHT?????????????=?4033,??????????AKEYCODE_CHANGHONGIR_MUTE???????????=?4101,??????AKEYCODE_CHANGHONGIR_INPUT??????????=?4102,??????AKEYCODE_CHANGHONGIR_DEL????????????=?4103,??????AKEYCODE_CHANGHONGIR_MENU???????????=?4104,??????AKEYCODE_CHANGHONGIR_CORN???????????=?4105,??????AKEYCODE_CHANGHONGIR_OK?????????????=?4106,??????AKEYCODE_CHANGHONGIR_FLCK_FU????????=?4107,??????AKEYCODE_CHANGHONGIR_FLCK_FD????????=?4108,??????AKEYCODE_CHANGHONGIR_FLCK_FL????????=?4109,??????AKEYCODE_CHANGHONGIR_FLCK_FR????????=?4110,??????AKEYCODE_CHANGHONGIR_FLCK_SU????????=?4111,??????AKEYCODE_CHANGHONGIR_FLCK_SD????????=?4112,??????AKEYCODE_CHANGHONGIR_FLCK_SL????????=?4113,??????AKEYCODE_CHANGHONGIR_FLCK_SR????????=?4114,??????AKEYCODE_CHANGHONGIR_PINCH??????????=?4115,??????AKEYCODE_CHANGHONGIR_SPREAD?????????=?4116,??????AKEYCODE_CHANGHONGIR_VOICE??????????=?4117,??????AKEYCODE_CHANGHONGIR_HAND???????????=?4118,??????AKEYCODE_CHANGHONGIR_3D?????????????=?4119,??????AKEYCODE_CHANGHONGIR_HELP???????????=?4120,??????AKEYCODE_CHANGHONGIR_APP????????????=?4121,??????AKEYCODE_CHANGHONGIR_MOUSE??????????=?4122,??????AKEYCODE_CHANGHONGIR_EPG????????????=?4123,??????AKEYCODE_CHANGHONGIR_HOME???????????=?4124,??????AKEYCODE_CHANGHONGIR_SETTINGS???????=?4125,??????????AKEYCODE_HISENSE_G_SENSOR???????????=?4201,??????AKEYCODE_HISENSE_LOW_BATTERY????????=?4202,??????AKEYCODE_HISENSE_SLIDEUP????????????=?4203,??????AKEYCODE_HISENSE_SLIDEDOWN??????????=?4204,??????AKEYCODE_HISENSE_SLIDELEFT??????????=?4205,??????AKEYCODE_HISENSE_SLIDERIGHT?????????=?4206,??????AKEYCODE_HISENSE_RAPID_SLIDEUP??????=?4207,??????AKEYCODE_HISENSE_RAPID_SLIDEDOWN????=?4208,??????AKEYCODE_HISENSE_RAPID_SLIDELEFT????=?4209,??????AKEYCODE_HISENSE_RAPID_SLIDERIGHT???=?4210,??????AKEYCODE_HISENSE_FAC_NEC_M??????????=?4211,??????AKEYCODE_HISENSE_FAC_NEC_IP?????????=?4212,??????AKEYCODE_HISENSE_FAC_NEC_SAVE???????=?4213,??????AKEYCODE_HISENSE_FAC_NEC_3D?????????=?4214,??????AKEYCODE_HISENSE_FAC_NEC_PC?????????=?4215,??????AKEYCODE_HISENSE_FAC_NEC_LOGO???????=?4216,??????AKEYCODE_HISENSE_FAC_NEC_YPBPR??????=?4217,??????AKEYCODE_HISENSE_FAC_NEC_HDMI???????=?4218,??????AKEYCODE_HISENSE_FAC_NEC_F1?????????=?4219,??????AKEYCODE_HISENSE_FAC_NEC_F2?????????=?4220,??????AKEYCODE_HISENSE_FAC_NEC_F3?????????=?4221,??????AKEYCODE_HISENSE_FAC_NEC_F4?????????=?4222,??????AKEYCODE_HISENSE_FAC_NEC_F5?????????=?4223,??????AKEYCODE_HISENSE_FAC_NEC_F6?????????=?4224,??????AKEYCODE_HISENSE_FAC_NEC_F7?????????=?4225,??????AKEYCODE_HISENSE_FAC_NEC_OK?????????=?4226,??????AKEYCODE_HISENSE_FAC_NEC_MAC????????=?4227,??????AKEYCODE_HISENSE_FAC_NEC_AV?????????=?4228,??????AKEYCODE_HISENSE_FAC_NEC_PATTERN????=?4229,??????AKEYCODE_HISENSE_FAC_NEC_AGING??????=?4230,??????AKEYCODE_HISENSE_FAC_NEC_BALANCE????=?4231,??????AKEYCODE_HISENSE_FAC_NEC_ADC????????=?4232,??????AKEYCODE_HISENSE_FAC_NEC_RDRV_INCREASE?=?4233,??????AKEYCODE_HISENSE_FAC_NEC_RDRV_DECREASE?=?4234,??????AKEYCODE_HISENSE_FAC_NEC_GDRV_INCREASE?=?4235,??????AKEYCODE_HISENSE_FAC_NEC_GDRV_DECREASE?=?4236,??????AKEYCODE_HISENSE_FAC_NEC_BDRV_INCREASE?=?4237,??????AKEYCODE_HISENSE_FAC_NEC_BDRV_DECREASE?=?4238,??????AKEYCODE_HISENSE_FAC_NEC_RCUT_INCREASE?=?4239,??????AKEYCODE_HISENSE_FAC_NEC_RCUT_DECREASE?=?4240,??????AKEYCODE_HISENSE_FAC_NEC_GCUT_INCREASE?=?4241,??????AKEYCODE_HISENSE_FAC_NEC_GCUT_DECREASE?=?4242,??????AKEYCODE_HISENSE_FAC_NEC_BCUT_INCREASE?=?4243,??????AKEYCODE_HISENSE_FAC_NEC_BCUT_DECREASE?=?4244,??????AKEYCODE_HISENSE_PRODUCT_SCAN_START?=?4245,??????AKEYCODE_HISENSE_PRODUCT_SCAN_OVER??=?4246,??????AKEYCODE_HISENSE_TEST_BROAD_TV??????=?4247,??????AKEYCODE_HISENSE_TEST_BROAD_DTV?????=?4248,??????AKEYCODE_HISENSE_TEST_BROAD_AV1?????=?4249,??????AKEYCODE_HISENSE_TEST_BROAD_AV2?????=?4250,??????AKEYCODE_HISENSE_TEST_BROAD_AV3?????=?4251,??????AKEYCODE_HISENSE_TEST_BROAD_SVIDEO1?=?4252,??????AKEYCODE_HISENSE_TEST_BROAD_SVIDEO2?=?4253,??????AKEYCODE_HISENSE_TEST_BROAD_SVIDEO3?=?4254,??????AKEYCODE_HISENSE_TEST_BROAD_SCART1??=?4255,??????AKEYCODE_HISENSE_TEST_BROAD_SCART2??=?4256,??????AKEYCODE_HISENSE_TEST_BROAD_SCART3??=?4257,??????AKEYCODE_HISENSE_TEST_BOARD_YPBPR1??=?4258,??????AKEYCODE_HISENSE_TEST_BOARD_YPBPR2??=?4259,??????AKEYCODE_HISENSE_TEST_BOARD_YPBPR3??=?4260,??????AKEYCODE_HISENSE_TEST_BOARD_VGA?????=?4261,??????AKEYCODE_HISENSE_TEST_BOARD_HDMI1???=?4262,??????AKEYCODE_HISENSE_TEST_BOARD_HDMI2???=?4263,??????AKEYCODE_HISENSE_TEST_BOARD_HDMI3???=?4264,??????AKEYCODE_HISENSE_TEST_BOARD_HDMI4???=?4265,??????AKEYCODE_HISENSE_TEST_BOARD_HDMI5???=?4266,??????AKEYCODE_HISENSE_TEST_BOARD_DMP?????=?4267,??????AKEYCODE_HISENSE_TEST_BOARD_EMP?????=?4268,??????AKEYCODE_HISENSE_TEST_BOARD_AUTOCOLOR?=?4269,??????AKEYCODE_HISENSE_TEST_BOARD_SAVE????=?4270,??????AKEYCODE_HISENSE_TEST_BOARD_TELITEXT?=?4271,??????AKEYCODE_HISENSE_TEST_BOARD_SAPL????=?4272,??????AKEYCODE_HISENSE_TEST_BOARD_VCHIP???=?4273,??????AKEYCODE_HISENSE_TEST_BOARD_CCD?????=?4274,??????AKEYCODE_HISENSE_TEST_BOARD_BTSC????=?4275,??????AKEYCODE_HISENSE_TEST_BOARD_FAC_OK??=?4276,????????????????};????#ifdef?__cplusplus??}??#endif????#endif?//?_ANDROID_KEYCODES_H??</span>?? ? ? ?
4)在frameworks/base/core/res/res/values/attrs.xml添加如下
? ? ? ? ?<enum name="KEYCODE_WLS" value="320" />
5)在?frameworks/base/core/java/android/view/KeyEvent.java添加對應的 public static final int KEYCODE_WLS = 320; 經過如上的步驟就將"123"按鍵和Android系統中的KEYCODE_WLS就對應起來了,注意這里的"123“鍵值并不是真正意義上的123鍵值,他只是linux驅動向上層拋出的鍵值。
6)在Android的framework層的鍵值處理函數中,捕獲按鍵,并進行相應處理。
在framework層的input系統中,加入對wifi按鍵的捕獲。
添加的文件是:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
添加的具體方法:在PhoneWindowManager.java的interceptKeyBeforeQueueing()函數中,不惑該鍵值,至于怎么處理處決您的業務處理了。 在這里再總結下我對Android鍵值處理的理解,我的理解:看了一下key character map的處理,是通過讀取kl文件然后使用驅動程序提供的ioctl函數去修改來自輸入設備的掃描碼和系統預定義的keycode的映射關系。 這樣的話,對于硬件掃描碼,只需要修改這個kl文件。上層得到的都是系統預定義的keycode。
重要補充:
映射關系: ir硬件掃描碼在驅動里面被 映射為 kernel/include/linux/input.h里面定義的某個鍵值。但是這個鍵值只在linux系統中使用。
Android通過源碼目錄下的device/xxx/xxx.kl( keylayout )文件完成linux鍵值到Android系統要使用的鍵值的映射
總結
以上是生活随笔為你收集整理的Android下添加新的自定义键值和按键处理流程【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。