kernel目录下
mstar/mstar/ir/Kconfig
mstar/mstar/ir/IR_MSTAR_DTV.h
drivers/media/rc/keymaps/rc-mstar-tv.c
添加一个config:
.config.bk.thtf
1.Kconfig:
添加一个分支:
==============================加在末尾========
choice
prompt "IR REMOTE"
default THTF_IR
config REALTOP_IR
bool "realtop ir remote"
config THTF_IR
bool "thtf ir remote"
config HAIER_IR
bool "haier ir remote"
config VIDEOCON_IR
bool "videocon ir remote"
endchoice
prompt "IR REMOTE"
default THTF_IR
config REALTOP_IR
bool "realtop ir remote"
config THTF_IR
bool "thtf ir remote"
config HAIER_IR
bool "haier ir remote"
config VIDEOCON_IR
bool "videocon ir remote"
endchoice
=======================================
2.IR_MSTAR_DTV.h:
添加客户头码:
======================================
// IR Header code define
#ifdef CONFIG_REALTOP_IR //realtop
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#elif CONFIG_THTF_IR //thtf
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#elif CONFIG_HAIER_IR //haier
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#elif CONFIG_VIDEOCON_IR //videocon
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#else //default to MSTAR IR
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#endif
#ifdef CONFIG_REALTOP_IR //realtop
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#elif CONFIG_THTF_IR //thtf
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#elif CONFIG_HAIER_IR //haier
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#elif CONFIG_VIDEOCON_IR //videocon
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#else //default to MSTAR IR
#define IR_HEADER_CODE0 0x00 // Custom 0
#define IR_HEADER_CODE1 0xFF // Custom 1
#endif
===========================================
3.rc-mstar-tv.c
添加键值:static struct rc_map_table mstar_tv[]这个结构体里:
==================================================
#if CONFIG_THTF_IR //thtf
{ 0x0046, KEY_POWER },
{ 0x004C, KEY_MUTE },
{ 0x0001, KEY_1 },
{ 0x0002, KEY_2 },
{ 0x0003, KEY_3 },
{ 0x0004, KEY_4 },
{ 0x0005, KEY_5 },
{ 0x0006, KEY_6 },
{ 0x0007, KEY_7 },
{ 0x0008, KEY_8 },
{ 0x0009, KEY_9 },
{ 0x0000, KEY_0 },
{ 0x0041, KEY_CHANNEL }, // CHANNEL_RETURN
{ 0x004B, KEY_KP1}, // TV_INPUT
{ 0x0048, KEY_UP },
{ 0x0045, KEY_MENU },
{ 0x004E, KEY_LEFT },
{ 0x004A, KEY_ENTER },
{ 0x0049, KEY_RIGHT },
{ 0x004F, KEY_INFO },
{ 0x004D, KEY_DOWN },
{ 0x000D, KEY_BACK},
{ 0x000F, KEY_VOLUMEUP },
{ 0x005B, KEY_HOME},
{ 0x000C, KEY_CHANNELUP },
{ 0x005A, KEY_VOLUMEDOWN },
{ 0x0047, KEY_FN_F7 }, // 3D_MODE
{ 0x0019, KEY_CHANNELDOWN },
{ 0x0057, KEY_PLAYPAUSE },
{ 0x0056, KEY_REWIND },
{ 0x0017, KEY_FORWARD },
{ 0x0043, KEY_SUBTITLE },
{ 0x0016, KEY_STOP },
{ 0x0054, KEY_PREVIOUSSONG },
{ 0x0015, KEY_NEXTSONG },
{ 0x0044, KEY_AUDIO }, // MTS
{ 0x0052, KEY_RED },
{ 0x0013, KEY_GREEN },
{ 0x0050, KEY_YELLOW },
{ 0x0011, KEY_BLUE },
{ 0x0014, KEY_FN_F2 }, // FREEZE
{ 0x0040, KEY_SLEEP },
{ 0x0018, KEY_EPG },
{ 0x0058, KEY_ZOOM }, // ASPECT RATIO
{ 0x0059, KEY_FN_F8}, // add fav
{ 0x001A, KEY_FAVORITES}, // add fav
{ 0x0061, KEY_F2},
#else //default to MSTAR IR
{ 0x0046, KEY_POWER },
{ 0x0050, KEY_0 },
{ 0x0049, KEY_1 },
{ 0x0055, KEY_2 },
{ 0x0059, KEY_3 },
{ 0x004D, KEY_4 },
{ 0x0051, KEY_5 },
{ 0x005D, KEY_6 },
{ 0x0048, KEY_7 },
{ 0x0054, KEY_8 },
{ 0x0058, KEY_9 },
{ 0x0047, KEY_RED },
{ 0x004B, KEY_GREEN },
{ 0x0057, KEY_YELLOW },
{ 0x005B, KEY_BLUE },
{ 0x0052, KEY_UP },
{ 0x0013, KEY_DOWN },
{ 0x0006, KEY_LEFT },
{ 0x001A, KEY_RIGHT },
{ 0x000F, KEY_ENTER },
{ 0x001F, KEY_CHANNELUP },
{ 0x0019, KEY_CHANNELDOWN },
{ 0x0016, KEY_VOLUMEUP },
{ 0x0015, KEY_VOLUMEDOWN },
{ 0x0003, KEY_PAGEUP },
{ 0x0005, KEY_PAGEDOWN },
{ 0x0017, KEY_HOME},
{ 0x0007, KEY_MENU },
{ 0x001B, KEY_BACK },
{ 0x005A, KEY_MUTE },
{ 0x000D, KEY_RECORD }, // DVR
{ 0x0042, KEY_HELP }, // GUIDE
{ 0x0014, KEY_INFO },
{ 0x0040, KEY_KP0 }, // WINDOW
{ 0x0004, KEY_KP1 }, // TV_INPUT
{ 0x000E, KEY_REWIND },
{ 0x0012, KEY_FORWARD },
{ 0x0002, KEY_PREVIOUSSONG },
{ 0x001E, KEY_NEXTSONG },
{ 0x0001, KEY_PLAY },
{ 0x001D, KEY_PAUSE },
{ 0x0011, KEY_STOP },
{ 0x0044, KEY_AUDIO }, // (C)SOUND_MODE
{ 0x0056, KEY_CAMERA }, // (C)PICTURE_MODE
{ 0x004C, KEY_ZOOM }, // (C)ASPECT_RATIO
{ 0x005C, KEY_CHANNEL }, // (C)CHANNEL_RETURN
{ 0x0045, KEY_SLEEP }, // (C)SLEEP
{ 0x004A, KEY_EPG }, // (C)EPG
{ 0x0010, KEY_LIST }, // (C)LIST
{ 0x0053, KEY_SUBTITLE }, // (C)SUBTITLE
{ 0x0041, KEY_FN_F1 }, // (C)MTS
{ 0x004E, KEY_FN_F2 }, // (C)FREEZE
{ 0x000A, KEY_FN_F3 }, // (C)TTX
{ 0x0009, KEY_FN_F4 }, // (C)CC
{ 0x001C, KEY_FN_F5 }, // (C)TV_SETTING
{ 0x0008, KEY_FN_F6 }, // (C)SCREENSHOT
{ 0x000B, KEY_F1 }, // MSTAR_BALANCE
{ 0x0018, KEY_F2 }, // MSTAR_INDEX
{ 0x0000, KEY_F3 }, // MSTAR_HOLD
{ 0x000C, KEY_F4 }, // MSTAR_UPDATE
{ 0x004F, KEY_F5 }, // MSTAR_REVEAL
{ 0x005E, KEY_F6 }, // MSTAR_SUBCODE
{ 0x0043, KEY_F7 }, // MSTAR_SIZE
{ 0x005F, KEY_F8 }, // MSTAR_CLOCK
{ 0x00FE, KEY_POWER2 }, // FAKE_POWER
{ 0x00FF, KEY_OK }, // KEY_OK
// 2nd IR controller.
#endif
{ 0x0046, KEY_POWER },
{ 0x004C, KEY_MUTE },
{ 0x0001, KEY_1 },
{ 0x0002, KEY_2 },
{ 0x0003, KEY_3 },
{ 0x0004, KEY_4 },
{ 0x0005, KEY_5 },
{ 0x0006, KEY_6 },
{ 0x0007, KEY_7 },
{ 0x0008, KEY_8 },
{ 0x0009, KEY_9 },
{ 0x0000, KEY_0 },
{ 0x0041, KEY_CHANNEL }, // CHANNEL_RETURN
{ 0x004B, KEY_KP1}, // TV_INPUT
{ 0x0048, KEY_UP },
{ 0x0045, KEY_MENU },
{ 0x004E, KEY_LEFT },
{ 0x004A, KEY_ENTER },
{ 0x0049, KEY_RIGHT },
{ 0x004F, KEY_INFO },
{ 0x004D, KEY_DOWN },
{ 0x000D, KEY_BACK},
{ 0x000F, KEY_VOLUMEUP },
{ 0x005B, KEY_HOME},
{ 0x000C, KEY_CHANNELUP },
{ 0x005A, KEY_VOLUMEDOWN },
{ 0x0047, KEY_FN_F7 }, // 3D_MODE
{ 0x0019, KEY_CHANNELDOWN },
{ 0x0057, KEY_PLAYPAUSE },
{ 0x0056, KEY_REWIND },
{ 0x0017, KEY_FORWARD },
{ 0x0043, KEY_SUBTITLE },
{ 0x0016, KEY_STOP },
{ 0x0054, KEY_PREVIOUSSONG },
{ 0x0015, KEY_NEXTSONG },
{ 0x0044, KEY_AUDIO }, // MTS
{ 0x0052, KEY_RED },
{ 0x0013, KEY_GREEN },
{ 0x0050, KEY_YELLOW },
{ 0x0011, KEY_BLUE },
{ 0x0014, KEY_FN_F2 }, // FREEZE
{ 0x0040, KEY_SLEEP },
{ 0x0018, KEY_EPG },
{ 0x0058, KEY_ZOOM }, // ASPECT RATIO
{ 0x0059, KEY_FN_F8}, // add fav
{ 0x001A, KEY_FAVORITES}, // add fav
{ 0x0061, KEY_F2},
#else //default to MSTAR IR
{ 0x0046, KEY_POWER },
{ 0x0050, KEY_0 },
{ 0x0049, KEY_1 },
{ 0x0055, KEY_2 },
{ 0x0059, KEY_3 },
{ 0x004D, KEY_4 },
{ 0x0051, KEY_5 },
{ 0x005D, KEY_6 },
{ 0x0048, KEY_7 },
{ 0x0054, KEY_8 },
{ 0x0058, KEY_9 },
{ 0x0047, KEY_RED },
{ 0x004B, KEY_GREEN },
{ 0x0057, KEY_YELLOW },
{ 0x005B, KEY_BLUE },
{ 0x0052, KEY_UP },
{ 0x0013, KEY_DOWN },
{ 0x0006, KEY_LEFT },
{ 0x001A, KEY_RIGHT },
{ 0x000F, KEY_ENTER },
{ 0x001F, KEY_CHANNELUP },
{ 0x0019, KEY_CHANNELDOWN },
{ 0x0016, KEY_VOLUMEUP },
{ 0x0015, KEY_VOLUMEDOWN },
{ 0x0003, KEY_PAGEUP },
{ 0x0005, KEY_PAGEDOWN },
{ 0x0017, KEY_HOME},
{ 0x0007, KEY_MENU },
{ 0x001B, KEY_BACK },
{ 0x005A, KEY_MUTE },
{ 0x000D, KEY_RECORD }, // DVR
{ 0x0042, KEY_HELP }, // GUIDE
{ 0x0014, KEY_INFO },
{ 0x0040, KEY_KP0 }, // WINDOW
{ 0x0004, KEY_KP1 }, // TV_INPUT
{ 0x000E, KEY_REWIND },
{ 0x0012, KEY_FORWARD },
{ 0x0002, KEY_PREVIOUSSONG },
{ 0x001E, KEY_NEXTSONG },
{ 0x0001, KEY_PLAY },
{ 0x001D, KEY_PAUSE },
{ 0x0011, KEY_STOP },
{ 0x0044, KEY_AUDIO }, // (C)SOUND_MODE
{ 0x0056, KEY_CAMERA }, // (C)PICTURE_MODE
{ 0x004C, KEY_ZOOM }, // (C)ASPECT_RATIO
{ 0x005C, KEY_CHANNEL }, // (C)CHANNEL_RETURN
{ 0x0045, KEY_SLEEP }, // (C)SLEEP
{ 0x004A, KEY_EPG }, // (C)EPG
{ 0x0010, KEY_LIST }, // (C)LIST
{ 0x0053, KEY_SUBTITLE }, // (C)SUBTITLE
{ 0x0041, KEY_FN_F1 }, // (C)MTS
{ 0x004E, KEY_FN_F2 }, // (C)FREEZE
{ 0x000A, KEY_FN_F3 }, // (C)TTX
{ 0x0009, KEY_FN_F4 }, // (C)CC
{ 0x001C, KEY_FN_F5 }, // (C)TV_SETTING
{ 0x0008, KEY_FN_F6 }, // (C)SCREENSHOT
{ 0x000B, KEY_F1 }, // MSTAR_BALANCE
{ 0x0018, KEY_F2 }, // MSTAR_INDEX
{ 0x0000, KEY_F3 }, // MSTAR_HOLD
{ 0x000C, KEY_F4 }, // MSTAR_UPDATE
{ 0x004F, KEY_F5 }, // MSTAR_REVEAL
{ 0x005E, KEY_F6 }, // MSTAR_SUBCODE
{ 0x0043, KEY_F7 }, // MSTAR_SIZE
{ 0x005F, KEY_F8 }, // MSTAR_CLOCK
{ 0x00FE, KEY_POWER2 }, // FAKE_POWER
{ 0x00FF, KEY_OK }, // KEY_OK
// 2nd IR controller.
#endif
============================================================
4.添加config
查看编译脚本,用的是哪个config
复制一份.config.madison.android.emmc.performance,并重命名:.config.bk.thtf
Mstar按键配置:
在串口工具输入getevent:
配好的打印信息:
92,66都是十六进制的数!!!
92:对应的是Linux层的,文件:kernel\3.1.10\drivers\media\rc\keymaps\rc-XXXX-tv.c
66:对应的是android层的,文件:device\mstar\mango\preinstall\keylayout\Vendor_XXXX_Product_XXXX.kl,
在Linux层的映射关系关键是:kernel\3.1.10\include\linux\input.h;
没配好的打印信息:
在android层,kl文件与KeyEvent.KEYCODE的对应关系表:
需要注意的是KeycodeLabels.h文件,在android4.4.4以前的版本里,它的路径是 frameworks/base/include/ui/keycodeLabels.h