您的位置:首页 > 移动开发 > Android开发

Android下添加新的自定义键值和按键处理流程

2016-08-19 17:08 597 查看
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 plain
copy

print?

<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>



<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 plain
copy

print?

<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>



<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文件中添加映射
[align=left] key 123 WLS[/align]
[align=left] 说明:[/align]
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 plain
copy

print?

<span style="font-family:FangSong_GB2312;font-size:18px;">/*
* Copyright (C) 2008 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.
*/

#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 },
// MStar Android Patch Begin
// Common section, range 251-300
{ "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 section, range 301-400
{ "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 section, range 401-500
{ "HAIER_TASK", 401 },
{ "HAIER_USB", 402 },
{ "HAIER_TOOLS", 403 },
{ "HAIER_POWERSLEEP", 404 },
{ "HAIER_WAKEUP", 405 },
{ "HAIER_UNMUTE", 406 },
{ "HAIER_CLEANSEARCH", 407 },
// Konka section, range 501-600
{ "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 },
// Skyworth section, range 601-700

// Tcl section, range 4001-4099
{ "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 },
// Changhong section, range 4101-4199
{ "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 section, range 4201-4299
{ "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 },
// MStar Android Patch End

// NOTE: If you add a new keycode here you must also add it to several other files.
// Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.

{ NULL, 0 }
};

// NOTE: If you edit these flags, also edit policy flags in Input.h.
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 },

// NOTE: If you add a new axis here you must also add it to several other files.
// Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list.

{ NULL, -1 }
};

#endif // _LIBINPUT_KEYCODE_LABELS_H</span>



<span style="font-family:FangSong_GB2312;font-size:18px;">/*
 * Copyright (C) 2008 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.
 */

#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 },
    // MStar Android Patch Begin
    // Common section, range 251-300
    { "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 section, range 301-400
    { "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 section, range 401-500
    { "HAIER_TASK", 401 },
    { "HAIER_USB", 402 },
    { "HAIER_TOOLS", 403 },
    { "HAIER_POWERSLEEP", 404 },
    { "HAIER_WAKEUP", 405 },
    { "HAIER_UNMUTE", 406 },
    { "HAIER_CLEANSEARCH", 407 },
    // Konka section, range 501-600
    { "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 },
    // Skyworth section, range 601-700

    // Tcl section, range 4001-4099
    { "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 },
    // Changhong section, range 4101-4199
    { "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 section, range 4201-4299
    { "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 },
    // MStar Android Patch End

    // NOTE: If you add a new keycode here you must also add it to several other files.
    //       Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.

    { NULL, 0 }
};

// NOTE: If you edit these flags, also edit policy flags in Input.h.
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 },

    // NOTE: If you add a new axis here you must also add it to several other files.
    //       Refer to frameworks/base/core/java/android/view/MotionEvent.java for the full list.

    { NULL, -1 }
};

#endif // _LIBINPUT_KEYCODE_LABELS_H</span>



3)
在/frameworks/native/include/android/keycodes.h中添加如下的
[align=left] AKEYCODE_MSTAR_WLS = 320,下面看下该文件的定义[/align]

[cpp]
view plain
copy

print?

<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.
*/

#ifndef _ANDROID_KEYCODES_H
#define _ANDROID_KEYCODES_H

/******************************************************************
*
* IMPORTANT NOTICE:
*
* This file is part of Android's set of stable system headers
* exposed by the Android NDK (Native Development Kit).
*
* Third-party source AND binary code relies on the definitions
* here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
*
* - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
* - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
* - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
* - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
*/

#include <sys/types.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
* Key codes.
*/
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, // *Camera* focus
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,
// MStar Android Patch Begin
// Common section, range 251-300
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,
// Mstar section, range 301-400
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,
// Konka section, range 501-600
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,
// Haier section, range 401-500
AKEYCODE_HAIER_TASK = 401,
AKEYCODE_HAIER_TOOLS = 402,
AKEYCODE_HAIER_POWERSLEEP = 403,
AKEYCODE_HAIER_WAKEUP = 404,
AKEYCODE_HAIER_UNMUTE = 405,
AKEYCODE_HAIER_CLEANSEARCH = 406,
// Skyworth section, range 601-700

// Tcl section, range 4001-4100
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,
// Changhong section, range 4101-4200
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,
// Hisense section, range 4201-4300
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,
// MStar Android Patch End

// NOTE: If you add a new keycode here you must also add it to several other files.
// Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
};

#ifdef __cplusplus
}
#endif

#endif // _ANDROID_KEYCODES_H
</span>



<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.
*/

#ifndef _ANDROID_KEYCODES_H
#define _ANDROID_KEYCODES_H

/******************************************************************
*
* IMPORTANT NOTICE:
*
*   This file is part of Android's set of stable system headers
*   exposed by the Android NDK (Native Development Kit).
*
*   Third-party source AND binary code relies on the definitions
*   here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
*
*   - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
*   - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
*   - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
*   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
*/

#include <sys/types.h>

#ifdef __cplusplus
extern "C" {
#endif

/*
* Key codes.
*/
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,   // *Camera* focus
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,
// MStar Android Patch Begin
// Common section, range 251-300
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,
// Mstar section, range 301-400
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,
// Konka section, range 501-600
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,
// Haier section, range  401-500
AKEYCODE_HAIER_TASK                 = 401,
AKEYCODE_HAIER_TOOLS                = 402,
AKEYCODE_HAIER_POWERSLEEP           = 403,
AKEYCODE_HAIER_WAKEUP               = 404,
AKEYCODE_HAIER_UNMUTE               = 405,
AKEYCODE_HAIER_CLEANSEARCH          = 406,
// Skyworth section, range 601-700

// Tcl section, range 4001-4100
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,
// Changhong section, range 4101-4200
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,
// Hisense section, range 4201-4300
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,
// MStar Android Patch End

// NOTE: If you add a new keycode here you must also add it to several other files.
//       Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
};

#ifdef __cplusplus
}
#endif

#endif // _ANDROID_KEYCODES_H
</span>


4)在frameworks/base/core/res/res/values/attrs.xml添加如下

<enum name="KEYCODE_WLS" value="320" />

[align=left] 5)在 frameworks/base/core/java/android/view/KeyEvent.java添加对应的[/align]
public static final int KEYCODE_WLS = 320;

[align=left] 经过如上的步骤就将"123"按键和Android系统中的KEYCODE_WLS就对应起来了,注意这里的"123“键值并不是真正意义上的123键值,他只是linux驱动向上层抛出的键值。[/align]

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系统要使用的键值的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: