RK:添加键值 113

 

diff --git a/device/rockchip/common/BoardConfig.mk b/device/rockchip/common/BoardConfig.mk
index 57e72a8..8edd46d 100755
--- a/device/rockchip/common/BoardConfig.mk
+++ b/device/rockchip/common/BoardConfig.mk
@@ -104,8 +104,8 @@ TARGET_PROVIDES_INIT_RC ?= false
 BOARD_HAL_STATIC_LIBRARIES ?= libdumpstate.$(TARGET_PRODUCT) libhealthd.$(TARGET_PRODUCT)
 
 //MAX-SIZE=512M, for generate out/.../system.img
-BOARD_SYSTEMIMAGE_PARTITION_SIZE ?= 1610612736
-#BOARD_SYSTEMIMAGE_PARTITION_SIZE ?= 2147483648		2G
+#BOARD_SYSTEMIMAGE_PARTITION_SIZE ?= 1610612736
+BOARD_SYSTEMIMAGE_PARTITION_SIZE ?= 2147483648		
 #BOARD_SYSTEMIMAGE_PARTITION_SIZE ?= 3221225472		3G
 #BOARD_SYSTEMIMAGE_PARTITION_SIZE ?= 3758096384		4G
 BOARD_FLASH_BLOCK_SIZE ?= 131072
@@ -118,7 +118,7 @@ ifeq ($(HOST_OS),linux)
     endif
   endif
 endif
-WITH_DEXPREOPT ?= true
+#WITH_DEXPREOPT ?= true
 ART_USE_HSPACE_COMPACT ?= true
 
 TARGET_USES_LOGD ?= true
diff --git a/device/rockchip/common/rkxx-remotectl.kl b/device/rockchip/common/rkxx-remotectl.kl
index 0aedef3..7f2f143 100755
--- a/device/rockchip/common/rkxx-remotectl.kl
+++ b/device/rockchip/common/rkxx-remotectl.kl
@@ -1,49 +1,116 @@
 #$_FOR_ROCKCHIP_RBOX_$
 #$_rbox_$_modify_$_chenzhi_20120220: add for IR remote
 
-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 11    0
-key 28    DPAD_CENTER
-key 113   VOLUME_MUTE
-key 82    MENU
-key 116   POWER
-key 158   BACK              
-key 139   MENU         
-key 217   SEARCH             
-key 232   DPAD_CENTER       
-key 108   DPAD_DOWN         
-key 103   DPAD_UP           
-key 102   HOME              
-key 105   DPAD_LEFT         
-key 106   DPAD_RIGHT        
-key 115   VOLUME_UP
-key 114   VOLUME_DOWN
-key 143   NOTIFICATION
-key 387   SETTINGS
-key 186		PROG_GREEN
-key 187		PROG_YELLOW
-key 188		PROG_BLUE
-key 388   TV_KEYMOUSE_MODE_SWITCH 
-#key 400   TV_MEDIA_MULT_BACKWARD
-#key 401   TV_MEDIA_MULT_FORWARD
-#key 402   TV_MEDIA_PLAY_PAUSE
-#key 64    TV_MEDIA_PLAY
-#key 65    TV_MEDIA_PAUSE
-#key 66    TV_MEDIA_STOP
-#key 67    TV_MEDIA_REWIND
-#key 68    TV_MEDIA_FAST_FORWARD
-#key 87    TV_MEDIA_PREVIOUS
-#key 88    TV_MEDIA_NEXT
-key 146   DEL
-key 163   MEDIA_NEXT
-key 164   MEDIA_PLAY_PAUSE
-key 165   MEDIA_PREVIOUS
-key 172   HOME
 No newline at end of file
+key 1     XH_CUSTOM_BTN_1  
+key 2     XH_CUSTOM_BTN_2  
+key 3     XH_CUSTOM_BTN_3  
+key 4     XH_CUSTOM_BTN_4  
+key 5     XH_CUSTOM_BTN_5  
+key 6     XH_CUSTOM_BTN_6  
+key 7     XH_CUSTOM_BTN_7  
+key 8     XH_CUSTOM_BTN_8  
+key 9     XH_CUSTOM_BTN_9  
+key 10    XH_CUSTOM_BTN_10 
+key 11    XH_CUSTOM_BTN_11 
+key 12    XH_CUSTOM_BTN_12 
+key 13		XH_CUSTOM_BTN_13 
+key 14		XH_CUSTOM_BTN_14 
+key 15		XH_CUSTOM_BTN_15 
+key 16		XH_CUSTOM_BTN_16 
+key 17		XH_CUSTOM_BTN_17 
+key 18		XH_CUSTOM_BTN_18 
+key 19		XH_CUSTOM_BTN_19 
+key 20		XH_CUSTOM_BTN_20 
+key 21		XH_CUSTOM_BTN_21 
+key 22		XH_CUSTOM_BTN_22 
+key 23		XH_CUSTOM_BTN_23 
+key 24		XH_CUSTOM_BTN_24 
+key 25    XH_CUSTOM_BTN_25 
+key 26    XH_CUSTOM_BTN_26 
+key 27    XH_CUSTOM_BTN_27 
+key 28    XH_CUSTOM_BTN_28 
+key 29    XH_CUSTOM_BTN_29 
+key 30    XH_CUSTOM_BTN_30 
+key 31    XH_CUSTOM_BTN_31 
+key 32    XH_CUSTOM_BTN_32 
+key 33    XH_CUSTOM_BTN_33 
+key 48    XH_CUSTOM_BTN_34 
+key 49    XH_CUSTOM_BTN_35 
+key 50    XH_CUSTOM_BTN_36 
+key 51		XH_CUSTOM_BTN_37 
+key 52		XH_CUSTOM_BTN_38 
+key 53		XH_CUSTOM_BTN_39 
+key 54		XH_CUSTOM_BTN_40 
+key 55		XH_CUSTOM_BTN_41 
+key 56		XH_CUSTOM_BTN_42 
+key 57		XH_CUSTOM_BTN_43 
+key 58		XH_CUSTOM_BTN_44 
+key 59		XH_CUSTOM_BTN_45 
+key 60		XH_CUSTOM_BTN_46 
+key 61		XH_CUSTOM_BTN_47 
+key 62		XH_CUSTOM_BTN_48 
+key 63    XH_CUSTOM_BTN_49 
+key 64    XH_CUSTOM_BTN_50 
+key 65    XH_CUSTOM_BTN_51 
+key 66    XH_CUSTOM_BTN_52 
+key 67    XH_CUSTOM_BTN_53 
+key 80		XH_CUSTOM_BTN_54 
+key 81		XH_CUSTOM_BTN_55 
+key 82		XH_CUSTOM_BTN_56 
+key 83		XH_CUSTOM_BTN_57 
+key 84		XH_CUSTOM_BTN_58 
+key 85		XH_CUSTOM_BTN_59 
+key 86		XH_CUSTOM_BTN_60 
+key 87		XH_CUSTOM_BTN_61 
+key 88		XH_CUSTOM_BTN_62 
+key 89		XH_CUSTOM_BTN_63 
+key 90		XH_CUSTOM_BTN_64 
+key 91		XH_CUSTOM_BTN_65 
+key 92		XH_CUSTOM_BTN_66 
+key 93		XH_CUSTOM_BTN_67 
+key 94		XH_CUSTOM_BTN_68 
+key 95		XH_CUSTOM_BTN_69 
+key 96		XH_CUSTOM_BTN_70 
+key 97		XH_CUSTOM_BTN_71 
+key 98		XH_CUSTOM_BTN_72 
+key 99		XH_CUSTOM_BTN_73 
+key 112		XH_CUSTOM_BTN_74 
+key 113		XH_CUSTOM_BTN_75 
+key 114		XH_CUSTOM_BTN_76 
+key 115		XH_CUSTOM_BTN_77 
+key 116		XH_CUSTOM_BTN_78 
+key 117		XH_CUSTOM_BTN_79 
+key 118		XH_CUSTOM_BTN_80 
+key 119		XH_CUSTOM_BTN_81 
+key 120		XH_CUSTOM_BTN_82 
+key 121		XH_CUSTOM_BTN_83 
+key 122		XH_CUSTOM_BTN_84 
+key 123 	XH_CUSTOM_BTN_85 
+key 124   XH_CUSTOM_BTN_86 
+key 125   XH_CUSTOM_BTN_87 
+key 126   XH_CUSTOM_BTN_88 
+key 127   XH_CUSTOM_BTN_89 
+key 128   XH_CUSTOM_BTN_90 
+key 129   XH_CUSTOM_BTN_91 
+key 130   XH_CUSTOM_BTN_92 
+key 131   XH_CUSTOM_BTN_93 
+key 144		XH_CUSTOM_BTN_94 
+key 145		XH_CUSTOM_BTN_95 
+key 146		XH_CUSTOM_BTN_96 
+key 147		XH_CUSTOM_BTN_97 
+key 148		XH_CUSTOM_BTN_98 
+key 149		XH_CUSTOM_BTN_99 
+key 150		XH_CUSTOM_BTN_100
+key 151		XH_CUSTOM_BTN_101
+key 152		XH_CUSTOM_BTN_102
+key 153		XH_CUSTOM_BTN_103
+key 154 	XH_CUSTOM_BTN_104
+key 155		XH_CUSTOM_BTN_105
+key 156		XH_CUSTOM_BTN_106
+key 157		XH_CUSTOM_BTN_107
+key 158		XH_CUSTOM_BTN_108
+key 159		XH_CUSTOM_BTN_109
+key 160		XH_CUSTOM_BTN_110
+key 161		XH_CUSTOM_BTN_111
+key 162		XH_CUSTOM_BTN_112
+key 163		XH_CUSTOM_BTN_113
 No newline at end of file
diff --git a/frameworks/base/api/current.txt b/frameworks/base/api/current.txt
index 8a53bfc..f4b18b0 100644
--- a/frameworks/base/api/current.txt
+++ b/frameworks/base/api/current.txt
@@ -35498,6 +35498,127 @@ package android.view {
     field public static final int KEYCODE_WAKEUP = 224; // 0xe0
     field public static final int KEYCODE_WINDOW = 171; // 0xab
     field public static final int KEYCODE_X = 52; // 0x34
+    field public static final int KEYCODE_XH_CUSTOM_BTN_1 = 305; // 0x131
+    field public static final int KEYCODE_XH_CUSTOM_BTN_10 = 314; // 0x13a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_100 = 404; // 0x194
+    field public static final int KEYCODE_XH_CUSTOM_BTN_101 = 405; // 0x195
+    field public static final int KEYCODE_XH_CUSTOM_BTN_102 = 406; // 0x196
+    field public static final int KEYCODE_XH_CUSTOM_BTN_103 = 407; // 0x197
+    field public static final int KEYCODE_XH_CUSTOM_BTN_104 = 408; // 0x198
+    field public static final int KEYCODE_XH_CUSTOM_BTN_105 = 409; // 0x199
+    field public static final int KEYCODE_XH_CUSTOM_BTN_106 = 410; // 0x19a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_107 = 411; // 0x19b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_108 = 412; // 0x19c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_109 = 413; // 0x19d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_11 = 315; // 0x13b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_110 = 414; // 0x19e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_111 = 415; // 0x19f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_112 = 416; // 0x1a0
+    field public static final int KEYCODE_XH_CUSTOM_BTN_113 = 417; // 0x1a1
+    field public static final int KEYCODE_XH_CUSTOM_BTN_114 = 418; // 0x1a2
+    field public static final int KEYCODE_XH_CUSTOM_BTN_115 = 419; // 0x1a3
+    field public static final int KEYCODE_XH_CUSTOM_BTN_116 = 420; // 0x1a4
+    field public static final int KEYCODE_XH_CUSTOM_BTN_117 = 421; // 0x1a5
+    field public static final int KEYCODE_XH_CUSTOM_BTN_118 = 422; // 0x1a6
+    field public static final int KEYCODE_XH_CUSTOM_BTN_119 = 423; // 0x1a7
+    field public static final int KEYCODE_XH_CUSTOM_BTN_12 = 316; // 0x13c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_120 = 424; // 0x1a8
+    field public static final int KEYCODE_XH_CUSTOM_BTN_121 = 425; // 0x1a9
+    field public static final int KEYCODE_XH_CUSTOM_BTN_13 = 317; // 0x13d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_14 = 318; // 0x13e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_15 = 319; // 0x13f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_16 = 320; // 0x140
+    field public static final int KEYCODE_XH_CUSTOM_BTN_17 = 321; // 0x141
+    field public static final int KEYCODE_XH_CUSTOM_BTN_18 = 322; // 0x142
+    field public static final int KEYCODE_XH_CUSTOM_BTN_19 = 323; // 0x143
+    field public static final int KEYCODE_XH_CUSTOM_BTN_2 = 306; // 0x132
+    field public static final int KEYCODE_XH_CUSTOM_BTN_20 = 324; // 0x144
+    field public static final int KEYCODE_XH_CUSTOM_BTN_21 = 325; // 0x145
+    field public static final int KEYCODE_XH_CUSTOM_BTN_22 = 326; // 0x146
+    field public static final int KEYCODE_XH_CUSTOM_BTN_23 = 327; // 0x147
+    field public static final int KEYCODE_XH_CUSTOM_BTN_24 = 328; // 0x148
+    field public static final int KEYCODE_XH_CUSTOM_BTN_25 = 329; // 0x149
+    field public static final int KEYCODE_XH_CUSTOM_BTN_26 = 330; // 0x14a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_27 = 331; // 0x14b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_28 = 332; // 0x14c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_29 = 333; // 0x14d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_3 = 307; // 0x133
+    field public static final int KEYCODE_XH_CUSTOM_BTN_30 = 334; // 0x14e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_31 = 335; // 0x14f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_32 = 336; // 0x150
+    field public static final int KEYCODE_XH_CUSTOM_BTN_33 = 337; // 0x151
+    field public static final int KEYCODE_XH_CUSTOM_BTN_34 = 338; // 0x152
+    field public static final int KEYCODE_XH_CUSTOM_BTN_35 = 339; // 0x153
+    field public static final int KEYCODE_XH_CUSTOM_BTN_36 = 340; // 0x154
+    field public static final int KEYCODE_XH_CUSTOM_BTN_37 = 341; // 0x155
+    field public static final int KEYCODE_XH_CUSTOM_BTN_38 = 342; // 0x156
+    field public static final int KEYCODE_XH_CUSTOM_BTN_39 = 343; // 0x157
+    field public static final int KEYCODE_XH_CUSTOM_BTN_4 = 308; // 0x134
+    field public static final int KEYCODE_XH_CUSTOM_BTN_40 = 344; // 0x158
+    field public static final int KEYCODE_XH_CUSTOM_BTN_41 = 345; // 0x159
+    field public static final int KEYCODE_XH_CUSTOM_BTN_42 = 346; // 0x15a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_43 = 347; // 0x15b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_44 = 348; // 0x15c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_45 = 349; // 0x15d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_46 = 350; // 0x15e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_47 = 351; // 0x15f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_48 = 352; // 0x160
+    field public static final int KEYCODE_XH_CUSTOM_BTN_49 = 353; // 0x161
+    field public static final int KEYCODE_XH_CUSTOM_BTN_5 = 309; // 0x135
+    field public static final int KEYCODE_XH_CUSTOM_BTN_50 = 354; // 0x162
+    field public static final int KEYCODE_XH_CUSTOM_BTN_51 = 355; // 0x163
+    field public static final int KEYCODE_XH_CUSTOM_BTN_52 = 356; // 0x164
+    field public static final int KEYCODE_XH_CUSTOM_BTN_53 = 357; // 0x165
+    field public static final int KEYCODE_XH_CUSTOM_BTN_54 = 358; // 0x166
+    field public static final int KEYCODE_XH_CUSTOM_BTN_55 = 359; // 0x167
+    field public static final int KEYCODE_XH_CUSTOM_BTN_56 = 360; // 0x168
+    field public static final int KEYCODE_XH_CUSTOM_BTN_57 = 361; // 0x169
+    field public static final int KEYCODE_XH_CUSTOM_BTN_58 = 362; // 0x16a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_59 = 363; // 0x16b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_6 = 310; // 0x136
+    field public static final int KEYCODE_XH_CUSTOM_BTN_60 = 364; // 0x16c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_61 = 365; // 0x16d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_62 = 366; // 0x16e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_63 = 367; // 0x16f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_64 = 368; // 0x170
+    field public static final int KEYCODE_XH_CUSTOM_BTN_65 = 369; // 0x171
+    field public static final int KEYCODE_XH_CUSTOM_BTN_66 = 370; // 0x172
+    field public static final int KEYCODE_XH_CUSTOM_BTN_67 = 371; // 0x173
+    field public static final int KEYCODE_XH_CUSTOM_BTN_68 = 372; // 0x174
+    field public static final int KEYCODE_XH_CUSTOM_BTN_69 = 373; // 0x175
+    field public static final int KEYCODE_XH_CUSTOM_BTN_7 = 426; // 0x1aa
+    field public static final int KEYCODE_XH_CUSTOM_BTN_70 = 374; // 0x176
+    field public static final int KEYCODE_XH_CUSTOM_BTN_71 = 375; // 0x177
+    field public static final int KEYCODE_XH_CUSTOM_BTN_72 = 376; // 0x178
+    field public static final int KEYCODE_XH_CUSTOM_BTN_73 = 377; // 0x179
+    field public static final int KEYCODE_XH_CUSTOM_BTN_74 = 378; // 0x17a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_75 = 379; // 0x17b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_76 = 380; // 0x17c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_77 = 381; // 0x17d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_78 = 382; // 0x17e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_79 = 383; // 0x17f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_8 = 427; // 0x1ab
+    field public static final int KEYCODE_XH_CUSTOM_BTN_80 = 384; // 0x180
+    field public static final int KEYCODE_XH_CUSTOM_BTN_81 = 385; // 0x181
+    field public static final int KEYCODE_XH_CUSTOM_BTN_82 = 386; // 0x182
+    field public static final int KEYCODE_XH_CUSTOM_BTN_83 = 387; // 0x183
+    field public static final int KEYCODE_XH_CUSTOM_BTN_84 = 388; // 0x184
+    field public static final int KEYCODE_XH_CUSTOM_BTN_85 = 389; // 0x185
+    field public static final int KEYCODE_XH_CUSTOM_BTN_86 = 390; // 0x186
+    field public static final int KEYCODE_XH_CUSTOM_BTN_87 = 391; // 0x187
+    field public static final int KEYCODE_XH_CUSTOM_BTN_88 = 392; // 0x188
+    field public static final int KEYCODE_XH_CUSTOM_BTN_89 = 393; // 0x189
+    field public static final int KEYCODE_XH_CUSTOM_BTN_9 = 313; // 0x139
+    field public static final int KEYCODE_XH_CUSTOM_BTN_90 = 394; // 0x18a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_91 = 395; // 0x18b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_92 = 396; // 0x18c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_93 = 397; // 0x18d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_94 = 398; // 0x18e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_95 = 399; // 0x18f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_96 = 400; // 0x190
+    field public static final int KEYCODE_XH_CUSTOM_BTN_97 = 401; // 0x191
+    field public static final int KEYCODE_XH_CUSTOM_BTN_98 = 402; // 0x192
+    field public static final int KEYCODE_XH_CUSTOM_BTN_99 = 403; // 0x193
     field public static final int KEYCODE_Y = 53; // 0x35
     field public static final int KEYCODE_YEN = 216; // 0xd8
     field public static final int KEYCODE_Z = 54; // 0x36
diff --git a/frameworks/base/api/system-current.txt b/frameworks/base/api/system-current.txt
index cf56b94..744c49a 100644
--- a/frameworks/base/api/system-current.txt
+++ b/frameworks/base/api/system-current.txt
@@ -37790,6 +37790,127 @@ package android.view {
     field public static final int KEYCODE_WAKEUP = 224; // 0xe0
     field public static final int KEYCODE_WINDOW = 171; // 0xab
     field public static final int KEYCODE_X = 52; // 0x34
+    field public static final int KEYCODE_XH_CUSTOM_BTN_1 = 305; // 0x131
+    field public static final int KEYCODE_XH_CUSTOM_BTN_10 = 314; // 0x13a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_100 = 404; // 0x194
+    field public static final int KEYCODE_XH_CUSTOM_BTN_101 = 405; // 0x195
+    field public static final int KEYCODE_XH_CUSTOM_BTN_102 = 406; // 0x196
+    field public static final int KEYCODE_XH_CUSTOM_BTN_103 = 407; // 0x197
+    field public static final int KEYCODE_XH_CUSTOM_BTN_104 = 408; // 0x198
+    field public static final int KEYCODE_XH_CUSTOM_BTN_105 = 409; // 0x199
+    field public static final int KEYCODE_XH_CUSTOM_BTN_106 = 410; // 0x19a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_107 = 411; // 0x19b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_108 = 412; // 0x19c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_109 = 413; // 0x19d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_11 = 315; // 0x13b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_110 = 414; // 0x19e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_111 = 415; // 0x19f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_112 = 416; // 0x1a0
+    field public static final int KEYCODE_XH_CUSTOM_BTN_113 = 417; // 0x1a1
+    field public static final int KEYCODE_XH_CUSTOM_BTN_114 = 418; // 0x1a2
+    field public static final int KEYCODE_XH_CUSTOM_BTN_115 = 419; // 0x1a3
+    field public static final int KEYCODE_XH_CUSTOM_BTN_116 = 420; // 0x1a4
+    field public static final int KEYCODE_XH_CUSTOM_BTN_117 = 421; // 0x1a5
+    field public static final int KEYCODE_XH_CUSTOM_BTN_118 = 422; // 0x1a6
+    field public static final int KEYCODE_XH_CUSTOM_BTN_119 = 423; // 0x1a7
+    field public static final int KEYCODE_XH_CUSTOM_BTN_12 = 316; // 0x13c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_120 = 424; // 0x1a8
+    field public static final int KEYCODE_XH_CUSTOM_BTN_121 = 425; // 0x1a9
+    field public static final int KEYCODE_XH_CUSTOM_BTN_13 = 317; // 0x13d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_14 = 318; // 0x13e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_15 = 319; // 0x13f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_16 = 320; // 0x140
+    field public static final int KEYCODE_XH_CUSTOM_BTN_17 = 321; // 0x141
+    field public static final int KEYCODE_XH_CUSTOM_BTN_18 = 322; // 0x142
+    field public static final int KEYCODE_XH_CUSTOM_BTN_19 = 323; // 0x143
+    field public static final int KEYCODE_XH_CUSTOM_BTN_2 = 306; // 0x132
+    field public static final int KEYCODE_XH_CUSTOM_BTN_20 = 324; // 0x144
+    field public static final int KEYCODE_XH_CUSTOM_BTN_21 = 325; // 0x145
+    field public static final int KEYCODE_XH_CUSTOM_BTN_22 = 326; // 0x146
+    field public static final int KEYCODE_XH_CUSTOM_BTN_23 = 327; // 0x147
+    field public static final int KEYCODE_XH_CUSTOM_BTN_24 = 328; // 0x148
+    field public static final int KEYCODE_XH_CUSTOM_BTN_25 = 329; // 0x149
+    field public static final int KEYCODE_XH_CUSTOM_BTN_26 = 330; // 0x14a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_27 = 331; // 0x14b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_28 = 332; // 0x14c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_29 = 333; // 0x14d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_3 = 307; // 0x133
+    field public static final int KEYCODE_XH_CUSTOM_BTN_30 = 334; // 0x14e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_31 = 335; // 0x14f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_32 = 336; // 0x150
+    field public static final int KEYCODE_XH_CUSTOM_BTN_33 = 337; // 0x151
+    field public static final int KEYCODE_XH_CUSTOM_BTN_34 = 338; // 0x152
+    field public static final int KEYCODE_XH_CUSTOM_BTN_35 = 339; // 0x153
+    field public static final int KEYCODE_XH_CUSTOM_BTN_36 = 340; // 0x154
+    field public static final int KEYCODE_XH_CUSTOM_BTN_37 = 341; // 0x155
+    field public static final int KEYCODE_XH_CUSTOM_BTN_38 = 342; // 0x156
+    field public static final int KEYCODE_XH_CUSTOM_BTN_39 = 343; // 0x157
+    field public static final int KEYCODE_XH_CUSTOM_BTN_4 = 308; // 0x134
+    field public static final int KEYCODE_XH_CUSTOM_BTN_40 = 344; // 0x158
+    field public static final int KEYCODE_XH_CUSTOM_BTN_41 = 345; // 0x159
+    field public static final int KEYCODE_XH_CUSTOM_BTN_42 = 346; // 0x15a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_43 = 347; // 0x15b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_44 = 348; // 0x15c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_45 = 349; // 0x15d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_46 = 350; // 0x15e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_47 = 351; // 0x15f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_48 = 352; // 0x160
+    field public static final int KEYCODE_XH_CUSTOM_BTN_49 = 353; // 0x161
+    field public static final int KEYCODE_XH_CUSTOM_BTN_5 = 309; // 0x135
+    field public static final int KEYCODE_XH_CUSTOM_BTN_50 = 354; // 0x162
+    field public static final int KEYCODE_XH_CUSTOM_BTN_51 = 355; // 0x163
+    field public static final int KEYCODE_XH_CUSTOM_BTN_52 = 356; // 0x164
+    field public static final int KEYCODE_XH_CUSTOM_BTN_53 = 357; // 0x165
+    field public static final int KEYCODE_XH_CUSTOM_BTN_54 = 358; // 0x166
+    field public static final int KEYCODE_XH_CUSTOM_BTN_55 = 359; // 0x167
+    field public static final int KEYCODE_XH_CUSTOM_BTN_56 = 360; // 0x168
+    field public static final int KEYCODE_XH_CUSTOM_BTN_57 = 361; // 0x169
+    field public static final int KEYCODE_XH_CUSTOM_BTN_58 = 362; // 0x16a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_59 = 363; // 0x16b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_6 = 310; // 0x136
+    field public static final int KEYCODE_XH_CUSTOM_BTN_60 = 364; // 0x16c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_61 = 365; // 0x16d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_62 = 366; // 0x16e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_63 = 367; // 0x16f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_64 = 368; // 0x170
+    field public static final int KEYCODE_XH_CUSTOM_BTN_65 = 369; // 0x171
+    field public static final int KEYCODE_XH_CUSTOM_BTN_66 = 370; // 0x172
+    field public static final int KEYCODE_XH_CUSTOM_BTN_67 = 371; // 0x173
+    field public static final int KEYCODE_XH_CUSTOM_BTN_68 = 372; // 0x174
+    field public static final int KEYCODE_XH_CUSTOM_BTN_69 = 373; // 0x175
+    field public static final int KEYCODE_XH_CUSTOM_BTN_7 = 426; // 0x1aa
+    field public static final int KEYCODE_XH_CUSTOM_BTN_70 = 374; // 0x176
+    field public static final int KEYCODE_XH_CUSTOM_BTN_71 = 375; // 0x177
+    field public static final int KEYCODE_XH_CUSTOM_BTN_72 = 376; // 0x178
+    field public static final int KEYCODE_XH_CUSTOM_BTN_73 = 377; // 0x179
+    field public static final int KEYCODE_XH_CUSTOM_BTN_74 = 378; // 0x17a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_75 = 379; // 0x17b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_76 = 380; // 0x17c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_77 = 381; // 0x17d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_78 = 382; // 0x17e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_79 = 383; // 0x17f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_8 = 427; // 0x1ab
+    field public static final int KEYCODE_XH_CUSTOM_BTN_80 = 384; // 0x180
+    field public static final int KEYCODE_XH_CUSTOM_BTN_81 = 385; // 0x181
+    field public static final int KEYCODE_XH_CUSTOM_BTN_82 = 386; // 0x182
+    field public static final int KEYCODE_XH_CUSTOM_BTN_83 = 387; // 0x183
+    field public static final int KEYCODE_XH_CUSTOM_BTN_84 = 388; // 0x184
+    field public static final int KEYCODE_XH_CUSTOM_BTN_85 = 389; // 0x185
+    field public static final int KEYCODE_XH_CUSTOM_BTN_86 = 390; // 0x186
+    field public static final int KEYCODE_XH_CUSTOM_BTN_87 = 391; // 0x187
+    field public static final int KEYCODE_XH_CUSTOM_BTN_88 = 392; // 0x188
+    field public static final int KEYCODE_XH_CUSTOM_BTN_89 = 393; // 0x189
+    field public static final int KEYCODE_XH_CUSTOM_BTN_9 = 313; // 0x139
+    field public static final int KEYCODE_XH_CUSTOM_BTN_90 = 394; // 0x18a
+    field public static final int KEYCODE_XH_CUSTOM_BTN_91 = 395; // 0x18b
+    field public static final int KEYCODE_XH_CUSTOM_BTN_92 = 396; // 0x18c
+    field public static final int KEYCODE_XH_CUSTOM_BTN_93 = 397; // 0x18d
+    field public static final int KEYCODE_XH_CUSTOM_BTN_94 = 398; // 0x18e
+    field public static final int KEYCODE_XH_CUSTOM_BTN_95 = 399; // 0x18f
+    field public static final int KEYCODE_XH_CUSTOM_BTN_96 = 400; // 0x190
+    field public static final int KEYCODE_XH_CUSTOM_BTN_97 = 401; // 0x191
+    field public static final int KEYCODE_XH_CUSTOM_BTN_98 = 402; // 0x192
+    field public static final int KEYCODE_XH_CUSTOM_BTN_99 = 403; // 0x193
     field public static final int KEYCODE_Y = 53; // 0x35
     field public static final int KEYCODE_YEN = 216; // 0xd8
     field public static final int KEYCODE_Z = 54; // 0x36
diff --git a/frameworks/base/core/java/android/view/KeyEvent.java b/frameworks/base/core/java/android/view/KeyEvent.java
index ffbede4..c08502c 100755
--- a/frameworks/base/core/java/android/view/KeyEvent.java
+++ b/frameworks/base/core/java/android/view/KeyEvent.java
@@ -797,7 +797,132 @@ public class KeyEvent extends InputEvent implements Parcelable {
     public static final int KEYCODE_TV_MEDIA_PAUSE = 294;
 //$_rbox_$_modify_$ end
 
-    private static final int LAST_KEYCODE = KEYCODE_TV_MEDIA_PAUSE;
+//$_Gatsby_$_modify_$_begin
+		public static final int KEYCODE_XH_CUSTOM_BTN_1   = 305;
+		public static final int KEYCODE_XH_CUSTOM_BTN_2   = 306;
+		public static final int KEYCODE_XH_CUSTOM_BTN_3   = 307;
+		public static final int KEYCODE_XH_CUSTOM_BTN_4   = 308;
+		public static final int KEYCODE_XH_CUSTOM_BTN_5   = 309;
+		public static final int KEYCODE_XH_CUSTOM_BTN_6   = 310;
+
+		public static final int KEYCODE_XH_CUSTOM_BTN_9   = 313;
+		public static final int KEYCODE_XH_CUSTOM_BTN_10  = 314;
+		public static final int KEYCODE_XH_CUSTOM_BTN_11  = 315;
+		public static final int KEYCODE_XH_CUSTOM_BTN_12  = 316;
+		public static final int KEYCODE_XH_CUSTOM_BTN_13  = 317;
+		public static final int KEYCODE_XH_CUSTOM_BTN_14  = 318;
+		public static final int KEYCODE_XH_CUSTOM_BTN_15  = 319;
+		public static final int KEYCODE_XH_CUSTOM_BTN_16  = 320;
+		public static final int KEYCODE_XH_CUSTOM_BTN_17  = 321;
+		public static final int KEYCODE_XH_CUSTOM_BTN_18  = 322;
+		public static final int KEYCODE_XH_CUSTOM_BTN_19  = 323;
+		public static final int KEYCODE_XH_CUSTOM_BTN_20  = 324;
+		public static final int KEYCODE_XH_CUSTOM_BTN_21  = 325;
+		public static final int KEYCODE_XH_CUSTOM_BTN_22  = 326;
+		public static final int KEYCODE_XH_CUSTOM_BTN_23  = 327;
+		public static final int KEYCODE_XH_CUSTOM_BTN_24  = 328;
+		public static final int KEYCODE_XH_CUSTOM_BTN_25  = 329;
+		public static final int KEYCODE_XH_CUSTOM_BTN_26  = 330;
+		public static final int KEYCODE_XH_CUSTOM_BTN_27  = 331;
+		public static final int KEYCODE_XH_CUSTOM_BTN_28  = 332;
+		public static final int KEYCODE_XH_CUSTOM_BTN_29  = 333;
+		public static final int KEYCODE_XH_CUSTOM_BTN_30  = 334;
+		public static final int KEYCODE_XH_CUSTOM_BTN_31  = 335;
+		public static final int KEYCODE_XH_CUSTOM_BTN_32  = 336;
+		public static final int KEYCODE_XH_CUSTOM_BTN_33  = 337;
+		public static final int KEYCODE_XH_CUSTOM_BTN_34  = 338;
+		public static final int KEYCODE_XH_CUSTOM_BTN_35  = 339;
+		public static final int KEYCODE_XH_CUSTOM_BTN_36  = 340;
+		public static final int KEYCODE_XH_CUSTOM_BTN_37  = 341;
+		public static final int KEYCODE_XH_CUSTOM_BTN_38  = 342;
+		public static final int KEYCODE_XH_CUSTOM_BTN_39  = 343;
+		public static final int KEYCODE_XH_CUSTOM_BTN_40  = 344;
+		public static final int KEYCODE_XH_CUSTOM_BTN_41  = 345;
+		public static final int KEYCODE_XH_CUSTOM_BTN_42  = 346;
+		public static final int KEYCODE_XH_CUSTOM_BTN_43  = 347;
+		public static final int KEYCODE_XH_CUSTOM_BTN_44  = 348;
+		public static final int KEYCODE_XH_CUSTOM_BTN_45  = 349;
+		public static final int KEYCODE_XH_CUSTOM_BTN_46  = 350;
+		public static final int KEYCODE_XH_CUSTOM_BTN_47  = 351;
+		public static final int KEYCODE_XH_CUSTOM_BTN_48  = 352;
+		public static final int KEYCODE_XH_CUSTOM_BTN_49  = 353;
+		public static final int KEYCODE_XH_CUSTOM_BTN_50  = 354;
+		public static final int KEYCODE_XH_CUSTOM_BTN_51  = 355;
+		public static final int KEYCODE_XH_CUSTOM_BTN_52  = 356;
+		public static final int KEYCODE_XH_CUSTOM_BTN_53  = 357;
+		public static final int KEYCODE_XH_CUSTOM_BTN_54  = 358;
+		public static final int KEYCODE_XH_CUSTOM_BTN_55  = 359;
+		public static final int KEYCODE_XH_CUSTOM_BTN_56  = 360;
+		public static final int KEYCODE_XH_CUSTOM_BTN_57  = 361;
+		public static final int KEYCODE_XH_CUSTOM_BTN_58  = 362;
+		public static final int KEYCODE_XH_CUSTOM_BTN_59  = 363;
+		public static final int KEYCODE_XH_CUSTOM_BTN_60  = 364;
+		public static final int KEYCODE_XH_CUSTOM_BTN_61  = 365;
+		public static final int KEYCODE_XH_CUSTOM_BTN_62  = 366;
+		public static final int KEYCODE_XH_CUSTOM_BTN_63  = 367;
+		public static final int KEYCODE_XH_CUSTOM_BTN_64  = 368;
+		public static final int KEYCODE_XH_CUSTOM_BTN_65  = 369;
+		public static final int KEYCODE_XH_CUSTOM_BTN_66  = 370;
+		public static final int KEYCODE_XH_CUSTOM_BTN_67  = 371;
+		public static final int KEYCODE_XH_CUSTOM_BTN_68  = 372;
+		public static final int KEYCODE_XH_CUSTOM_BTN_69  = 373;
+		public static final int KEYCODE_XH_CUSTOM_BTN_70  = 374;
+		public static final int KEYCODE_XH_CUSTOM_BTN_71  = 375;
+		public static final int KEYCODE_XH_CUSTOM_BTN_72  = 376;
+		public static final int KEYCODE_XH_CUSTOM_BTN_73  = 377;
+		public static final int KEYCODE_XH_CUSTOM_BTN_74  = 378;
+		public static final int KEYCODE_XH_CUSTOM_BTN_75  = 379;
+		public static final int KEYCODE_XH_CUSTOM_BTN_76  = 380;
+		public static final int KEYCODE_XH_CUSTOM_BTN_77  = 381;
+		public static final int KEYCODE_XH_CUSTOM_BTN_78  = 382;
+		public static final int KEYCODE_XH_CUSTOM_BTN_79  = 383;
+		public static final int KEYCODE_XH_CUSTOM_BTN_80  = 384;
+		public static final int KEYCODE_XH_CUSTOM_BTN_81  = 385;
+		public static final int KEYCODE_XH_CUSTOM_BTN_82  = 386;
+		public static final int KEYCODE_XH_CUSTOM_BTN_83  = 387;
+		public static final int KEYCODE_XH_CUSTOM_BTN_84  = 388;
+		public static final int KEYCODE_XH_CUSTOM_BTN_85  = 389;
+		public static final int KEYCODE_XH_CUSTOM_BTN_86  = 390;
+		public static final int KEYCODE_XH_CUSTOM_BTN_87  = 391;
+		public static final int KEYCODE_XH_CUSTOM_BTN_88  = 392;
+		public static final int KEYCODE_XH_CUSTOM_BTN_89  = 393;
+		public static final int KEYCODE_XH_CUSTOM_BTN_90  = 394;
+		public static final int KEYCODE_XH_CUSTOM_BTN_91  = 395;
+		public static final int KEYCODE_XH_CUSTOM_BTN_92  = 396;
+		public static final int KEYCODE_XH_CUSTOM_BTN_93  = 397;
+		public static final int KEYCODE_XH_CUSTOM_BTN_94  = 398;
+		public static final int KEYCODE_XH_CUSTOM_BTN_95  = 399;
+		public static final int KEYCODE_XH_CUSTOM_BTN_96  = 400;
+		public static final int KEYCODE_XH_CUSTOM_BTN_97  = 401;
+		public static final int KEYCODE_XH_CUSTOM_BTN_98  = 402;
+		public static final int KEYCODE_XH_CUSTOM_BTN_99  = 403;
+		public static final int KEYCODE_XH_CUSTOM_BTN_100 = 404;
+		public static final int KEYCODE_XH_CUSTOM_BTN_101 = 405;
+		public static final int KEYCODE_XH_CUSTOM_BTN_102 = 406;
+		public static final int KEYCODE_XH_CUSTOM_BTN_103 = 407;
+		public static final int KEYCODE_XH_CUSTOM_BTN_104 = 408;
+		public static final int KEYCODE_XH_CUSTOM_BTN_105 = 409;
+		public static final int KEYCODE_XH_CUSTOM_BTN_106 = 410;
+		public static final int KEYCODE_XH_CUSTOM_BTN_107 = 411;
+		public static final int KEYCODE_XH_CUSTOM_BTN_108 = 412;
+		public static final int KEYCODE_XH_CUSTOM_BTN_109 = 413;
+		public static final int KEYCODE_XH_CUSTOM_BTN_110 = 414;
+		public static final int KEYCODE_XH_CUSTOM_BTN_111 = 415;
+		public static final int KEYCODE_XH_CUSTOM_BTN_112 = 416;
+		public static final int KEYCODE_XH_CUSTOM_BTN_113 = 417;
+		public static final int KEYCODE_XH_CUSTOM_BTN_114 = 418;
+		public static final int KEYCODE_XH_CUSTOM_BTN_115 = 419;
+		public static final int KEYCODE_XH_CUSTOM_BTN_116 = 420;
+		public static final int KEYCODE_XH_CUSTOM_BTN_117 = 421;
+		public static final int KEYCODE_XH_CUSTOM_BTN_118 = 422;
+		public static final int KEYCODE_XH_CUSTOM_BTN_119 = 423;
+		public static final int KEYCODE_XH_CUSTOM_BTN_120 = 424;
+		public static final int KEYCODE_XH_CUSTOM_BTN_121 = 425;
+		public static final int KEYCODE_XH_CUSTOM_BTN_7   = 426;
+		public static final int KEYCODE_XH_CUSTOM_BTN_8   = 427;
+
+//$_Gatsby_$_modify_$ end
+    private static final int LAST_KEYCODE = KEYCODE_XH_CUSTOM_BTN_8;
 
     // NOTE: If you add a new keycode here you must also add it to:
     //  isSystem()
diff --git a/frameworks/base/core/res/res/values/attrs.xml b/frameworks/base/core/res/res/values/attrs.xml
old mode 100644
new mode 100755
index 13d57b1..4db972f
--- a/frameworks/base/core/res/res/values/attrs.xml
+++ b/frameworks/base/core/res/res/values/attrs.xml
@@ -1827,6 +1827,128 @@ i
         <enum name="KEYCODE_TV_MEDIA_MULT_BACKWARD" value="292" />
         <enum name="KEYCODE_TV_MEDIA_PLAY" value="293" />
         <enum name="KEYCODE_TV_MEDIA_PAUSE" value="294" />
+        
+        <enum name="KEYCODE_XH_CUSTOM_BTN_1" value="305" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_2" value="306" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_3" value="307" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_4" value="308" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_5" value="309" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_6" value="310" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_9" value="313" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_10" value="314" />       
+        <enum name="KEYCODE_XH_CUSTOM_BTN_11" value="315" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_12" value="316" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_13" value="317" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_14" value="318" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_15" value="319" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_16" value="320" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_17" value="321" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_18" value="322" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_19" value="323" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_20" value="324" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_21" value="325" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_22" value="326" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_23" value="327" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_24" value="328" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_25" value="329" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_26" value="330" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_27" value="331" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_28" value="332" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_29" value="333" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_30" value="334" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_31" value="335" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_32" value="336" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_33" value="337" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_34" value="338" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_35" value="339" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_36" value="340" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_37" value="341" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_38" value="342" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_39" value="343" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_40" value="344" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_41" value="345" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_42" value="346" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_43" value="347" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_44" value="348" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_45" value="349" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_46" value="350" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_47" value="351" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_48" value="352" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_49" value="353" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_50" value="354" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_51" value="355" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_52" value="356" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_53" value="357" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_54" value="358" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_55" value="359" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_56" value="360" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_57" value="361" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_58" value="362" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_59" value="363" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_60" value="364" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_61" value="365" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_62" value="366" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_63" value="367" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_64" value="368" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_65" value="369" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_66" value="370" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_67" value="371" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_68" value="372" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_69" value="373" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_70" value="374" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_71" value="375" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_72" value="376" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_73" value="377" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_74" value="378" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_75" value="379" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_76" value="380" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_77" value="381" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_78" value="382" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_79" value="383" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_80" value="384" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_81" value="385" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_82" value="386" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_83" value="387" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_84" value="388" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_85" value="389" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_86" value="390" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_87" value="391" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_88" value="392" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_89" value="393" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_90" value="394" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_91" value="395" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_92" value="396" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_93" value="397" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_94" value="398" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_95" value="399" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_96" value="400" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_97" value="401" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_98" value="402" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_99" value="403" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_100" value="404" /> 
+        <enum name="KEYCODE_XH_CUSTOM_BTN_101" value="405" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_102" value="406" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_103" value="407" />          
+        <enum name="KEYCODE_XH_CUSTOM_BTN_104" value="408" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_105" value="409" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_106" value="410" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_107" value="411" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_108" value="412" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_109" value="413" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_110" value="414" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_111" value="415" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_112" value="416" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_113" value="417" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_114" value="418" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_115" value="419" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_116" value="420" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_117" value="421" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_118" value="422" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_119" value="423" />   
+        <enum name="KEYCODE_XH_CUSTOM_BTN_120" value="424" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_121" value="425" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_7" value="426" />
+        <enum name="KEYCODE_XH_CUSTOM_BTN_8" value="427" />
 <!--$_rbox_$_modify_$_end-->
     </attr>
 
diff --git a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
index ad2adc4..3deb4ce 100755
--- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3028,7 +3028,472 @@ public class PhoneWindowManager implements WindowManagerPolicy {
 		  					mHandler.sendEmptyMessage(MSG_DISPATCH_SHOW_GLOBAL_ACTIONS);
             }
             return -1;
-        }
+        }else if(( keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_1 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_2 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_3 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_4 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_5 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_6 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_7 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_8 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_9 )
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_10)
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_11)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_12)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_13)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_14)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_15)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_16)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_17)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_18)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_19)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_20)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_21)
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_22)
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_23)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_24)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_25)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_26)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_27)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_28)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_29)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_30)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_31)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_32)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_33)
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_34)
+        				||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_35)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_36 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_37 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_38 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_39 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_40 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_41 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_42 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_43 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_44 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_45 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_46 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_47 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_48 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_49 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_50 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_51 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_52 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_53 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_54 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_55 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_56 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_57 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_58 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_59 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_60 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_61 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_62 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_63 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_64 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_65 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_66 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_67 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_68 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_69 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_70 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_71 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_72 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_73 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_74 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_75 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_76 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_77 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_78 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_79 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_80 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_81 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_82 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_83 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_84 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_85 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_86 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_87 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_88 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_89 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_90 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_91 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_92 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_93 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_94 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_95 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_96 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_97 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_98 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_99 )
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_100)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_101)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_102)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_103)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_104)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_105)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_106)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_107)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_108)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_109)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_110)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_111)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_112)
+								||(keyCode == KeyEvent.KEYCODE_XH_CUSTOM_BTN_113)
+						){
+  					if(!down){
+  							int keyCode_yulinian=0x00;
+  							switch(keyCode)
+  							{
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_1:
+  									keyCode_yulinian=0x01;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_2:
+  									keyCode_yulinian=0x02;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_3:
+  									keyCode_yulinian=0x03;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_4:
+  									keyCode_yulinian=0x04;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_5:
+  									keyCode_yulinian=0x05;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_6:
+  									keyCode_yulinian=0x06;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_7:
+  									keyCode_yulinian=0x07;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_8:
+  									keyCode_yulinian=0x08;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_9:
+  									keyCode_yulinian=0x09;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_10:
+  									keyCode_yulinian=0x0a;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_11:
+  									keyCode_yulinian=0x0b;
+  									break;	
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_12:
+  									keyCode_yulinian=0x0c;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_13:
+  									keyCode_yulinian=0x0d;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_14:
+  									keyCode_yulinian=0x0e;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_15:
+  									keyCode_yulinian=0x0f;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_16:
+  									keyCode_yulinian=0x10;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_17:
+  									keyCode_yulinian=0x11;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_18:
+  									keyCode_yulinian=0x12;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_19:
+  									keyCode_yulinian=0x13;									
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_20:
+  									keyCode_yulinian=0x14;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_21:
+  									keyCode_yulinian=0x15;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_22:
+  									keyCode_yulinian=0x16;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_23:
+  									keyCode_yulinian=0x17;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_24:
+  									keyCode_yulinian=0x18;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_25:
+  									keyCode_yulinian=0x19;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_26:
+  									keyCode_yulinian=0x1a;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_27:
+  									keyCode_yulinian=0x1b;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_28:
+  									keyCode_yulinian=0x1c;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_29:
+  									keyCode_yulinian=0x1d;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_30:
+  									keyCode_yulinian=0x1e;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_31:
+  									keyCode_yulinian=0x1f;
+  									break;	
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_32:
+  									keyCode_yulinian=0x20;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_33:
+  									keyCode_yulinian=0x21;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_34:
+  									keyCode_yulinian=0x30;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_35:
+  									keyCode_yulinian=0x31;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_36:
+  									keyCode_yulinian=0x32;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_37:
+  									keyCode_yulinian=0x33;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_38:
+  									keyCode_yulinian=0x34;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_39:
+  									keyCode_yulinian=0x35;									
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_40:
+  									keyCode_yulinian=0x36;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_41:
+  									keyCode_yulinian=0x37;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_42:
+  									keyCode_yulinian=0x38;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_43:
+  									keyCode_yulinian=0x39;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_44:
+  									keyCode_yulinian=0x3a;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_45:
+  									keyCode_yulinian=0x3b;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_46:
+  									keyCode_yulinian=0x3c;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_47:
+  									keyCode_yulinian=0x3d;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_48:
+  									keyCode_yulinian=0x3e;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_49:
+  									keyCode_yulinian=0x3f;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_50:
+  									keyCode_yulinian=0x40;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_51:
+  									keyCode_yulinian=0x41;
+  									break;	
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_52:
+  									keyCode_yulinian=0x42;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_53:
+  									keyCode_yulinian=0x43;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_54:
+  									keyCode_yulinian=0x50;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_55:
+  									keyCode_yulinian=0x51;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_56:
+  									keyCode_yulinian=0x52;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_57:
+  									keyCode_yulinian=0x53;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_58:
+  									keyCode_yulinian=0x54;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_59:
+  									keyCode_yulinian=0x55;									
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_60:
+  									keyCode_yulinian=0x56;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_61:
+  									keyCode_yulinian=0x57;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_62:
+  									keyCode_yulinian=0x58;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_63:
+  									keyCode_yulinian=0x59;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_64:
+  									keyCode_yulinian=0x5a;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_65:
+  									keyCode_yulinian=0x5b;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_66:
+  									keyCode_yulinian=0x5c;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_67:
+  									keyCode_yulinian=0x5d;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_68:
+  									keyCode_yulinian=0x5e;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_69:
+  									keyCode_yulinian=0x5f;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_70:
+  									keyCode_yulinian=0x60;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_71:
+  									keyCode_yulinian=0x61;
+  									break;	
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_72:
+  									keyCode_yulinian=0x62;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_73:
+  									keyCode_yulinian=0x63;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_74:
+  									keyCode_yulinian=0x70;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_75:
+  									keyCode_yulinian=0x71;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_76:
+  									keyCode_yulinian=0x72;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_77:
+  									keyCode_yulinian=0x73;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_78:
+  									keyCode_yulinian=0x74;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_79:
+  									keyCode_yulinian=0x75;									
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_80:
+  									keyCode_yulinian=0x76;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_81:
+  									keyCode_yulinian=0x77;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_82:
+  									keyCode_yulinian=0x78;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_83:
+  									keyCode_yulinian=0x79;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_84:
+  									keyCode_yulinian=0x7a;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_85:
+  									keyCode_yulinian=0x7b;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_86:
+  									keyCode_yulinian=0x7c;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_87:
+  									keyCode_yulinian=0x7d;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_88:
+  									keyCode_yulinian=0x7e;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_89:
+  									keyCode_yulinian=0x7f;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_90:
+  									keyCode_yulinian=0x80;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_91:
+  									keyCode_yulinian=0x81;
+  									break;	
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_92:
+  									keyCode_yulinian=0x82;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_93:
+  									keyCode_yulinian=0x83;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_94:
+  									keyCode_yulinian=0x90;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_95:
+  									keyCode_yulinian=0x91;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_96:
+  									keyCode_yulinian=0x92;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_97:
+  									keyCode_yulinian=0x93;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_98:
+  									keyCode_yulinian=0x94;
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_99:
+  									keyCode_yulinian=0x95;									
+  									break;
+									case KeyEvent.KEYCODE_XH_CUSTOM_BTN_100:
+  									keyCode_yulinian=0x96;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_101:
+  									keyCode_yulinian=0x97;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_102:
+  									keyCode_yulinian=0x98;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_103:
+  									keyCode_yulinian=0x99;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_104:
+  									keyCode_yulinian=0x9a;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_105:
+  									keyCode_yulinian=0x9b;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_106:
+  									keyCode_yulinian=0x9c;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_107:
+  									keyCode_yulinian=0x9d;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_108:
+  									keyCode_yulinian=0x9e;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_109:
+  									keyCode_yulinian=0x9f;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_110:
+  									keyCode_yulinian=0xa0;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_111:
+  									keyCode_yulinian=0xa1;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_112:
+  									keyCode_yulinian=0xa2;
+  									break;
+  								case KeyEvent.KEYCODE_XH_CUSTOM_BTN_113:
+  									keyCode_yulinian=0xa3;
+  									break;								
+  							}
+  							Log.d("xinhua_keycode","keycode = 0x"+Integer.toHexString(keyCode_yulinian));
+		            Intent intent = new Intent("com.unibrige.fitnessmachine.key.value");
+		            intent.putExtra("key_code", keyCode_yulinian);
+		            mContext.sendStickyBroadcastAsUser(intent, UserHandle.ALL);
+            }
+            return -1;
+          }
+        
 				mstate = SystemProperties.get("sys.KeyMouse.mKeyMouseState");
 				if (mstate.equals("on") && ((keyCode == KeyEvent.KEYCODE_TV_KEYMOUSE_LEFT)
 							 || (keyCode == KeyEvent.KEYCODE_TV_KEYMOUSE_RIGHT)
diff --git a/frameworks/native/include/android/keycodes.h b/frameworks/native/include/android/keycodes.h
old mode 100644
new mode 100755
index e391dc9..466f1d3
--- a/frameworks/native/include/android/keycodes.h
+++ b/frameworks/native/include/android/keycodes.h
@@ -728,8 +728,139 @@ enum {
     AKEYCODE_TV_KEYMOUSE_RIGHT = 281,
     AKEYCODE_TV_KEYMOUSE_UP = 282,
     AKEYCODE_TV_KEYMOUSE_DOWN = 283,
-    AKEYCODE_TV_KEYMOUSE_MODE_SWITCH = 284
+    AKEYCODE_TV_KEYMOUSE_MODE_SWITCH = 284,
 
+/*************************************************
+*	sunls_for_yulinian_start					  *
+*	按键红外用户码——0xf708						  *
+*	按键红外键值码定义							  *
+ *************************************************/
+    
+    AKEYCODE_XH_CUSTOM_BTN_1              = 305,
+    AKEYCODE_XH_CUSTOM_BTN_2              = 306,
+    AKEYCODE_XH_CUSTOM_BTN_3              = 307,
+    AKEYCODE_XH_CUSTOM_BTN_4              = 308,
+    AKEYCODE_XH_CUSTOM_BTN_5              = 309,
+    AKEYCODE_XH_CUSTOM_BTN_6              = 310,
+    AKEYCODE_XH_CUSTOM_BTN_9              = 313,
+    AKEYCODE_XH_CUSTOM_BTN_10             = 314,
+    AKEYCODE_XH_CUSTOM_BTN_11             = 315,                   
+    AKEYCODE_XH_CUSTOM_BTN_12             = 316,                   
+    AKEYCODE_XH_CUSTOM_BTN_13             = 317,                   
+    AKEYCODE_XH_CUSTOM_BTN_14             = 318,                   
+    AKEYCODE_XH_CUSTOM_BTN_15             = 319,                   
+    AKEYCODE_XH_CUSTOM_BTN_16             = 320,                   
+    AKEYCODE_XH_CUSTOM_BTN_17             = 321,                   
+    AKEYCODE_XH_CUSTOM_BTN_18             = 322,                   
+    AKEYCODE_XH_CUSTOM_BTN_19             = 323,                   
+    AKEYCODE_XH_CUSTOM_BTN_20             = 324,                   
+    AKEYCODE_XH_CUSTOM_BTN_21             = 325,                   
+    AKEYCODE_XH_CUSTOM_BTN_22             = 326,                   
+    AKEYCODE_XH_CUSTOM_BTN_23             = 327,                   
+    AKEYCODE_XH_CUSTOM_BTN_24             = 328,                   
+    AKEYCODE_XH_CUSTOM_BTN_25             = 329,                   
+    AKEYCODE_XH_CUSTOM_BTN_26             = 330,                   
+    AKEYCODE_XH_CUSTOM_BTN_27             = 331,
+    AKEYCODE_XH_CUSTOM_BTN_28             = 332,
+    AKEYCODE_XH_CUSTOM_BTN_29             = 333,
+    AKEYCODE_XH_CUSTOM_BTN_30             = 334,
+    AKEYCODE_XH_CUSTOM_BTN_31             = 335,
+    AKEYCODE_XH_CUSTOM_BTN_32             = 336,
+    AKEYCODE_XH_CUSTOM_BTN_33             = 337,
+    AKEYCODE_XH_CUSTOM_BTN_34             = 338,
+    AKEYCODE_XH_CUSTOM_BTN_35             = 339,
+    AKEYCODE_XH_CUSTOM_BTN_36             = 340,
+    AKEYCODE_XH_CUSTOM_BTN_37             = 341,
+    AKEYCODE_XH_CUSTOM_BTN_38             = 342,
+    AKEYCODE_XH_CUSTOM_BTN_39             = 343,
+    AKEYCODE_XH_CUSTOM_BTN_40             = 344,
+    AKEYCODE_XH_CUSTOM_BTN_41             = 345,
+    AKEYCODE_XH_CUSTOM_BTN_42             = 346,
+    AKEYCODE_XH_CUSTOM_BTN_43             = 347,
+    AKEYCODE_XH_CUSTOM_BTN_44             = 348,
+    AKEYCODE_XH_CUSTOM_BTN_45             = 349,
+    AKEYCODE_XH_CUSTOM_BTN_46             = 350,
+    AKEYCODE_XH_CUSTOM_BTN_47             = 351,
+    AKEYCODE_XH_CUSTOM_BTN_48             = 352,
+    AKEYCODE_XH_CUSTOM_BTN_49             = 353,
+    AKEYCODE_XH_CUSTOM_BTN_50             = 354,
+    AKEYCODE_XH_CUSTOM_BTN_51             = 355,
+    AKEYCODE_XH_CUSTOM_BTN_52             = 356,
+    AKEYCODE_XH_CUSTOM_BTN_53             = 357,
+    AKEYCODE_XH_CUSTOM_BTN_54             = 358,
+    AKEYCODE_XH_CUSTOM_BTN_55             = 359,
+    AKEYCODE_XH_CUSTOM_BTN_56             = 360,
+    AKEYCODE_XH_CUSTOM_BTN_57             = 361,
+    AKEYCODE_XH_CUSTOM_BTN_58             = 362,
+    AKEYCODE_XH_CUSTOM_BTN_59             = 363,
+    AKEYCODE_XH_CUSTOM_BTN_60             = 364,
+    AKEYCODE_XH_CUSTOM_BTN_61             = 365,
+    AKEYCODE_XH_CUSTOM_BTN_62             = 366,
+    AKEYCODE_XH_CUSTOM_BTN_63             = 367,
+    AKEYCODE_XH_CUSTOM_BTN_64             = 368,
+    AKEYCODE_XH_CUSTOM_BTN_65             = 369,
+    AKEYCODE_XH_CUSTOM_BTN_66             = 370,
+    AKEYCODE_XH_CUSTOM_BTN_67             = 371,
+    AKEYCODE_XH_CUSTOM_BTN_68             = 372,
+    AKEYCODE_XH_CUSTOM_BTN_69             = 373,
+    AKEYCODE_XH_CUSTOM_BTN_70             = 374,
+    AKEYCODE_XH_CUSTOM_BTN_71             = 375,
+    AKEYCODE_XH_CUSTOM_BTN_72             = 376,
+    AKEYCODE_XH_CUSTOM_BTN_73             = 377,
+    AKEYCODE_XH_CUSTOM_BTN_74             = 378,
+    AKEYCODE_XH_CUSTOM_BTN_75             = 379,
+    AKEYCODE_XH_CUSTOM_BTN_76             = 380,
+    AKEYCODE_XH_CUSTOM_BTN_77             = 381,
+    AKEYCODE_XH_CUSTOM_BTN_78             = 382,
+    AKEYCODE_XH_CUSTOM_BTN_79             = 383,
+    AKEYCODE_XH_CUSTOM_BTN_80             = 384,
+    AKEYCODE_XH_CUSTOM_BTN_81             = 385,
+    AKEYCODE_XH_CUSTOM_BTN_82             = 386,
+    AKEYCODE_XH_CUSTOM_BTN_83             = 387,
+    AKEYCODE_XH_CUSTOM_BTN_84             = 388,
+    AKEYCODE_XH_CUSTOM_BTN_85             = 389,
+    AKEYCODE_XH_CUSTOM_BTN_86             = 390,
+    AKEYCODE_XH_CUSTOM_BTN_87             = 391,
+    AKEYCODE_XH_CUSTOM_BTN_88             = 392,
+    AKEYCODE_XH_CUSTOM_BTN_89             = 393,
+    AKEYCODE_XH_CUSTOM_BTN_90             = 394,
+    AKEYCODE_XH_CUSTOM_BTN_91             = 395,
+    AKEYCODE_XH_CUSTOM_BTN_92             = 396,
+    AKEYCODE_XH_CUSTOM_BTN_93             = 397,
+    AKEYCODE_XH_CUSTOM_BTN_94             = 398,
+    AKEYCODE_XH_CUSTOM_BTN_95             = 399,
+    AKEYCODE_XH_CUSTOM_BTN_96             = 400,
+    AKEYCODE_XH_CUSTOM_BTN_97             = 401,
+    AKEYCODE_XH_CUSTOM_BTN_98             = 402,
+    AKEYCODE_XH_CUSTOM_BTN_99             = 403,
+    AKEYCODE_XH_CUSTOM_BTN_100            = 404,
+    AKEYCODE_XH_CUSTOM_BTN_101            = 405,
+    AKEYCODE_XH_CUSTOM_BTN_102            = 406,
+    AKEYCODE_XH_CUSTOM_BTN_103            = 407,
+    AKEYCODE_XH_CUSTOM_BTN_104            = 408,
+    AKEYCODE_XH_CUSTOM_BTN_105            = 409,
+    AKEYCODE_XH_CUSTOM_BTN_106            = 410,
+    AKEYCODE_XH_CUSTOM_BTN_107            = 411,
+    AKEYCODE_XH_CUSTOM_BTN_108            = 412,
+    AKEYCODE_XH_CUSTOM_BTN_109            = 413,
+    AKEYCODE_XH_CUSTOM_BTN_110            = 414,
+    AKEYCODE_XH_CUSTOM_BTN_111            = 415,
+    AKEYCODE_XH_CUSTOM_BTN_112            = 416,
+    AKEYCODE_XH_CUSTOM_BTN_113            = 417,
+    AKEYCODE_XH_CUSTOM_BTN_114            = 418,
+    AKEYCODE_XH_CUSTOM_BTN_115            = 419,
+    AKEYCODE_XH_CUSTOM_BTN_116            = 420,
+    AKEYCODE_XH_CUSTOM_BTN_117            = 421,
+    AKEYCODE_XH_CUSTOM_BTN_118            = 422,
+    AKEYCODE_XH_CUSTOM_BTN_119            = 423,
+    AKEYCODE_XH_CUSTOM_BTN_120            = 424,
+    AKEYCODE_XH_CUSTOM_BTN_121            = 425,
+    AKEYCODE_XH_CUSTOM_BTN_7              = 426,
+    AKEYCODE_XH_CUSTOM_BTN_8              = 427,
+/*************************************************
+*	sunls_for_yulinian_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.
 };
diff --git a/frameworks/native/include/input/InputEventLabels.h b/frameworks/native/include/input/InputEventLabels.h
old mode 100644
new mode 100755
index bcce2d3..e21dce4
--- a/frameworks/native/include/input/InputEventLabels.h
+++ b/frameworks/native/include/input/InputEventLabels.h
@@ -308,6 +308,129 @@ static const InputEventLabel KEYCODES[] = {
     DEFINE_KEYCODE(NAVIGATE_NEXT),
     DEFINE_KEYCODE(NAVIGATE_IN),
     DEFINE_KEYCODE(NAVIGATE_OUT),
+    
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_1  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_2  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_3  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_4  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_5  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_6  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_7  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_8  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_9  ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_10 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_11 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_12 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_13 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_14 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_15 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_16 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_17 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_18 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_19 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_20 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_21 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_22 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_23 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_24 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_25 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_26 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_27 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_28 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_29 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_30 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_31 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_32 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_33 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_34 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_35 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_36 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_37 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_38 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_39 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_40 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_41 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_42 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_43 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_44 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_45 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_46 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_47 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_48 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_49 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_50 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_51 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_52 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_53 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_54 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_55 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_56 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_57 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_58 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_59 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_60 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_61 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_62 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_63 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_64 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_65 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_66 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_67 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_68 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_69 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_70 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_71 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_72 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_73 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_74 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_75 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_76 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_77 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_78 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_79 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_80 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_81 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_82 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_83 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_84 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_85 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_86 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_87 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_88 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_89 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_90 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_91 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_92 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_93 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_94 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_95 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_96 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_97 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_98 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_99 ),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_100),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_101),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_102),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_103),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_104),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_105),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_106),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_107),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_108),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_109),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_110),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_111),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_112),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_113),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_114),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_115),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_116),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_117),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_118),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_119),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_120),
+    DEFINE_KEYCODE(XH_CUSTOM_BTN_121),
+    
 
     { NULL, 0 }
 };
diff --git a/kernel/drivers/input/remotectl/remotectl.h b/kernel/drivers/input/remotectl/remotectl.h
index 6abd6c4..318408a 100755
--- a/kernel/drivers/input/remotectl/remotectl.h
+++ b/kernel/drivers/input/remotectl/remotectl.h
@@ -12,7 +12,7 @@
 #define TIME_BIT1_MIN  1650  /*Bit1  2.25ms*/
 #define TIME_BIT1_MAX  2650
 
-#define TIME_PRE_MIN   13000   /*4500*/
+#define TIME_PRE_MIN   12000   /*4500*/
 #define TIME_PRE_MAX   14000   /*5500*/           /*PreLoad 4.5+0.56 = 5.06ms*/
 
 #define TIME_RPT_MIN   95000   /*101000*/
diff --git a/kernel/drivers/input/remotectl/rkxx_remotectl.c b/kernel/drivers/input/remotectl/rkxx_remotectl.c
index 161df8c..588c932 100755
--- a/kernel/drivers/input/remotectl/rkxx_remotectl.c
+++ b/kernel/drivers/input/remotectl/rkxx_remotectl.c
@@ -73,7 +73,7 @@ struct rkxx_remotectl_drvdata {
     long int pre_sec;
     long int cur_sec;
     long period;
-    int scanData;
+    unsigned int scanData;
     int count;
     int keybdNum;
     int keycode;
@@ -223,20 +223,120 @@ static struct rkxx_remote_key_table remote_key_table_dpfs[] = {
     {0xf0, 113},       //mute	
 };
 static struct rkxx_remote_key_table remote_key_table_yiyuan[] = {
-    {0xd0, KEY_POWER}, 
-    {0x38, KEY_VOLUMEDOWN},    
-    {0x70, KEY_VOLUMEUP},     
-    {0x50, 113},       //mute	
-    {0x48, KEY_UP},  
-    {0xc8, KEY_DOWN},
-    {0xa8, KEY_LEFT},
-    {0x28, KEY_RIGHT}, 
-    {0x78, 28}, 
-    {0xe8, KEY_HOME},
-    {0x82, KEY_MENU},
-    {0xc0, KEY_BACK},          
-    {0x8e, 388}, 
-    {0x42, KEY_F1}, 
+		{0x01, KEY_C_START		},
+		{0x02, KEY_C_STOP		  },
+		{0x03, KEY_C_STARTSTOP },
+		{0x04, KEY_C_ENTER		},
+		{0x05, KEY_C_RESET		},
+		{0x06, KEY_C_MODE		  },
+		{0x07, KEY_C_PROGRAM	},
+		{0x08, KEY_C_PROGRAMADD },
+		{0x09, KEY_C_PROGRAMDEC },
+		{0x0a, KEY_C_SP_ADD	  },
+		{0x0b, KEY_C_SP_DEC	  },
+		{0x0c, KEY_C_INC_ADD	},
+		{0x0d, KEY_C_INC_DEC	},
+		{0x0e, KEY_C_RES_ADD	},
+		{0x0f, KEY_C_RES_DEC	},
+		{0x10, KEY_C_SET_ADD	},
+		{0x11, KEY_C_SET_DEC	},
+		{0x12, KEY_C_VOL_ADD	},
+		{0x13, KEY_C_VOL_DEC	},
+		{0x14, KEY_C_REPEAT	  },
+		{0x15, KEY_C_SP_OK    },
+		{0x16, KEY_C_INC_OK   },
+		{0x17, KEY_C_FAN			},
+		{0x18, KEY_C_COOLDOWN },
+		{0x19, KEY_C_RETURN	  },
+		{0x1a, KEY_C_PAUSE		},
+		{0x1b, KEY_C_PLAYPAUSE },
+		{0x1c, KEY_C_MAINPAGE },
+		{0x1d, KEY_C_MENU		  },
+		{0x1e, KEY_C_PREV		  },
+		{0x1f, KEY_C_NEXT		  },
+		{0x20, KEY_C_SET			},
+		{0x21, KEY_C_MUTE		  },
+		{0x30, KEY_C_SP_1		  },
+		{0x31, KEY_C_SP_2		  },
+		{0x32, KEY_C_SP_3		  },
+		{0x33, KEY_C_SP_4		  },
+		{0x34, KEY_C_SP_5		  },
+		{0x35, KEY_C_SP_6		  },
+		{0x36, KEY_C_SP_7		  },
+		{0x37, KEY_C_SP_8		  },
+		{0x38, KEY_C_SP_9		  },
+		{0x39, KEY_C_SP_10		},
+		{0x3a, KEY_C_SP_11		},
+		{0x3b, KEY_C_SP_12		},
+		{0x3c, KEY_C_SP_13		},
+		{0x3d, KEY_C_SP_14		},
+		{0x3e, KEY_C_SP_15		},
+		{0x3f, KEY_C_SP_16		},
+		{0x40, KEY_C_SP_17		},
+		{0x41, KEY_C_SP_18		},
+		{0x42, KEY_C_SP_19		},
+		{0x43, KEY_C_SP_20		},
+		{0x50, KEY_C_INC_1		},
+		{0x51, KEY_C_INC_2		},
+		{0x52, KEY_C_INC_3		},
+		{0x53, KEY_C_INC_4		},
+		{0x54, KEY_C_INC_5		},
+		{0x55, KEY_C_INC_6		},
+		{0x56, KEY_C_INC_7		},
+		{0x57, KEY_C_INC_8		},
+		{0x58, KEY_C_INC_9		},
+		{0x59, KEY_C_INC_10	  },
+		{0x5a, KEY_C_INC_11	  },
+		{0x5b, KEY_C_INC_12	  },
+		{0x5c, KEY_C_INC_13	  },
+		{0x5d, KEY_C_INC_14	  },
+		{0x5e, KEY_C_INC_15	  },
+		{0x5f, KEY_C_INC_16	  },
+		{0x60, KEY_C_INC_17	  },
+		{0x61, KEY_C_INC_18	  },
+		{0x62, KEY_C_INC_19	  },
+		{0x63, KEY_C_INC_20	  },
+		{0x70, KEY_C_RES_1		},
+		{0x71, KEY_C_RES_2		},
+		{0x72, KEY_C_RES_3		},
+		{0x73, KEY_C_RES_4		},
+		{0x74, KEY_C_RES_5		},
+		{0x75, KEY_C_RES_6		},
+		{0x76, KEY_C_RES_7		},
+		{0x77, KEY_C_RES_8		},
+		{0x78, KEY_C_RES_9		},
+		{0x79, KEY_C_RES_10	  },
+		{0x7a, KEY_C_RES_11	  },
+		{0x7b, KEY_C_RES_12	  },
+		{0x7c, KEY_C_RES_13	  },
+		{0x7d, KEY_C_RES_14	  },
+		{0x7e, KEY_C_RES_15	  },
+		{0x7f, KEY_C_RES_16	  },
+		{0x80, KEY_C_RES_17	  },
+		{0x81, KEY_C_RES_18	  },
+		{0x82, KEY_C_RES_19	  },
+		{0x83, KEY_C_RES_20	  },
+		{0x90, KEY_C_PRO_1		},
+		{0x91, KEY_C_PRO_2		},
+    {0x92, KEY_C_PRO_3		},  	
+    {0x93, KEY_C_PRO_4		}, 
+    {0x94, KEY_C_PRO_5		},   
+    {0x95, KEY_C_PRO_6		},       		
+    {0x96, KEY_C_PRO_7		},  				
+    {0x97, KEY_C_PRO_8		},      
+    {0x98, KEY_C_PRO_9		},      
+    {0x99, KEY_C_PRO_10	  },  
+    {0x9a, KEY_C_PRO_11	  },        		
+    {0x9b, KEY_C_PRO_12	  },  			
+    {0x9c, KEY_C_PRO_13	  },  			
+		{0x9d, KEY_C_PRO_14	  },	
+		{0x9e, KEY_C_PRO_15	  },
+		{0x9f, KEY_C_PRO_16	  },
+		{0xa0, KEY_C_PRO_17	  },
+		{0xa1, KEY_C_PRO_18	  },
+		{0xa2, KEY_C_PRO_19	  },
+		{0xa3, KEY_C_PRO_20	  },
+
 };
 
 static struct rkxx_remote_key_table remote_key_table_ShengZhong[] = {
@@ -284,7 +384,7 @@ static struct rkxx_remotectl_button remotectl_button[] =
     },
     {  
        .usercode = 0x10ef, 
-       .nbuttons =  17, 
+       .nbuttons =  113, 
        .key_table = &remote_key_table_yiyuan[0],
     },
 	{  
@@ -308,12 +408,26 @@ static int remotectl_keybdNum_lookup(struct rkxx_remotectl_drvdata *ddata)
     return 0;
 }
 
+unsigned int reverse(unsigned int x)
+{
+    x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1));
+    x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2));
+    x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4));
+    x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8));
+
+    return((x >> 16) | (x << 16));
+}
 
 static int remotectl_keycode_lookup(struct rkxx_remotectl_drvdata *ddata)
 {	
     int i;	
-    unsigned char keyData = ((ddata->scanData >> 8) & 0xff);
-		//printk("vic------ remotectl_keycode_lookup  0x%x
",keyData);
+   // unsigned char keyData = ((ddata->scanData >> 8) & 0xff);
+
+   unsigned char keyData = ((reverse((ddata->scanData)&0xFFFF)>>16) & 0x00ff);
+
+   
+	 //printk("vic------ remotectl_keycode_lookup  0x%x
",keyData);
+		
     for (i = 0; i < remotectl_button[ddata->keybdNum].nbuttons; i++){
         if (remotectl_button[ddata->keybdNum].key_table[i].scanCode == keyData){			
             ddata->keycode = remotectl_button[ddata->keybdNum].key_table[i].keyCode;
diff --git a/kernel/include/uapi/linux/input.h b/kernel/include/uapi/linux/input.h
old mode 100644
new mode 100755
index a86f530..caf7f9d
--- a/kernel/include/uapi/linux/input.h
+++ b/kernel/include/uapi/linux/input.h
@@ -473,6 +473,129 @@ struct input_keymap_entry {
 
 #define KEY_MICMUTE		248	/* Mute / unmute the microphone */
 
+/*************************************************
+*	sunls_for_yulinian_start					  *
+*	按键红外用户码——0xf708						  *
+*	按键红外键值码定义							  *
+ *************************************************/
+#define KEY_C_START					0x01
+#define KEY_C_STOP					0x02
+#define KEY_C_STARTSTOP			0x03
+#define KEY_C_ENTER					0x04
+#define KEY_C_RESET					0x05
+#define KEY_C_MODE					0x06
+#define KEY_C_PROGRAM				0x07
+#define KEY_C_PROGRAMADD		0x08
+#define KEY_C_PROGRAMDEC		0x09
+#define KEY_C_SP_ADD				0x0a
+#define KEY_C_SP_DEC				0x0b
+#define KEY_C_INC_ADD				0x0c
+#define KEY_C_INC_DEC				0x0d
+#define KEY_C_RES_ADD				0x0e
+#define KEY_C_RES_DEC				0x0f
+#define KEY_C_SET_ADD				0x10
+#define KEY_C_SET_DEC				0x11
+#define KEY_C_VOL_ADD				0x12
+#define KEY_C_VOL_DEC				0x13
+#define KEY_C_REPEAT				0x14
+#define KEY_C_SP_OK    			0x15
+#define KEY_C_INC_OK   			0x16
+#define KEY_C_FAN						0x17
+#define KEY_C_COOLDOWN			0x18
+#define KEY_C_RETURN				0x19
+#define KEY_C_PAUSE					0x1a
+#define KEY_C_PLAYPAUSE			0x1b
+#define KEY_C_MAINPAGE			0x1c
+#define KEY_C_MENU					0x1d
+#define KEY_C_PREV					0x1e
+#define KEY_C_NEXT					0x1f
+#define KEY_C_SET						0x20
+#define KEY_C_MUTE					0x21
+#define KEY_C_SP_1					0x30
+#define KEY_C_SP_2					0x31
+#define KEY_C_SP_3					0x32
+#define KEY_C_SP_4					0x33
+#define KEY_C_SP_5					0x34
+#define KEY_C_SP_6					0x35
+#define KEY_C_SP_7					0x36
+#define KEY_C_SP_8					0x37
+#define KEY_C_SP_9					0x38
+#define KEY_C_SP_10					0x39
+#define KEY_C_SP_11					0x3a
+#define KEY_C_SP_12					0x3b
+#define KEY_C_SP_13					0x3c
+#define KEY_C_SP_14					0x3d
+#define KEY_C_SP_15					0x3e
+#define KEY_C_SP_16					0x3f
+#define KEY_C_SP_17					0x40
+#define KEY_C_SP_18					0x41
+#define KEY_C_SP_19					0x42
+#define KEY_C_SP_20					0x43
+#define KEY_C_INC_1					0x50
+#define KEY_C_INC_2					0x51
+#define KEY_C_INC_3					0x52
+#define KEY_C_INC_4					0x53
+#define KEY_C_INC_5					0x54
+#define KEY_C_INC_6					0x55
+#define KEY_C_INC_7					0x56
+#define KEY_C_INC_8					0x57
+#define KEY_C_INC_9					0x58
+#define KEY_C_INC_10				0x59
+#define KEY_C_INC_11				0x5a
+#define KEY_C_INC_12				0x5b
+#define KEY_C_INC_13				0x5c
+#define KEY_C_INC_14				0x5d
+#define KEY_C_INC_15				0x5e
+#define KEY_C_INC_16				0x5f
+#define KEY_C_INC_17				0x60
+#define KEY_C_INC_18				0x61
+#define KEY_C_INC_19				0x62
+#define KEY_C_INC_20				0x63
+#define KEY_C_RES_1					0x70
+#define KEY_C_RES_2					0x71
+#define KEY_C_RES_3					0x72
+#define KEY_C_RES_4					0x73
+#define KEY_C_RES_5					0x74
+#define KEY_C_RES_6					0x75
+#define KEY_C_RES_7					0x76
+#define KEY_C_RES_8					0x77
+#define KEY_C_RES_9					0x78
+#define KEY_C_RES_10				0x79
+#define KEY_C_RES_11				0x7a
+#define KEY_C_RES_12				0x7b
+#define KEY_C_RES_13				0x7c
+#define KEY_C_RES_14				0x7d
+#define KEY_C_RES_15				0x7e
+#define KEY_C_RES_16				0x7f
+#define KEY_C_RES_17				0x80
+#define KEY_C_RES_18				0x81
+#define KEY_C_RES_19				0x82
+#define KEY_C_RES_20				0x83
+#define KEY_C_PRO_1					0x90
+#define KEY_C_PRO_2					0x91
+#define KEY_C_PRO_3					0x92
+#define KEY_C_PRO_4					0x93
+#define KEY_C_PRO_5					0x94
+#define KEY_C_PRO_6					0x95
+#define KEY_C_PRO_7					0x96
+#define KEY_C_PRO_8					0x97
+#define KEY_C_PRO_9					0x98
+#define KEY_C_PRO_10				0x99
+#define KEY_C_PRO_11				0x9a
+#define KEY_C_PRO_12				0x9b
+#define KEY_C_PRO_13				0x9c
+#define KEY_C_PRO_14				0x9d
+#define KEY_C_PRO_15				0x9e
+#define KEY_C_PRO_16				0x9f
+#define KEY_C_PRO_17				0xa0
+#define KEY_C_PRO_18				0xa1
+#define KEY_C_PRO_19				0xa2
+#define KEY_C_PRO_20				0xa3 
+                        
+/*************************************************
+*	sunls_for_yulinian_end						  *
+ *************************************************/
+
 /* Code 255 is reserved for special needs of AT keyboard driver */
 
 #define BTN_MISC		0x100

  

原文地址:https://www.cnblogs.com/crushgirl/p/14001225.html