35d1988c6e
Now that V4L drivers can support more than 7 bits for scan code, let's add a modified version for the Hauppauge Grey IR containing the full IR scancode. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
3317 lines
84 KiB
C
3317 lines
84 KiB
C
/*
|
|
Keytables for supported remote controls, used on drivers/media
|
|
devices.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
/*
|
|
* NOTICE FOR DEVELOPERS:
|
|
* The IR mappings should be as close as possible to what's
|
|
* specified at:
|
|
* http://linuxtv.org/wiki/index.php/Remote_Controllers
|
|
*/
|
|
#include <linux/module.h>
|
|
|
|
#include <linux/input.h>
|
|
#include <media/ir-common.h>
|
|
|
|
/* empty keytable, can be used as placeholder for not-yet created keytables */
|
|
static struct ir_scancode ir_codes_empty[] = {
|
|
{ 0x2a, KEY_COFFEE },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_empty_table = {
|
|
.scan = ir_codes_empty,
|
|
.size = ARRAY_SIZE(ir_codes_empty),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_empty_table);
|
|
|
|
/* Michal Majchrowicz <mmajchrowicz@gmail.com> */
|
|
static struct ir_scancode ir_codes_proteus_2309[] = {
|
|
/* numeric */
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x5c, KEY_POWER }, /* power */
|
|
{ 0x20, KEY_ZOOM }, /* full screen */
|
|
{ 0x0f, KEY_BACKSPACE }, /* recall */
|
|
{ 0x1b, KEY_ENTER }, /* mute */
|
|
{ 0x41, KEY_RECORD }, /* record */
|
|
{ 0x43, KEY_STOP }, /* stop */
|
|
{ 0x16, KEY_S },
|
|
{ 0x1a, KEY_POWER2 }, /* off */
|
|
{ 0x2e, KEY_RED },
|
|
{ 0x1f, KEY_CHANNELDOWN }, /* channel - */
|
|
{ 0x1c, KEY_CHANNELUP }, /* channel + */
|
|
{ 0x10, KEY_VOLUMEDOWN }, /* volume - */
|
|
{ 0x1e, KEY_VOLUMEUP }, /* volume + */
|
|
{ 0x14, KEY_F1 },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_proteus_2309_table = {
|
|
.scan = ir_codes_proteus_2309,
|
|
.size = ARRAY_SIZE(ir_codes_proteus_2309),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_proteus_2309_table);
|
|
|
|
/* Matt Jesson <dvb@jesson.eclipse.co.uk */
|
|
static struct ir_scancode ir_codes_avermedia_dvbt[] = {
|
|
{ 0x28, KEY_0 }, /* '0' / 'enter' */
|
|
{ 0x22, KEY_1 }, /* '1' */
|
|
{ 0x12, KEY_2 }, /* '2' / 'up arrow' */
|
|
{ 0x32, KEY_3 }, /* '3' */
|
|
{ 0x24, KEY_4 }, /* '4' / 'left arrow' */
|
|
{ 0x14, KEY_5 }, /* '5' */
|
|
{ 0x34, KEY_6 }, /* '6' / 'right arrow' */
|
|
{ 0x26, KEY_7 }, /* '7' */
|
|
{ 0x16, KEY_8 }, /* '8' / 'down arrow' */
|
|
{ 0x36, KEY_9 }, /* '9' */
|
|
|
|
{ 0x20, KEY_LIST }, /* 'source' */
|
|
{ 0x10, KEY_TEXT }, /* 'teletext' */
|
|
{ 0x00, KEY_POWER }, /* 'power' */
|
|
{ 0x04, KEY_AUDIO }, /* 'audio' */
|
|
{ 0x06, KEY_ZOOM }, /* 'full screen' */
|
|
{ 0x18, KEY_VIDEO }, /* 'display' */
|
|
{ 0x38, KEY_SEARCH }, /* 'loop' */
|
|
{ 0x08, KEY_INFO }, /* 'preview' */
|
|
{ 0x2a, KEY_REWIND }, /* 'backward <<' */
|
|
{ 0x1a, KEY_FASTFORWARD }, /* 'forward >>' */
|
|
{ 0x3a, KEY_RECORD }, /* 'capture' */
|
|
{ 0x0a, KEY_MUTE }, /* 'mute' */
|
|
{ 0x2c, KEY_RECORD }, /* 'record' */
|
|
{ 0x1c, KEY_PAUSE }, /* 'pause' */
|
|
{ 0x3c, KEY_STOP }, /* 'stop' */
|
|
{ 0x0c, KEY_PLAY }, /* 'play' */
|
|
{ 0x2e, KEY_RED }, /* 'red' */
|
|
{ 0x01, KEY_BLUE }, /* 'blue' / 'cancel' */
|
|
{ 0x0e, KEY_YELLOW }, /* 'yellow' / 'ok' */
|
|
{ 0x21, KEY_GREEN }, /* 'green' */
|
|
{ 0x11, KEY_CHANNELDOWN }, /* 'channel -' */
|
|
{ 0x31, KEY_CHANNELUP }, /* 'channel +' */
|
|
{ 0x1e, KEY_VOLUMEDOWN }, /* 'volume -' */
|
|
{ 0x3e, KEY_VOLUMEUP }, /* 'volume +' */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_avermedia_dvbt_table = {
|
|
.scan = ir_codes_avermedia_dvbt,
|
|
.size = ARRAY_SIZE(ir_codes_avermedia_dvbt),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt_table);
|
|
|
|
/* Mauro Carvalho Chehab <mchehab@infradead.org> */
|
|
static struct ir_scancode ir_codes_avermedia_m135a[] = {
|
|
{ 0x00, KEY_POWER2 },
|
|
{ 0x2e, KEY_DOT }, /* '.' */
|
|
{ 0x01, KEY_MODE }, /* TV/FM */
|
|
|
|
{ 0x05, KEY_1 },
|
|
{ 0x06, KEY_2 },
|
|
{ 0x07, KEY_3 },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x0a, KEY_5 },
|
|
{ 0x0b, KEY_6 },
|
|
{ 0x0d, KEY_7 },
|
|
{ 0x0e, KEY_8 },
|
|
{ 0x0f, KEY_9 },
|
|
{ 0x11, KEY_0 },
|
|
|
|
{ 0x13, KEY_RIGHT }, /* -> */
|
|
{ 0x12, KEY_LEFT }, /* <- */
|
|
|
|
{ 0x17, KEY_SLEEP }, /* Capturar Imagem */
|
|
{ 0x10, KEY_SHUFFLE }, /* Amostra */
|
|
|
|
/* FIXME: The keys bellow aren't ok */
|
|
|
|
{ 0x43, KEY_CHANNELUP },
|
|
{ 0x42, KEY_CHANNELDOWN },
|
|
{ 0x1f, KEY_VOLUMEUP },
|
|
{ 0x1e, KEY_VOLUMEDOWN },
|
|
{ 0x0c, KEY_ENTER },
|
|
|
|
{ 0x14, KEY_MUTE },
|
|
{ 0x08, KEY_AUDIO },
|
|
|
|
{ 0x03, KEY_TEXT },
|
|
{ 0x04, KEY_EPG },
|
|
{ 0x2b, KEY_TV2 }, /* TV2 */
|
|
|
|
{ 0x1d, KEY_RED },
|
|
{ 0x1c, KEY_YELLOW },
|
|
{ 0x41, KEY_GREEN },
|
|
{ 0x40, KEY_BLUE },
|
|
|
|
{ 0x1a, KEY_PLAYPAUSE },
|
|
{ 0x19, KEY_RECORD },
|
|
{ 0x18, KEY_PLAY },
|
|
{ 0x1b, KEY_STOP },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_avermedia_m135a_table = {
|
|
.scan = ir_codes_avermedia_m135a,
|
|
.size = ARRAY_SIZE(ir_codes_avermedia_m135a),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_avermedia_m135a_table);
|
|
|
|
/* Oldrich Jedlicka <oldium.pro@seznam.cz> */
|
|
static struct ir_scancode ir_codes_avermedia_cardbus[] = {
|
|
{ 0x00, KEY_POWER },
|
|
{ 0x01, KEY_TUNER }, /* TV/FM */
|
|
{ 0x03, KEY_TEXT }, /* Teletext */
|
|
{ 0x04, KEY_EPG },
|
|
{ 0x05, KEY_1 },
|
|
{ 0x06, KEY_2 },
|
|
{ 0x07, KEY_3 },
|
|
{ 0x08, KEY_AUDIO },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x0a, KEY_5 },
|
|
{ 0x0b, KEY_6 },
|
|
{ 0x0c, KEY_ZOOM }, /* Full screen */
|
|
{ 0x0d, KEY_7 },
|
|
{ 0x0e, KEY_8 },
|
|
{ 0x0f, KEY_9 },
|
|
{ 0x10, KEY_PAGEUP }, /* 16-CH PREV */
|
|
{ 0x11, KEY_0 },
|
|
{ 0x12, KEY_INFO },
|
|
{ 0x13, KEY_AGAIN }, /* CH RTN - channel return */
|
|
{ 0x14, KEY_MUTE },
|
|
{ 0x15, KEY_EDIT }, /* Autoscan */
|
|
{ 0x17, KEY_SAVE }, /* Screenshot */
|
|
{ 0x18, KEY_PLAYPAUSE },
|
|
{ 0x19, KEY_RECORD },
|
|
{ 0x1a, KEY_PLAY },
|
|
{ 0x1b, KEY_STOP },
|
|
{ 0x1c, KEY_FASTFORWARD },
|
|
{ 0x1d, KEY_REWIND },
|
|
{ 0x1e, KEY_VOLUMEDOWN },
|
|
{ 0x1f, KEY_VOLUMEUP },
|
|
{ 0x22, KEY_SLEEP }, /* Sleep */
|
|
{ 0x23, KEY_ZOOM }, /* Aspect */
|
|
{ 0x26, KEY_SCREEN }, /* Pos */
|
|
{ 0x27, KEY_ANGLE }, /* Size */
|
|
{ 0x28, KEY_SELECT }, /* Select */
|
|
{ 0x29, KEY_BLUE }, /* Blue/Picture */
|
|
{ 0x2a, KEY_BACKSPACE }, /* Back */
|
|
{ 0x2b, KEY_MEDIA }, /* PIP (Picture-in-picture) */
|
|
{ 0x2c, KEY_DOWN },
|
|
{ 0x2e, KEY_DOT },
|
|
{ 0x2f, KEY_TV }, /* Live TV */
|
|
{ 0x32, KEY_LEFT },
|
|
{ 0x33, KEY_CLEAR }, /* Clear */
|
|
{ 0x35, KEY_RED }, /* Red/TV */
|
|
{ 0x36, KEY_UP },
|
|
{ 0x37, KEY_HOME }, /* Home */
|
|
{ 0x39, KEY_GREEN }, /* Green/Video */
|
|
{ 0x3d, KEY_YELLOW }, /* Yellow/Music */
|
|
{ 0x3e, KEY_OK }, /* Ok */
|
|
{ 0x3f, KEY_RIGHT },
|
|
{ 0x40, KEY_NEXT }, /* Next */
|
|
{ 0x41, KEY_PREVIOUS }, /* Previous */
|
|
{ 0x42, KEY_CHANNELDOWN }, /* Channel down */
|
|
{ 0x43, KEY_CHANNELUP }, /* Channel up */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_avermedia_cardbus_table = {
|
|
.scan = ir_codes_avermedia_cardbus,
|
|
.size = ARRAY_SIZE(ir_codes_avermedia_cardbus),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_avermedia_cardbus_table);
|
|
|
|
/* Attila Kondoros <attila.kondoros@chello.hu> */
|
|
static struct ir_scancode ir_codes_apac_viewcomp[] = {
|
|
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
{ 0x00, KEY_0 },
|
|
{ 0x17, KEY_LAST }, /* +100 */
|
|
{ 0x0a, KEY_LIST }, /* recall */
|
|
|
|
|
|
{ 0x1c, KEY_TUNER }, /* TV/FM */
|
|
{ 0x15, KEY_SEARCH }, /* scan */
|
|
{ 0x12, KEY_POWER }, /* power */
|
|
{ 0x1f, KEY_VOLUMEDOWN }, /* vol up */
|
|
{ 0x1b, KEY_VOLUMEUP }, /* vol down */
|
|
{ 0x1e, KEY_CHANNELDOWN }, /* chn up */
|
|
{ 0x1a, KEY_CHANNELUP }, /* chn down */
|
|
|
|
{ 0x11, KEY_VIDEO }, /* video */
|
|
{ 0x0f, KEY_ZOOM }, /* full screen */
|
|
{ 0x13, KEY_MUTE }, /* mute/unmute */
|
|
{ 0x10, KEY_TEXT }, /* min */
|
|
|
|
{ 0x0d, KEY_STOP }, /* freeze */
|
|
{ 0x0e, KEY_RECORD }, /* record */
|
|
{ 0x1d, KEY_PLAYPAUSE }, /* stop */
|
|
{ 0x19, KEY_PLAY }, /* play */
|
|
|
|
{ 0x16, KEY_GOTO }, /* osd */
|
|
{ 0x14, KEY_REFRESH }, /* default */
|
|
{ 0x0c, KEY_KPPLUS }, /* fine tune >>>> */
|
|
{ 0x18, KEY_KPMINUS }, /* fine tune <<<< */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_apac_viewcomp_table = {
|
|
.scan = ir_codes_apac_viewcomp,
|
|
.size = ARRAY_SIZE(ir_codes_apac_viewcomp),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
static struct ir_scancode ir_codes_pixelview[] = {
|
|
|
|
{ 0x1e, KEY_POWER }, /* power */
|
|
{ 0x07, KEY_MEDIA }, /* source */
|
|
{ 0x1c, KEY_SEARCH }, /* scan */
|
|
|
|
|
|
{ 0x03, KEY_TUNER }, /* TV/FM */
|
|
|
|
{ 0x00, KEY_RECORD },
|
|
{ 0x08, KEY_STOP },
|
|
{ 0x11, KEY_PLAY },
|
|
|
|
{ 0x1a, KEY_PLAYPAUSE }, /* freeze */
|
|
{ 0x19, KEY_ZOOM }, /* zoom */
|
|
{ 0x0f, KEY_TEXT }, /* min */
|
|
|
|
{ 0x01, KEY_1 },
|
|
{ 0x0b, KEY_2 },
|
|
{ 0x1b, KEY_3 },
|
|
{ 0x05, KEY_4 },
|
|
{ 0x09, KEY_5 },
|
|
{ 0x15, KEY_6 },
|
|
{ 0x06, KEY_7 },
|
|
{ 0x0a, KEY_8 },
|
|
{ 0x12, KEY_9 },
|
|
{ 0x02, KEY_0 },
|
|
{ 0x10, KEY_LAST }, /* +100 */
|
|
{ 0x13, KEY_LIST }, /* recall */
|
|
|
|
{ 0x1f, KEY_CHANNELUP }, /* chn down */
|
|
{ 0x17, KEY_CHANNELDOWN }, /* chn up */
|
|
{ 0x16, KEY_VOLUMEUP }, /* vol down */
|
|
{ 0x14, KEY_VOLUMEDOWN }, /* vol up */
|
|
|
|
{ 0x04, KEY_KPMINUS }, /* <<< */
|
|
{ 0x0e, KEY_SETUP }, /* function */
|
|
{ 0x0c, KEY_KPPLUS }, /* >>> */
|
|
|
|
{ 0x0d, KEY_GOTO }, /* mts */
|
|
{ 0x1d, KEY_REFRESH }, /* reset */
|
|
{ 0x18, KEY_MUTE }, /* mute/unmute */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pixelview_table = {
|
|
.scan = ir_codes_pixelview,
|
|
.size = ARRAY_SIZE(ir_codes_pixelview),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pixelview_table);
|
|
|
|
/*
|
|
Mauro Carvalho Chehab <mchehab@infradead.org>
|
|
present on PV MPEG 8000GT
|
|
*/
|
|
static struct ir_scancode ir_codes_pixelview_new[] = {
|
|
{ 0x3c, KEY_TIME }, /* Timeshift */
|
|
{ 0x12, KEY_POWER },
|
|
|
|
{ 0x3d, KEY_1 },
|
|
{ 0x38, KEY_2 },
|
|
{ 0x18, KEY_3 },
|
|
{ 0x35, KEY_4 },
|
|
{ 0x39, KEY_5 },
|
|
{ 0x15, KEY_6 },
|
|
{ 0x36, KEY_7 },
|
|
{ 0x3a, KEY_8 },
|
|
{ 0x1e, KEY_9 },
|
|
{ 0x3e, KEY_0 },
|
|
|
|
{ 0x1c, KEY_AGAIN }, /* LOOP */
|
|
{ 0x3f, KEY_MEDIA }, /* Source */
|
|
{ 0x1f, KEY_LAST }, /* +100 */
|
|
{ 0x1b, KEY_MUTE },
|
|
|
|
{ 0x17, KEY_CHANNELDOWN },
|
|
{ 0x16, KEY_CHANNELUP },
|
|
{ 0x10, KEY_VOLUMEUP },
|
|
{ 0x14, KEY_VOLUMEDOWN },
|
|
{ 0x13, KEY_ZOOM },
|
|
|
|
{ 0x19, KEY_CAMERA }, /* SNAPSHOT */
|
|
{ 0x1a, KEY_SEARCH }, /* scan */
|
|
|
|
{ 0x37, KEY_REWIND }, /* << */
|
|
{ 0x32, KEY_RECORD }, /* o (red) */
|
|
{ 0x33, KEY_FORWARD }, /* >> */
|
|
{ 0x11, KEY_STOP }, /* square */
|
|
{ 0x3b, KEY_PLAY }, /* > */
|
|
{ 0x30, KEY_PLAYPAUSE }, /* || */
|
|
|
|
{ 0x31, KEY_TV },
|
|
{ 0x34, KEY_RADIO },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pixelview_new_table = {
|
|
.scan = ir_codes_pixelview_new,
|
|
.size = ARRAY_SIZE(ir_codes_pixelview_new),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pixelview_new_table);
|
|
|
|
static struct ir_scancode ir_codes_nebula[] = {
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
{ 0x0a, KEY_TV },
|
|
{ 0x0b, KEY_AUX },
|
|
{ 0x0c, KEY_DVD },
|
|
{ 0x0d, KEY_POWER },
|
|
{ 0x0e, KEY_MHP }, /* labelled 'Picture' */
|
|
{ 0x0f, KEY_AUDIO },
|
|
{ 0x10, KEY_INFO },
|
|
{ 0x11, KEY_F13 }, /* 16:9 */
|
|
{ 0x12, KEY_F14 }, /* 14:9 */
|
|
{ 0x13, KEY_EPG },
|
|
{ 0x14, KEY_EXIT },
|
|
{ 0x15, KEY_MENU },
|
|
{ 0x16, KEY_UP },
|
|
{ 0x17, KEY_DOWN },
|
|
{ 0x18, KEY_LEFT },
|
|
{ 0x19, KEY_RIGHT },
|
|
{ 0x1a, KEY_ENTER },
|
|
{ 0x1b, KEY_CHANNELUP },
|
|
{ 0x1c, KEY_CHANNELDOWN },
|
|
{ 0x1d, KEY_VOLUMEUP },
|
|
{ 0x1e, KEY_VOLUMEDOWN },
|
|
{ 0x1f, KEY_RED },
|
|
{ 0x20, KEY_GREEN },
|
|
{ 0x21, KEY_YELLOW },
|
|
{ 0x22, KEY_BLUE },
|
|
{ 0x23, KEY_SUBTITLE },
|
|
{ 0x24, KEY_F15 }, /* AD */
|
|
{ 0x25, KEY_TEXT },
|
|
{ 0x26, KEY_MUTE },
|
|
{ 0x27, KEY_REWIND },
|
|
{ 0x28, KEY_STOP },
|
|
{ 0x29, KEY_PLAY },
|
|
{ 0x2a, KEY_FASTFORWARD },
|
|
{ 0x2b, KEY_F16 }, /* chapter */
|
|
{ 0x2c, KEY_PAUSE },
|
|
{ 0x2d, KEY_PLAY },
|
|
{ 0x2e, KEY_RECORD },
|
|
{ 0x2f, KEY_F17 }, /* picture in picture */
|
|
{ 0x30, KEY_KPPLUS }, /* zoom in */
|
|
{ 0x31, KEY_KPMINUS }, /* zoom out */
|
|
{ 0x32, KEY_F18 }, /* capture */
|
|
{ 0x33, KEY_F19 }, /* web */
|
|
{ 0x34, KEY_EMAIL },
|
|
{ 0x35, KEY_PHONE },
|
|
{ 0x36, KEY_PC },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_nebula_table = {
|
|
.scan = ir_codes_nebula,
|
|
.size = ARRAY_SIZE(ir_codes_nebula),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_nebula_table);
|
|
|
|
/* DigitalNow DNTV Live DVB-T Remote */
|
|
static struct ir_scancode ir_codes_dntv_live_dvb_t[] = {
|
|
{ 0x00, KEY_ESC }, /* 'go up a level?' */
|
|
/* Keys 0 to 9 */
|
|
{ 0x0a, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x0b, KEY_TUNER }, /* tv/fm */
|
|
{ 0x0c, KEY_SEARCH }, /* scan */
|
|
{ 0x0d, KEY_STOP },
|
|
{ 0x0e, KEY_PAUSE },
|
|
{ 0x0f, KEY_LIST }, /* source */
|
|
|
|
{ 0x10, KEY_MUTE },
|
|
{ 0x11, KEY_REWIND }, /* backward << */
|
|
{ 0x12, KEY_POWER },
|
|
{ 0x13, KEY_CAMERA }, /* snap */
|
|
{ 0x14, KEY_AUDIO }, /* stereo */
|
|
{ 0x15, KEY_CLEAR }, /* reset */
|
|
{ 0x16, KEY_PLAY },
|
|
{ 0x17, KEY_ENTER },
|
|
{ 0x18, KEY_ZOOM }, /* full screen */
|
|
{ 0x19, KEY_FASTFORWARD }, /* forward >> */
|
|
{ 0x1a, KEY_CHANNELUP },
|
|
{ 0x1b, KEY_VOLUMEUP },
|
|
{ 0x1c, KEY_INFO }, /* preview */
|
|
{ 0x1d, KEY_RECORD }, /* record */
|
|
{ 0x1e, KEY_CHANNELDOWN },
|
|
{ 0x1f, KEY_VOLUMEDOWN },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_dntv_live_dvb_t_table = {
|
|
.scan = ir_codes_dntv_live_dvb_t,
|
|
.size = ARRAY_SIZE(ir_codes_dntv_live_dvb_t),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* IO-DATA BCTV7E Remote */
|
|
static struct ir_scancode ir_codes_iodata_bctv7e[] = {
|
|
{ 0x40, KEY_TV },
|
|
{ 0x20, KEY_RADIO }, /* FM */
|
|
{ 0x60, KEY_EPG },
|
|
{ 0x00, KEY_POWER },
|
|
|
|
/* Keys 0 to 9 */
|
|
{ 0x44, KEY_0 }, /* 10 */
|
|
{ 0x50, KEY_1 },
|
|
{ 0x30, KEY_2 },
|
|
{ 0x70, KEY_3 },
|
|
{ 0x48, KEY_4 },
|
|
{ 0x28, KEY_5 },
|
|
{ 0x68, KEY_6 },
|
|
{ 0x58, KEY_7 },
|
|
{ 0x38, KEY_8 },
|
|
{ 0x78, KEY_9 },
|
|
|
|
{ 0x10, KEY_L }, /* Live */
|
|
{ 0x08, KEY_TIME }, /* Time Shift */
|
|
|
|
{ 0x18, KEY_PLAYPAUSE }, /* Play */
|
|
|
|
{ 0x24, KEY_ENTER }, /* 11 */
|
|
{ 0x64, KEY_ESC }, /* 12 */
|
|
{ 0x04, KEY_M }, /* Multi */
|
|
|
|
{ 0x54, KEY_VIDEO },
|
|
{ 0x34, KEY_CHANNELUP },
|
|
{ 0x74, KEY_VOLUMEUP },
|
|
{ 0x14, KEY_MUTE },
|
|
|
|
{ 0x4c, KEY_VCR }, /* SVIDEO */
|
|
{ 0x2c, KEY_CHANNELDOWN },
|
|
{ 0x6c, KEY_VOLUMEDOWN },
|
|
{ 0x0c, KEY_ZOOM },
|
|
|
|
{ 0x5c, KEY_PAUSE },
|
|
{ 0x3c, KEY_RED }, /* || (red) */
|
|
{ 0x7c, KEY_RECORD }, /* recording */
|
|
{ 0x1c, KEY_STOP },
|
|
|
|
{ 0x41, KEY_REWIND }, /* backward << */
|
|
{ 0x21, KEY_PLAY },
|
|
{ 0x61, KEY_FASTFORWARD }, /* forward >> */
|
|
{ 0x01, KEY_NEXT }, /* skip >| */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_iodata_bctv7e_table = {
|
|
.scan = ir_codes_iodata_bctv7e,
|
|
.size = ARRAY_SIZE(ir_codes_iodata_bctv7e),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* ADS Tech Instant TV DVB-T PCI Remote */
|
|
static struct ir_scancode ir_codes_adstech_dvb_t_pci[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x4d, KEY_0 },
|
|
{ 0x57, KEY_1 },
|
|
{ 0x4f, KEY_2 },
|
|
{ 0x53, KEY_3 },
|
|
{ 0x56, KEY_4 },
|
|
{ 0x4e, KEY_5 },
|
|
{ 0x5e, KEY_6 },
|
|
{ 0x54, KEY_7 },
|
|
{ 0x4c, KEY_8 },
|
|
{ 0x5c, KEY_9 },
|
|
|
|
{ 0x5b, KEY_POWER },
|
|
{ 0x5f, KEY_MUTE },
|
|
{ 0x55, KEY_GOTO },
|
|
{ 0x5d, KEY_SEARCH },
|
|
{ 0x17, KEY_EPG }, /* Guide */
|
|
{ 0x1f, KEY_MENU },
|
|
{ 0x0f, KEY_UP },
|
|
{ 0x46, KEY_DOWN },
|
|
{ 0x16, KEY_LEFT },
|
|
{ 0x1e, KEY_RIGHT },
|
|
{ 0x0e, KEY_SELECT }, /* Enter */
|
|
{ 0x5a, KEY_INFO },
|
|
{ 0x52, KEY_EXIT },
|
|
{ 0x59, KEY_PREVIOUS },
|
|
{ 0x51, KEY_NEXT },
|
|
{ 0x58, KEY_REWIND },
|
|
{ 0x50, KEY_FORWARD },
|
|
{ 0x44, KEY_PLAYPAUSE },
|
|
{ 0x07, KEY_STOP },
|
|
{ 0x1b, KEY_RECORD },
|
|
{ 0x13, KEY_TUNER }, /* Live */
|
|
{ 0x0a, KEY_A },
|
|
{ 0x12, KEY_B },
|
|
{ 0x03, KEY_PROG1 }, /* 1 */
|
|
{ 0x01, KEY_PROG2 }, /* 2 */
|
|
{ 0x00, KEY_PROG3 }, /* 3 */
|
|
{ 0x06, KEY_DVD },
|
|
{ 0x48, KEY_AUX }, /* Photo */
|
|
{ 0x40, KEY_VIDEO },
|
|
{ 0x19, KEY_AUDIO }, /* Music */
|
|
{ 0x0b, KEY_CHANNELUP },
|
|
{ 0x08, KEY_CHANNELDOWN },
|
|
{ 0x15, KEY_VOLUMEUP },
|
|
{ 0x1c, KEY_VOLUMEDOWN },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_adstech_dvb_t_pci_table = {
|
|
.scan = ir_codes_adstech_dvb_t_pci,
|
|
.size = ARRAY_SIZE(ir_codes_adstech_dvb_t_pci),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* MSI TV@nywhere MASTER remote */
|
|
|
|
static struct ir_scancode ir_codes_msi_tvanywhere[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x0c, KEY_MUTE },
|
|
{ 0x0f, KEY_SCREEN }, /* Full Screen */
|
|
{ 0x10, KEY_FN }, /* Funtion */
|
|
{ 0x11, KEY_TIME }, /* Time shift */
|
|
{ 0x12, KEY_POWER },
|
|
{ 0x13, KEY_MEDIA }, /* MTS */
|
|
{ 0x14, KEY_SLOW },
|
|
{ 0x16, KEY_REWIND }, /* backward << */
|
|
{ 0x17, KEY_ENTER }, /* Return */
|
|
{ 0x18, KEY_FASTFORWARD }, /* forward >> */
|
|
{ 0x1a, KEY_CHANNELUP },
|
|
{ 0x1b, KEY_VOLUMEUP },
|
|
{ 0x1e, KEY_CHANNELDOWN },
|
|
{ 0x1f, KEY_VOLUMEDOWN },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_msi_tvanywhere_table = {
|
|
.scan = ir_codes_msi_tvanywhere,
|
|
.size = ARRAY_SIZE(ir_codes_msi_tvanywhere),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/*
|
|
Keycodes for remote on the MSI TV@nywhere Plus. The controller IC on the card
|
|
is marked "KS003". The controller is I2C at address 0x30, but does not seem
|
|
to respond to probes until a read is performed from a valid device.
|
|
I don't know why...
|
|
|
|
Note: This remote may be of similar or identical design to the
|
|
Pixelview remote (?). The raw codes and duplicate button codes
|
|
appear to be the same.
|
|
|
|
Henry Wong <henry@stuffedcow.net>
|
|
Some changes to formatting and keycodes by Mark Schultz <n9xmj@yahoo.com>
|
|
|
|
*/
|
|
|
|
static struct ir_scancode ir_codes_msi_tvanywhere_plus[] = {
|
|
|
|
/* ---- Remote Button Layout ----
|
|
|
|
POWER SOURCE SCAN MUTE
|
|
TV/FM 1 2 3
|
|
|> 4 5 6
|
|
<| 7 8 9
|
|
^^UP 0 + RECALL
|
|
vvDN RECORD STOP PLAY
|
|
|
|
MINIMIZE ZOOM
|
|
|
|
CH+
|
|
VOL- VOL+
|
|
CH-
|
|
|
|
SNAPSHOT MTS
|
|
|
|
<< FUNC >> RESET
|
|
*/
|
|
|
|
{ 0x01, KEY_1 }, /* 1 */
|
|
{ 0x0b, KEY_2 }, /* 2 */
|
|
{ 0x1b, KEY_3 }, /* 3 */
|
|
{ 0x05, KEY_4 }, /* 4 */
|
|
{ 0x09, KEY_5 }, /* 5 */
|
|
{ 0x15, KEY_6 }, /* 6 */
|
|
{ 0x06, KEY_7 }, /* 7 */
|
|
{ 0x0a, KEY_8 }, /* 8 */
|
|
{ 0x12, KEY_9 }, /* 9 */
|
|
{ 0x02, KEY_0 }, /* 0 */
|
|
{ 0x10, KEY_KPPLUS }, /* + */
|
|
{ 0x13, KEY_AGAIN }, /* Recall */
|
|
|
|
{ 0x1e, KEY_POWER }, /* Power */
|
|
{ 0x07, KEY_TUNER }, /* Source */
|
|
{ 0x1c, KEY_SEARCH }, /* Scan */
|
|
{ 0x18, KEY_MUTE }, /* Mute */
|
|
|
|
{ 0x03, KEY_RADIO }, /* TV/FM */
|
|
/* The next four keys are duplicates that appear to send the
|
|
same IR code as Ch+, Ch-, >>, and << . The raw code assigned
|
|
to them is the actual code + 0x20 - they will never be
|
|
detected as such unless some way is discovered to distinguish
|
|
these buttons from those that have the same code. */
|
|
{ 0x3f, KEY_RIGHT }, /* |> and Ch+ */
|
|
{ 0x37, KEY_LEFT }, /* <| and Ch- */
|
|
{ 0x2c, KEY_UP }, /* ^^Up and >> */
|
|
{ 0x24, KEY_DOWN }, /* vvDn and << */
|
|
|
|
{ 0x00, KEY_RECORD }, /* Record */
|
|
{ 0x08, KEY_STOP }, /* Stop */
|
|
{ 0x11, KEY_PLAY }, /* Play */
|
|
|
|
{ 0x0f, KEY_CLOSE }, /* Minimize */
|
|
{ 0x19, KEY_ZOOM }, /* Zoom */
|
|
{ 0x1a, KEY_CAMERA }, /* Snapshot */
|
|
{ 0x0d, KEY_LANGUAGE }, /* MTS */
|
|
|
|
{ 0x14, KEY_VOLUMEDOWN }, /* Vol- */
|
|
{ 0x16, KEY_VOLUMEUP }, /* Vol+ */
|
|
{ 0x17, KEY_CHANNELDOWN }, /* Ch- */
|
|
{ 0x1f, KEY_CHANNELUP }, /* Ch+ */
|
|
|
|
{ 0x04, KEY_REWIND }, /* << */
|
|
{ 0x0e, KEY_MENU }, /* Function */
|
|
{ 0x0c, KEY_FASTFORWARD }, /* >> */
|
|
{ 0x1d, KEY_RESTART }, /* Reset */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_msi_tvanywhere_plus_table = {
|
|
.scan = ir_codes_msi_tvanywhere_plus,
|
|
.size = ARRAY_SIZE(ir_codes_msi_tvanywhere_plus),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere_plus_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* Cinergy 1400 DVB-T */
|
|
static struct ir_scancode ir_codes_cinergy_1400[] = {
|
|
{ 0x01, KEY_POWER },
|
|
{ 0x02, KEY_1 },
|
|
{ 0x03, KEY_2 },
|
|
{ 0x04, KEY_3 },
|
|
{ 0x05, KEY_4 },
|
|
{ 0x06, KEY_5 },
|
|
{ 0x07, KEY_6 },
|
|
{ 0x08, KEY_7 },
|
|
{ 0x09, KEY_8 },
|
|
{ 0x0a, KEY_9 },
|
|
{ 0x0c, KEY_0 },
|
|
|
|
{ 0x0b, KEY_VIDEO },
|
|
{ 0x0d, KEY_REFRESH },
|
|
{ 0x0e, KEY_SELECT },
|
|
{ 0x0f, KEY_EPG },
|
|
{ 0x10, KEY_UP },
|
|
{ 0x11, KEY_LEFT },
|
|
{ 0x12, KEY_OK },
|
|
{ 0x13, KEY_RIGHT },
|
|
{ 0x14, KEY_DOWN },
|
|
{ 0x15, KEY_TEXT },
|
|
{ 0x16, KEY_INFO },
|
|
|
|
{ 0x17, KEY_RED },
|
|
{ 0x18, KEY_GREEN },
|
|
{ 0x19, KEY_YELLOW },
|
|
{ 0x1a, KEY_BLUE },
|
|
|
|
{ 0x1b, KEY_CHANNELUP },
|
|
{ 0x1c, KEY_VOLUMEUP },
|
|
{ 0x1d, KEY_MUTE },
|
|
{ 0x1e, KEY_VOLUMEDOWN },
|
|
{ 0x1f, KEY_CHANNELDOWN },
|
|
|
|
{ 0x40, KEY_PAUSE },
|
|
{ 0x4c, KEY_PLAY },
|
|
{ 0x58, KEY_RECORD },
|
|
{ 0x54, KEY_PREVIOUS },
|
|
{ 0x48, KEY_STOP },
|
|
{ 0x5c, KEY_NEXT },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_cinergy_1400_table = {
|
|
.scan = ir_codes_cinergy_1400,
|
|
.size = ARRAY_SIZE(ir_codes_cinergy_1400),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* AVERTV STUDIO 303 Remote */
|
|
static struct ir_scancode ir_codes_avertv_303[] = {
|
|
{ 0x2a, KEY_1 },
|
|
{ 0x32, KEY_2 },
|
|
{ 0x3a, KEY_3 },
|
|
{ 0x4a, KEY_4 },
|
|
{ 0x52, KEY_5 },
|
|
{ 0x5a, KEY_6 },
|
|
{ 0x6a, KEY_7 },
|
|
{ 0x72, KEY_8 },
|
|
{ 0x7a, KEY_9 },
|
|
{ 0x0e, KEY_0 },
|
|
|
|
{ 0x02, KEY_POWER },
|
|
{ 0x22, KEY_VIDEO },
|
|
{ 0x42, KEY_AUDIO },
|
|
{ 0x62, KEY_ZOOM },
|
|
{ 0x0a, KEY_TV },
|
|
{ 0x12, KEY_CD },
|
|
{ 0x1a, KEY_TEXT },
|
|
|
|
{ 0x16, KEY_SUBTITLE },
|
|
{ 0x1e, KEY_REWIND },
|
|
{ 0x06, KEY_PRINT },
|
|
|
|
{ 0x2e, KEY_SEARCH },
|
|
{ 0x36, KEY_SLEEP },
|
|
{ 0x3e, KEY_SHUFFLE },
|
|
{ 0x26, KEY_MUTE },
|
|
|
|
{ 0x4e, KEY_RECORD },
|
|
{ 0x56, KEY_PAUSE },
|
|
{ 0x5e, KEY_STOP },
|
|
{ 0x46, KEY_PLAY },
|
|
|
|
{ 0x6e, KEY_RED },
|
|
{ 0x0b, KEY_GREEN },
|
|
{ 0x66, KEY_YELLOW },
|
|
{ 0x03, KEY_BLUE },
|
|
|
|
{ 0x76, KEY_LEFT },
|
|
{ 0x7e, KEY_RIGHT },
|
|
{ 0x13, KEY_DOWN },
|
|
{ 0x1b, KEY_UP },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_avertv_303_table = {
|
|
.scan = ir_codes_avertv_303,
|
|
.size = ARRAY_SIZE(ir_codes_avertv_303),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_avertv_303_table);
|
|
|
|
/* ---------------------------------------------------------------------- */
|
|
|
|
/* DigitalNow DNTV Live! DVB-T Pro Remote */
|
|
static struct ir_scancode ir_codes_dntv_live_dvbt_pro[] = {
|
|
{ 0x16, KEY_POWER },
|
|
{ 0x5b, KEY_HOME },
|
|
|
|
{ 0x55, KEY_TV }, /* live tv */
|
|
{ 0x58, KEY_TUNER }, /* digital Radio */
|
|
{ 0x5a, KEY_RADIO }, /* FM radio */
|
|
{ 0x59, KEY_DVD }, /* dvd menu */
|
|
{ 0x03, KEY_1 },
|
|
{ 0x01, KEY_2 },
|
|
{ 0x06, KEY_3 },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x1d, KEY_5 },
|
|
{ 0x1f, KEY_6 },
|
|
{ 0x0d, KEY_7 },
|
|
{ 0x19, KEY_8 },
|
|
{ 0x1b, KEY_9 },
|
|
{ 0x0c, KEY_CANCEL },
|
|
{ 0x15, KEY_0 },
|
|
{ 0x4a, KEY_CLEAR },
|
|
{ 0x13, KEY_BACK },
|
|
{ 0x00, KEY_TAB },
|
|
{ 0x4b, KEY_UP },
|
|
{ 0x4e, KEY_LEFT },
|
|
{ 0x4f, KEY_OK },
|
|
{ 0x52, KEY_RIGHT },
|
|
{ 0x51, KEY_DOWN },
|
|
{ 0x1e, KEY_VOLUMEUP },
|
|
{ 0x0a, KEY_VOLUMEDOWN },
|
|
{ 0x02, KEY_CHANNELDOWN },
|
|
{ 0x05, KEY_CHANNELUP },
|
|
{ 0x11, KEY_RECORD },
|
|
{ 0x14, KEY_PLAY },
|
|
{ 0x4c, KEY_PAUSE },
|
|
{ 0x1a, KEY_STOP },
|
|
{ 0x40, KEY_REWIND },
|
|
{ 0x12, KEY_FASTFORWARD },
|
|
{ 0x41, KEY_PREVIOUSSONG }, /* replay |< */
|
|
{ 0x42, KEY_NEXTSONG }, /* skip >| */
|
|
{ 0x54, KEY_CAMERA }, /* capture */
|
|
{ 0x50, KEY_LANGUAGE }, /* sap */
|
|
{ 0x47, KEY_TV2 }, /* pip */
|
|
{ 0x4d, KEY_SCREEN },
|
|
{ 0x43, KEY_SUBTITLE },
|
|
{ 0x10, KEY_MUTE },
|
|
{ 0x49, KEY_AUDIO }, /* l/r */
|
|
{ 0x07, KEY_SLEEP },
|
|
{ 0x08, KEY_VIDEO }, /* a/v */
|
|
{ 0x0e, KEY_PREVIOUS }, /* recall */
|
|
{ 0x45, KEY_ZOOM }, /* zoom + */
|
|
{ 0x46, KEY_ANGLE }, /* zoom - */
|
|
{ 0x56, KEY_RED },
|
|
{ 0x57, KEY_GREEN },
|
|
{ 0x5c, KEY_YELLOW },
|
|
{ 0x5d, KEY_BLUE },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_dntv_live_dvbt_pro_table = {
|
|
.scan = ir_codes_dntv_live_dvbt_pro,
|
|
.size = ARRAY_SIZE(ir_codes_dntv_live_dvbt_pro),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro_table);
|
|
|
|
static struct ir_scancode ir_codes_em_terratec[] = {
|
|
{ 0x01, KEY_CHANNEL },
|
|
{ 0x02, KEY_SELECT },
|
|
{ 0x03, KEY_MUTE },
|
|
{ 0x04, KEY_POWER },
|
|
{ 0x05, KEY_1 },
|
|
{ 0x06, KEY_2 },
|
|
{ 0x07, KEY_3 },
|
|
{ 0x08, KEY_CHANNELUP },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x0a, KEY_5 },
|
|
{ 0x0b, KEY_6 },
|
|
{ 0x0c, KEY_CHANNELDOWN },
|
|
{ 0x0d, KEY_7 },
|
|
{ 0x0e, KEY_8 },
|
|
{ 0x0f, KEY_9 },
|
|
{ 0x10, KEY_VOLUMEUP },
|
|
{ 0x11, KEY_0 },
|
|
{ 0x12, KEY_MENU },
|
|
{ 0x13, KEY_PRINT },
|
|
{ 0x14, KEY_VOLUMEDOWN },
|
|
{ 0x16, KEY_PAUSE },
|
|
{ 0x18, KEY_RECORD },
|
|
{ 0x19, KEY_REWIND },
|
|
{ 0x1a, KEY_PLAY },
|
|
{ 0x1b, KEY_FORWARD },
|
|
{ 0x1c, KEY_BACKSPACE },
|
|
{ 0x1e, KEY_STOP },
|
|
{ 0x40, KEY_ZOOM },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_em_terratec_table = {
|
|
.scan = ir_codes_em_terratec,
|
|
.size = ARRAY_SIZE(ir_codes_em_terratec),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_em_terratec_table);
|
|
|
|
static struct ir_scancode ir_codes_pinnacle_grey[] = {
|
|
{ 0x3a, KEY_0 },
|
|
{ 0x31, KEY_1 },
|
|
{ 0x32, KEY_2 },
|
|
{ 0x33, KEY_3 },
|
|
{ 0x34, KEY_4 },
|
|
{ 0x35, KEY_5 },
|
|
{ 0x36, KEY_6 },
|
|
{ 0x37, KEY_7 },
|
|
{ 0x38, KEY_8 },
|
|
{ 0x39, KEY_9 },
|
|
|
|
{ 0x2f, KEY_POWER },
|
|
|
|
{ 0x2e, KEY_P },
|
|
{ 0x1f, KEY_L },
|
|
{ 0x2b, KEY_I },
|
|
|
|
{ 0x2d, KEY_SCREEN },
|
|
{ 0x1e, KEY_ZOOM },
|
|
{ 0x1b, KEY_VOLUMEUP },
|
|
{ 0x0f, KEY_VOLUMEDOWN },
|
|
{ 0x17, KEY_CHANNELUP },
|
|
{ 0x1c, KEY_CHANNELDOWN },
|
|
{ 0x25, KEY_INFO },
|
|
|
|
{ 0x3c, KEY_MUTE },
|
|
|
|
{ 0x3d, KEY_LEFT },
|
|
{ 0x3b, KEY_RIGHT },
|
|
|
|
{ 0x3f, KEY_UP },
|
|
{ 0x3e, KEY_DOWN },
|
|
{ 0x1a, KEY_ENTER },
|
|
|
|
{ 0x1d, KEY_MENU },
|
|
{ 0x19, KEY_AGAIN },
|
|
{ 0x16, KEY_PREVIOUSSONG },
|
|
{ 0x13, KEY_NEXTSONG },
|
|
{ 0x15, KEY_PAUSE },
|
|
{ 0x0e, KEY_REWIND },
|
|
{ 0x0d, KEY_PLAY },
|
|
{ 0x0b, KEY_STOP },
|
|
{ 0x07, KEY_FORWARD },
|
|
{ 0x27, KEY_RECORD },
|
|
{ 0x26, KEY_TUNER },
|
|
{ 0x29, KEY_TEXT },
|
|
{ 0x2a, KEY_MEDIA },
|
|
{ 0x18, KEY_EPG },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pinnacle_grey_table = {
|
|
.scan = ir_codes_pinnacle_grey,
|
|
.size = ARRAY_SIZE(ir_codes_pinnacle_grey),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey_table);
|
|
|
|
static struct ir_scancode ir_codes_flyvideo[] = {
|
|
{ 0x0f, KEY_0 },
|
|
{ 0x03, KEY_1 },
|
|
{ 0x04, KEY_2 },
|
|
{ 0x05, KEY_3 },
|
|
{ 0x07, KEY_4 },
|
|
{ 0x08, KEY_5 },
|
|
{ 0x09, KEY_6 },
|
|
{ 0x0b, KEY_7 },
|
|
{ 0x0c, KEY_8 },
|
|
{ 0x0d, KEY_9 },
|
|
|
|
{ 0x0e, KEY_MODE }, /* Air/Cable */
|
|
{ 0x11, KEY_VIDEO }, /* Video */
|
|
{ 0x15, KEY_AUDIO }, /* Audio */
|
|
{ 0x00, KEY_POWER }, /* Power */
|
|
{ 0x18, KEY_TUNER }, /* AV Source */
|
|
{ 0x02, KEY_ZOOM }, /* Fullscreen */
|
|
{ 0x1a, KEY_LANGUAGE }, /* Stereo */
|
|
{ 0x1b, KEY_MUTE }, /* Mute */
|
|
{ 0x14, KEY_VOLUMEUP }, /* Volume + */
|
|
{ 0x17, KEY_VOLUMEDOWN },/* Volume - */
|
|
{ 0x12, KEY_CHANNELUP },/* Channel + */
|
|
{ 0x13, KEY_CHANNELDOWN },/* Channel - */
|
|
{ 0x06, KEY_AGAIN }, /* Recall */
|
|
{ 0x10, KEY_ENTER }, /* Enter */
|
|
|
|
{ 0x19, KEY_BACK }, /* Rewind ( <<< ) */
|
|
{ 0x1f, KEY_FORWARD }, /* Forward ( >>> ) */
|
|
{ 0x0a, KEY_ANGLE }, /* no label, may be used as the PAUSE button */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_flyvideo_table = {
|
|
.scan = ir_codes_flyvideo,
|
|
.size = ARRAY_SIZE(ir_codes_flyvideo),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_flyvideo_table);
|
|
|
|
static struct ir_scancode ir_codes_flydvb[] = {
|
|
{ 0x01, KEY_ZOOM }, /* Full Screen */
|
|
{ 0x00, KEY_POWER }, /* Power */
|
|
|
|
{ 0x03, KEY_1 },
|
|
{ 0x04, KEY_2 },
|
|
{ 0x05, KEY_3 },
|
|
{ 0x07, KEY_4 },
|
|
{ 0x08, KEY_5 },
|
|
{ 0x09, KEY_6 },
|
|
{ 0x0b, KEY_7 },
|
|
{ 0x0c, KEY_8 },
|
|
{ 0x0d, KEY_9 },
|
|
{ 0x06, KEY_AGAIN }, /* Recall */
|
|
{ 0x0f, KEY_0 },
|
|
{ 0x10, KEY_MUTE }, /* Mute */
|
|
{ 0x02, KEY_RADIO }, /* TV/Radio */
|
|
{ 0x1b, KEY_LANGUAGE }, /* SAP (Second Audio Program) */
|
|
|
|
{ 0x14, KEY_VOLUMEUP }, /* VOL+ */
|
|
{ 0x17, KEY_VOLUMEDOWN }, /* VOL- */
|
|
{ 0x12, KEY_CHANNELUP }, /* CH+ */
|
|
{ 0x13, KEY_CHANNELDOWN }, /* CH- */
|
|
{ 0x1d, KEY_ENTER }, /* Enter */
|
|
|
|
{ 0x1a, KEY_MODE }, /* PIP */
|
|
{ 0x18, KEY_TUNER }, /* Source */
|
|
|
|
{ 0x1e, KEY_RECORD }, /* Record/Pause */
|
|
{ 0x15, KEY_ANGLE }, /* Swap (no label on key) */
|
|
{ 0x1c, KEY_PAUSE }, /* Timeshift/Pause */
|
|
{ 0x19, KEY_BACK }, /* Rewind << */
|
|
{ 0x0a, KEY_PLAYPAUSE }, /* Play/Pause */
|
|
{ 0x1f, KEY_FORWARD }, /* Forward >> */
|
|
{ 0x16, KEY_PREVIOUS }, /* Back |<< */
|
|
{ 0x11, KEY_STOP }, /* Stop */
|
|
{ 0x0e, KEY_NEXT }, /* End >>| */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_flydvb_table = {
|
|
.scan = ir_codes_flydvb,
|
|
.size = ARRAY_SIZE(ir_codes_flydvb),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_flydvb_table);
|
|
|
|
static struct ir_scancode ir_codes_cinergy[] = {
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x0a, KEY_POWER },
|
|
{ 0x0b, KEY_PROG1 }, /* app */
|
|
{ 0x0c, KEY_ZOOM }, /* zoom/fullscreen */
|
|
{ 0x0d, KEY_CHANNELUP }, /* channel */
|
|
{ 0x0e, KEY_CHANNELDOWN }, /* channel- */
|
|
{ 0x0f, KEY_VOLUMEUP },
|
|
{ 0x10, KEY_VOLUMEDOWN },
|
|
{ 0x11, KEY_TUNER }, /* AV */
|
|
{ 0x12, KEY_NUMLOCK }, /* -/-- */
|
|
{ 0x13, KEY_AUDIO }, /* audio */
|
|
{ 0x14, KEY_MUTE },
|
|
{ 0x15, KEY_UP },
|
|
{ 0x16, KEY_DOWN },
|
|
{ 0x17, KEY_LEFT },
|
|
{ 0x18, KEY_RIGHT },
|
|
{ 0x19, BTN_LEFT, },
|
|
{ 0x1a, BTN_RIGHT, },
|
|
{ 0x1b, KEY_WWW }, /* text */
|
|
{ 0x1c, KEY_REWIND },
|
|
{ 0x1d, KEY_FORWARD },
|
|
{ 0x1e, KEY_RECORD },
|
|
{ 0x1f, KEY_PLAY },
|
|
{ 0x20, KEY_PREVIOUSSONG },
|
|
{ 0x21, KEY_NEXTSONG },
|
|
{ 0x22, KEY_PAUSE },
|
|
{ 0x23, KEY_STOP },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_cinergy_table = {
|
|
.scan = ir_codes_cinergy,
|
|
.size = ARRAY_SIZE(ir_codes_cinergy),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_cinergy_table);
|
|
|
|
/* Alfons Geser <a.geser@cox.net>
|
|
* updates from Job D. R. Borges <jobdrb@ig.com.br> */
|
|
static struct ir_scancode ir_codes_eztv[] = {
|
|
{ 0x12, KEY_POWER },
|
|
{ 0x01, KEY_TV }, /* DVR */
|
|
{ 0x15, KEY_DVD }, /* DVD */
|
|
{ 0x17, KEY_AUDIO }, /* music */
|
|
/* DVR mode / DVD mode / music mode */
|
|
|
|
{ 0x1b, KEY_MUTE }, /* mute */
|
|
{ 0x02, KEY_LANGUAGE }, /* MTS/SAP / audio / autoseek */
|
|
{ 0x1e, KEY_SUBTITLE }, /* closed captioning / subtitle / seek */
|
|
{ 0x16, KEY_ZOOM }, /* full screen */
|
|
{ 0x1c, KEY_VIDEO }, /* video source / eject / delall */
|
|
{ 0x1d, KEY_RESTART }, /* playback / angle / del */
|
|
{ 0x2f, KEY_SEARCH }, /* scan / menu / playlist */
|
|
{ 0x30, KEY_CHANNEL }, /* CH surfing / bookmark / memo */
|
|
|
|
{ 0x31, KEY_HELP }, /* help */
|
|
{ 0x32, KEY_MODE }, /* num/memo */
|
|
{ 0x33, KEY_ESC }, /* cancel */
|
|
|
|
{ 0x0c, KEY_UP }, /* up */
|
|
{ 0x10, KEY_DOWN }, /* down */
|
|
{ 0x08, KEY_LEFT }, /* left */
|
|
{ 0x04, KEY_RIGHT }, /* right */
|
|
{ 0x03, KEY_SELECT }, /* select */
|
|
|
|
{ 0x1f, KEY_REWIND }, /* rewind */
|
|
{ 0x20, KEY_PLAYPAUSE },/* play/pause */
|
|
{ 0x29, KEY_FORWARD }, /* forward */
|
|
{ 0x14, KEY_AGAIN }, /* repeat */
|
|
{ 0x2b, KEY_RECORD }, /* recording */
|
|
{ 0x2c, KEY_STOP }, /* stop */
|
|
{ 0x2d, KEY_PLAY }, /* play */
|
|
{ 0x2e, KEY_CAMERA }, /* snapshot / shuffle */
|
|
|
|
{ 0x00, KEY_0 },
|
|
{ 0x05, KEY_1 },
|
|
{ 0x06, KEY_2 },
|
|
{ 0x07, KEY_3 },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x0a, KEY_5 },
|
|
{ 0x0b, KEY_6 },
|
|
{ 0x0d, KEY_7 },
|
|
{ 0x0e, KEY_8 },
|
|
{ 0x0f, KEY_9 },
|
|
|
|
{ 0x2a, KEY_VOLUMEUP },
|
|
{ 0x11, KEY_VOLUMEDOWN },
|
|
{ 0x18, KEY_CHANNELUP },/* CH.tracking up */
|
|
{ 0x19, KEY_CHANNELDOWN },/* CH.tracking down */
|
|
|
|
{ 0x13, KEY_ENTER }, /* enter */
|
|
{ 0x21, KEY_DOT }, /* . (decimal dot) */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_eztv_table = {
|
|
.scan = ir_codes_eztv,
|
|
.size = ARRAY_SIZE(ir_codes_eztv),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_eztv_table);
|
|
|
|
/* Alex Hermann <gaaf@gmx.net> */
|
|
static struct ir_scancode ir_codes_avermedia[] = {
|
|
{ 0x28, KEY_1 },
|
|
{ 0x18, KEY_2 },
|
|
{ 0x38, KEY_3 },
|
|
{ 0x24, KEY_4 },
|
|
{ 0x14, KEY_5 },
|
|
{ 0x34, KEY_6 },
|
|
{ 0x2c, KEY_7 },
|
|
{ 0x1c, KEY_8 },
|
|
{ 0x3c, KEY_9 },
|
|
{ 0x22, KEY_0 },
|
|
|
|
{ 0x20, KEY_TV }, /* TV/FM */
|
|
{ 0x10, KEY_CD }, /* CD */
|
|
{ 0x30, KEY_TEXT }, /* TELETEXT */
|
|
{ 0x00, KEY_POWER }, /* POWER */
|
|
|
|
{ 0x08, KEY_VIDEO }, /* VIDEO */
|
|
{ 0x04, KEY_AUDIO }, /* AUDIO */
|
|
{ 0x0c, KEY_ZOOM }, /* FULL SCREEN */
|
|
|
|
{ 0x12, KEY_SUBTITLE }, /* DISPLAY */
|
|
{ 0x32, KEY_REWIND }, /* LOOP */
|
|
{ 0x02, KEY_PRINT }, /* PREVIEW */
|
|
|
|
{ 0x2a, KEY_SEARCH }, /* AUTOSCAN */
|
|
{ 0x1a, KEY_SLEEP }, /* FREEZE */
|
|
{ 0x3a, KEY_CAMERA }, /* SNAPSHOT */
|
|
{ 0x0a, KEY_MUTE }, /* MUTE */
|
|
|
|
{ 0x26, KEY_RECORD }, /* RECORD */
|
|
{ 0x16, KEY_PAUSE }, /* PAUSE */
|
|
{ 0x36, KEY_STOP }, /* STOP */
|
|
{ 0x06, KEY_PLAY }, /* PLAY */
|
|
|
|
{ 0x2e, KEY_RED }, /* RED */
|
|
{ 0x21, KEY_GREEN }, /* GREEN */
|
|
{ 0x0e, KEY_YELLOW }, /* YELLOW */
|
|
{ 0x01, KEY_BLUE }, /* BLUE */
|
|
|
|
{ 0x1e, KEY_VOLUMEDOWN }, /* VOLUME- */
|
|
{ 0x3e, KEY_VOLUMEUP }, /* VOLUME+ */
|
|
{ 0x11, KEY_CHANNELDOWN }, /* CHANNEL/PAGE- */
|
|
{ 0x31, KEY_CHANNELUP } /* CHANNEL/PAGE+ */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_avermedia_table = {
|
|
.scan = ir_codes_avermedia,
|
|
.size = ARRAY_SIZE(ir_codes_avermedia),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_avermedia_table);
|
|
|
|
static struct ir_scancode ir_codes_videomate_tv_pvr[] = {
|
|
{ 0x14, KEY_MUTE },
|
|
{ 0x24, KEY_ZOOM },
|
|
|
|
{ 0x01, KEY_DVD },
|
|
{ 0x23, KEY_RADIO },
|
|
{ 0x00, KEY_TV },
|
|
|
|
{ 0x0a, KEY_REWIND },
|
|
{ 0x08, KEY_PLAYPAUSE },
|
|
{ 0x0f, KEY_FORWARD },
|
|
|
|
{ 0x02, KEY_PREVIOUS },
|
|
{ 0x07, KEY_STOP },
|
|
{ 0x06, KEY_NEXT },
|
|
|
|
{ 0x0c, KEY_UP },
|
|
{ 0x0e, KEY_DOWN },
|
|
{ 0x0b, KEY_LEFT },
|
|
{ 0x0d, KEY_RIGHT },
|
|
{ 0x11, KEY_OK },
|
|
|
|
{ 0x03, KEY_MENU },
|
|
{ 0x09, KEY_SETUP },
|
|
{ 0x05, KEY_VIDEO },
|
|
{ 0x22, KEY_CHANNEL },
|
|
|
|
{ 0x12, KEY_VOLUMEUP },
|
|
{ 0x15, KEY_VOLUMEDOWN },
|
|
{ 0x10, KEY_CHANNELUP },
|
|
{ 0x13, KEY_CHANNELDOWN },
|
|
|
|
{ 0x04, KEY_RECORD },
|
|
|
|
{ 0x16, KEY_1 },
|
|
{ 0x17, KEY_2 },
|
|
{ 0x18, KEY_3 },
|
|
{ 0x19, KEY_4 },
|
|
{ 0x1a, KEY_5 },
|
|
{ 0x1b, KEY_6 },
|
|
{ 0x1c, KEY_7 },
|
|
{ 0x1d, KEY_8 },
|
|
{ 0x1e, KEY_9 },
|
|
{ 0x1f, KEY_0 },
|
|
|
|
{ 0x20, KEY_LANGUAGE },
|
|
{ 0x21, KEY_SLEEP },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_videomate_tv_pvr_table = {
|
|
.scan = ir_codes_videomate_tv_pvr,
|
|
.size = ARRAY_SIZE(ir_codes_videomate_tv_pvr),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr_table);
|
|
|
|
/* Michael Tokarev <mjt@tls.msk.ru>
|
|
http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
|
|
keytable is used by MANLI MTV00[0x0c] and BeholdTV 40[13] at
|
|
least, and probably other cards too.
|
|
The "ascii-art picture" below (in comments, first row
|
|
is the keycode in hex, and subsequent row(s) shows
|
|
the button labels (several variants when appropriate)
|
|
helps to descide which keycodes to assign to the buttons.
|
|
*/
|
|
static struct ir_scancode ir_codes_manli[] = {
|
|
|
|
/* 0x1c 0x12 *
|
|
* FUNCTION POWER *
|
|
* FM (|) *
|
|
* */
|
|
{ 0x1c, KEY_RADIO }, /*XXX*/
|
|
{ 0x12, KEY_POWER },
|
|
|
|
/* 0x01 0x02 0x03 *
|
|
* 1 2 3 *
|
|
* *
|
|
* 0x04 0x05 0x06 *
|
|
* 4 5 6 *
|
|
* *
|
|
* 0x07 0x08 0x09 *
|
|
* 7 8 9 *
|
|
* */
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
/* 0x0a 0x00 0x17 *
|
|
* RECALL 0 +100 *
|
|
* PLUS *
|
|
* */
|
|
{ 0x0a, KEY_AGAIN }, /*XXX KEY_REWIND? */
|
|
{ 0x00, KEY_0 },
|
|
{ 0x17, KEY_DIGITS }, /*XXX*/
|
|
|
|
/* 0x14 0x10 *
|
|
* MENU INFO *
|
|
* OSD */
|
|
{ 0x14, KEY_MENU },
|
|
{ 0x10, KEY_INFO },
|
|
|
|
/* 0x0b *
|
|
* Up *
|
|
* *
|
|
* 0x18 0x16 0x0c *
|
|
* Left Ok Right *
|
|
* *
|
|
* 0x015 *
|
|
* Down *
|
|
* */
|
|
{ 0x0b, KEY_UP },
|
|
{ 0x18, KEY_LEFT },
|
|
{ 0x16, KEY_OK }, /*XXX KEY_SELECT? KEY_ENTER? */
|
|
{ 0x0c, KEY_RIGHT },
|
|
{ 0x15, KEY_DOWN },
|
|
|
|
/* 0x11 0x0d *
|
|
* TV/AV MODE *
|
|
* SOURCE STEREO *
|
|
* */
|
|
{ 0x11, KEY_TV }, /*XXX*/
|
|
{ 0x0d, KEY_MODE }, /*XXX there's no KEY_STEREO */
|
|
|
|
/* 0x0f 0x1b 0x1a *
|
|
* AUDIO Vol+ Chan+ *
|
|
* TIMESHIFT??? *
|
|
* *
|
|
* 0x0e 0x1f 0x1e *
|
|
* SLEEP Vol- Chan- *
|
|
* */
|
|
{ 0x0f, KEY_AUDIO },
|
|
{ 0x1b, KEY_VOLUMEUP },
|
|
{ 0x1a, KEY_CHANNELUP },
|
|
{ 0x0e, KEY_TIME },
|
|
{ 0x1f, KEY_VOLUMEDOWN },
|
|
{ 0x1e, KEY_CHANNELDOWN },
|
|
|
|
/* 0x13 0x19 *
|
|
* MUTE SNAPSHOT*
|
|
* */
|
|
{ 0x13, KEY_MUTE },
|
|
{ 0x19, KEY_CAMERA },
|
|
|
|
/* 0x1d unused ? */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_manli_table = {
|
|
.scan = ir_codes_manli,
|
|
.size = ARRAY_SIZE(ir_codes_manli),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_manli_table);
|
|
|
|
/* Mike Baikov <mike@baikov.com> */
|
|
static struct ir_scancode ir_codes_gotview7135[] = {
|
|
|
|
{ 0x11, KEY_POWER },
|
|
{ 0x35, KEY_TV },
|
|
{ 0x1b, KEY_0 },
|
|
{ 0x29, KEY_1 },
|
|
{ 0x19, KEY_2 },
|
|
{ 0x39, KEY_3 },
|
|
{ 0x1f, KEY_4 },
|
|
{ 0x2c, KEY_5 },
|
|
{ 0x21, KEY_6 },
|
|
{ 0x24, KEY_7 },
|
|
{ 0x18, KEY_8 },
|
|
{ 0x2b, KEY_9 },
|
|
{ 0x3b, KEY_AGAIN }, /* LOOP */
|
|
{ 0x06, KEY_AUDIO },
|
|
{ 0x31, KEY_PRINT }, /* PREVIEW */
|
|
{ 0x3e, KEY_VIDEO },
|
|
{ 0x10, KEY_CHANNELUP },
|
|
{ 0x20, KEY_CHANNELDOWN },
|
|
{ 0x0c, KEY_VOLUMEDOWN },
|
|
{ 0x28, KEY_VOLUMEUP },
|
|
{ 0x08, KEY_MUTE },
|
|
{ 0x26, KEY_SEARCH }, /* SCAN */
|
|
{ 0x3f, KEY_CAMERA }, /* SNAPSHOT */
|
|
{ 0x12, KEY_RECORD },
|
|
{ 0x32, KEY_STOP },
|
|
{ 0x3c, KEY_PLAY },
|
|
{ 0x1d, KEY_REWIND },
|
|
{ 0x2d, KEY_PAUSE },
|
|
{ 0x0d, KEY_FORWARD },
|
|
{ 0x05, KEY_ZOOM }, /*FULL*/
|
|
|
|
{ 0x2a, KEY_F21 }, /* LIVE TIMESHIFT */
|
|
{ 0x0e, KEY_F22 }, /* MIN TIMESHIFT */
|
|
{ 0x1e, KEY_TIME }, /* TIMESHIFT */
|
|
{ 0x38, KEY_F24 }, /* NORMAL TIMESHIFT */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_gotview7135_table = {
|
|
.scan = ir_codes_gotview7135,
|
|
.size = ARRAY_SIZE(ir_codes_gotview7135),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_gotview7135_table);
|
|
|
|
static struct ir_scancode ir_codes_purpletv[] = {
|
|
{ 0x03, KEY_POWER },
|
|
{ 0x6f, KEY_MUTE },
|
|
{ 0x10, KEY_BACKSPACE }, /* Recall */
|
|
|
|
{ 0x11, KEY_0 },
|
|
{ 0x04, KEY_1 },
|
|
{ 0x05, KEY_2 },
|
|
{ 0x06, KEY_3 },
|
|
{ 0x08, KEY_4 },
|
|
{ 0x09, KEY_5 },
|
|
{ 0x0a, KEY_6 },
|
|
{ 0x0c, KEY_7 },
|
|
{ 0x0d, KEY_8 },
|
|
{ 0x0e, KEY_9 },
|
|
{ 0x12, KEY_DOT }, /* 100+ */
|
|
|
|
{ 0x07, KEY_VOLUMEUP },
|
|
{ 0x0b, KEY_VOLUMEDOWN },
|
|
{ 0x1a, KEY_KPPLUS },
|
|
{ 0x18, KEY_KPMINUS },
|
|
{ 0x15, KEY_UP },
|
|
{ 0x1d, KEY_DOWN },
|
|
{ 0x0f, KEY_CHANNELUP },
|
|
{ 0x13, KEY_CHANNELDOWN },
|
|
{ 0x48, KEY_ZOOM },
|
|
|
|
{ 0x1b, KEY_VIDEO }, /* Video source */
|
|
{ 0x1f, KEY_CAMERA }, /* Snapshot */
|
|
{ 0x49, KEY_LANGUAGE }, /* MTS Select */
|
|
{ 0x19, KEY_SEARCH }, /* Auto Scan */
|
|
|
|
{ 0x4b, KEY_RECORD },
|
|
{ 0x46, KEY_PLAY },
|
|
{ 0x45, KEY_PAUSE }, /* Pause */
|
|
{ 0x44, KEY_STOP },
|
|
{ 0x43, KEY_TIME }, /* Time Shift */
|
|
{ 0x17, KEY_CHANNEL }, /* SURF CH */
|
|
{ 0x40, KEY_FORWARD }, /* Forward ? */
|
|
{ 0x42, KEY_REWIND }, /* Backward ? */
|
|
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_purpletv_table = {
|
|
.scan = ir_codes_purpletv,
|
|
.size = ARRAY_SIZE(ir_codes_purpletv),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_purpletv_table);
|
|
|
|
/* Mapping for the 28 key remote control as seen at
|
|
http://www.sednacomputer.com/photo/cardbus-tv.jpg
|
|
Pavel Mihaylov <bin@bash.info>
|
|
Also for the remote bundled with Kozumi KTV-01C card */
|
|
static struct ir_scancode ir_codes_pctv_sedna[] = {
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x0a, KEY_AGAIN }, /* Recall */
|
|
{ 0x0b, KEY_CHANNELUP },
|
|
{ 0x0c, KEY_VOLUMEUP },
|
|
{ 0x0d, KEY_MODE }, /* Stereo */
|
|
{ 0x0e, KEY_STOP },
|
|
{ 0x0f, KEY_PREVIOUSSONG },
|
|
{ 0x10, KEY_ZOOM },
|
|
{ 0x11, KEY_TUNER }, /* Source */
|
|
{ 0x12, KEY_POWER },
|
|
{ 0x13, KEY_MUTE },
|
|
{ 0x15, KEY_CHANNELDOWN },
|
|
{ 0x18, KEY_VOLUMEDOWN },
|
|
{ 0x19, KEY_CAMERA }, /* Snapshot */
|
|
{ 0x1a, KEY_NEXTSONG },
|
|
{ 0x1b, KEY_TIME }, /* Time Shift */
|
|
{ 0x1c, KEY_RADIO }, /* FM Radio */
|
|
{ 0x1d, KEY_RECORD },
|
|
{ 0x1e, KEY_PAUSE },
|
|
/* additional codes for Kozumi's remote */
|
|
{ 0x14, KEY_INFO }, /* OSD */
|
|
{ 0x16, KEY_OK }, /* OK */
|
|
{ 0x17, KEY_DIGITS }, /* Plus */
|
|
{ 0x1f, KEY_PLAY }, /* Play */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pctv_sedna_table = {
|
|
.scan = ir_codes_pctv_sedna,
|
|
.size = ARRAY_SIZE(ir_codes_pctv_sedna),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna_table);
|
|
|
|
/* Mark Phalan <phalanm@o2.ie> */
|
|
static struct ir_scancode ir_codes_pv951[] = {
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x12, KEY_POWER },
|
|
{ 0x10, KEY_MUTE },
|
|
{ 0x1f, KEY_VOLUMEDOWN },
|
|
{ 0x1b, KEY_VOLUMEUP },
|
|
{ 0x1a, KEY_CHANNELUP },
|
|
{ 0x1e, KEY_CHANNELDOWN },
|
|
{ 0x0e, KEY_PAGEUP },
|
|
{ 0x1d, KEY_PAGEDOWN },
|
|
{ 0x13, KEY_SOUND },
|
|
|
|
{ 0x18, KEY_KPPLUSMINUS }, /* CH +/- */
|
|
{ 0x16, KEY_SUBTITLE }, /* CC */
|
|
{ 0x0d, KEY_TEXT }, /* TTX */
|
|
{ 0x0b, KEY_TV }, /* AIR/CBL */
|
|
{ 0x11, KEY_PC }, /* PC/TV */
|
|
{ 0x17, KEY_OK }, /* CH RTN */
|
|
{ 0x19, KEY_MODE }, /* FUNC */
|
|
{ 0x0c, KEY_SEARCH }, /* AUTOSCAN */
|
|
|
|
/* Not sure what to do with these ones! */
|
|
{ 0x0f, KEY_SELECT }, /* SOURCE */
|
|
{ 0x0a, KEY_KPPLUS }, /* +100 */
|
|
{ 0x14, KEY_EQUAL }, /* SYNC */
|
|
{ 0x1c, KEY_MEDIA }, /* PC/TV */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pv951_table = {
|
|
.scan = ir_codes_pv951,
|
|
.size = ARRAY_SIZE(ir_codes_pv951),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pv951_table);
|
|
|
|
/* generic RC5 keytable */
|
|
/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
|
|
/* used by old (black) Hauppauge remotes */
|
|
static struct ir_scancode ir_codes_rc5_tv[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x0b, KEY_CHANNEL }, /* channel / program (japan: 11) */
|
|
{ 0x0c, KEY_POWER }, /* standby */
|
|
{ 0x0d, KEY_MUTE }, /* mute / demute */
|
|
{ 0x0f, KEY_TV }, /* display */
|
|
{ 0x10, KEY_VOLUMEUP },
|
|
{ 0x11, KEY_VOLUMEDOWN },
|
|
{ 0x12, KEY_BRIGHTNESSUP },
|
|
{ 0x13, KEY_BRIGHTNESSDOWN },
|
|
{ 0x1e, KEY_SEARCH }, /* search + */
|
|
{ 0x20, KEY_CHANNELUP }, /* channel / program + */
|
|
{ 0x21, KEY_CHANNELDOWN }, /* channel / program - */
|
|
{ 0x22, KEY_CHANNEL }, /* alt / channel */
|
|
{ 0x23, KEY_LANGUAGE }, /* 1st / 2nd language */
|
|
{ 0x26, KEY_SLEEP }, /* sleeptimer */
|
|
{ 0x2e, KEY_MENU }, /* 2nd controls (USA: menu) */
|
|
{ 0x30, KEY_PAUSE },
|
|
{ 0x32, KEY_REWIND },
|
|
{ 0x33, KEY_GOTO },
|
|
{ 0x35, KEY_PLAY },
|
|
{ 0x36, KEY_STOP },
|
|
{ 0x37, KEY_RECORD }, /* recording */
|
|
{ 0x3c, KEY_TEXT }, /* teletext submode (Japan: 12) */
|
|
{ 0x3d, KEY_SUSPEND }, /* system standby */
|
|
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_rc5_tv_table = {
|
|
.scan = ir_codes_rc5_tv,
|
|
.size = ARRAY_SIZE(ir_codes_rc5_tv),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_rc5_tv_table);
|
|
|
|
/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
|
|
static struct ir_scancode ir_codes_winfast[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x12, KEY_0 },
|
|
{ 0x05, KEY_1 },
|
|
{ 0x06, KEY_2 },
|
|
{ 0x07, KEY_3 },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x0a, KEY_5 },
|
|
{ 0x0b, KEY_6 },
|
|
{ 0x0d, KEY_7 },
|
|
{ 0x0e, KEY_8 },
|
|
{ 0x0f, KEY_9 },
|
|
|
|
{ 0x00, KEY_POWER },
|
|
{ 0x1b, KEY_AUDIO }, /* Audio Source */
|
|
{ 0x02, KEY_TUNER }, /* TV/FM, not on Y0400052 */
|
|
{ 0x1e, KEY_VIDEO }, /* Video Source */
|
|
{ 0x16, KEY_INFO }, /* Display information */
|
|
{ 0x04, KEY_VOLUMEUP },
|
|
{ 0x08, KEY_VOLUMEDOWN },
|
|
{ 0x0c, KEY_CHANNELUP },
|
|
{ 0x10, KEY_CHANNELDOWN },
|
|
{ 0x03, KEY_ZOOM }, /* fullscreen */
|
|
{ 0x1f, KEY_TEXT }, /* closed caption/teletext */
|
|
{ 0x20, KEY_SLEEP },
|
|
{ 0x29, KEY_CLEAR }, /* boss key */
|
|
{ 0x14, KEY_MUTE },
|
|
{ 0x2b, KEY_RED },
|
|
{ 0x2c, KEY_GREEN },
|
|
{ 0x2d, KEY_YELLOW },
|
|
{ 0x2e, KEY_BLUE },
|
|
{ 0x18, KEY_KPPLUS }, /* fine tune + , not on Y040052 */
|
|
{ 0x19, KEY_KPMINUS }, /* fine tune - , not on Y040052 */
|
|
{ 0x2a, KEY_MEDIA }, /* PIP (Picture in picture */
|
|
{ 0x21, KEY_DOT },
|
|
{ 0x13, KEY_ENTER },
|
|
{ 0x11, KEY_LAST }, /* Recall (last channel */
|
|
{ 0x22, KEY_PREVIOUS },
|
|
{ 0x23, KEY_PLAYPAUSE },
|
|
{ 0x24, KEY_NEXT },
|
|
{ 0x25, KEY_TIME }, /* Time Shifting */
|
|
{ 0x26, KEY_STOP },
|
|
{ 0x27, KEY_RECORD },
|
|
{ 0x28, KEY_SAVE }, /* Screenshot */
|
|
{ 0x2f, KEY_MENU },
|
|
{ 0x30, KEY_CANCEL },
|
|
{ 0x31, KEY_CHANNEL }, /* Channel Surf */
|
|
{ 0x32, KEY_SUBTITLE },
|
|
{ 0x33, KEY_LANGUAGE },
|
|
{ 0x34, KEY_REWIND },
|
|
{ 0x35, KEY_FASTFORWARD },
|
|
{ 0x36, KEY_TV },
|
|
{ 0x37, KEY_RADIO }, /* FM */
|
|
{ 0x38, KEY_DVD },
|
|
|
|
{ 0x1a, KEY_MODE}, /* change to MCE mode on Y04G0051 */
|
|
{ 0x3e, KEY_F21 }, /* MCE +VOL, on Y04G0033 */
|
|
{ 0x3a, KEY_F22 }, /* MCE -VOL, on Y04G0033 */
|
|
{ 0x3b, KEY_F23 }, /* MCE +CH, on Y04G0033 */
|
|
{ 0x3f, KEY_F24 } /* MCE -CH, on Y04G0033 */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_winfast_table = {
|
|
.scan = ir_codes_winfast,
|
|
.size = ARRAY_SIZE(ir_codes_winfast),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_winfast_table);
|
|
|
|
static struct ir_scancode ir_codes_pinnacle_color[] = {
|
|
{ 0x59, KEY_MUTE },
|
|
{ 0x4a, KEY_POWER },
|
|
|
|
{ 0x18, KEY_TEXT },
|
|
{ 0x26, KEY_TV },
|
|
{ 0x3d, KEY_PRINT },
|
|
|
|
{ 0x48, KEY_RED },
|
|
{ 0x04, KEY_GREEN },
|
|
{ 0x11, KEY_YELLOW },
|
|
{ 0x00, KEY_BLUE },
|
|
|
|
{ 0x2d, KEY_VOLUMEUP },
|
|
{ 0x1e, KEY_VOLUMEDOWN },
|
|
|
|
{ 0x49, KEY_MENU },
|
|
|
|
{ 0x16, KEY_CHANNELUP },
|
|
{ 0x17, KEY_CHANNELDOWN },
|
|
|
|
{ 0x20, KEY_UP },
|
|
{ 0x21, KEY_DOWN },
|
|
{ 0x22, KEY_LEFT },
|
|
{ 0x23, KEY_RIGHT },
|
|
{ 0x0d, KEY_SELECT },
|
|
|
|
{ 0x08, KEY_BACK },
|
|
{ 0x07, KEY_REFRESH },
|
|
|
|
{ 0x2f, KEY_ZOOM },
|
|
{ 0x29, KEY_RECORD },
|
|
|
|
{ 0x4b, KEY_PAUSE },
|
|
{ 0x4d, KEY_REWIND },
|
|
{ 0x2e, KEY_PLAY },
|
|
{ 0x4e, KEY_FORWARD },
|
|
{ 0x53, KEY_PREVIOUS },
|
|
{ 0x4c, KEY_STOP },
|
|
{ 0x54, KEY_NEXT },
|
|
|
|
{ 0x69, KEY_0 },
|
|
{ 0x6a, KEY_1 },
|
|
{ 0x6b, KEY_2 },
|
|
{ 0x6c, KEY_3 },
|
|
{ 0x6d, KEY_4 },
|
|
{ 0x6e, KEY_5 },
|
|
{ 0x6f, KEY_6 },
|
|
{ 0x70, KEY_7 },
|
|
{ 0x71, KEY_8 },
|
|
{ 0x72, KEY_9 },
|
|
|
|
{ 0x74, KEY_CHANNEL },
|
|
{ 0x0a, KEY_BACKSPACE },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pinnacle_color_table = {
|
|
.scan = ir_codes_pinnacle_color,
|
|
.size = ARRAY_SIZE(ir_codes_pinnacle_color),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pinnacle_color_table);
|
|
|
|
/* Hauppauge: the newer, gray remotes (seems there are multiple
|
|
* slightly different versions), shipped with cx88+ivtv cards.
|
|
* almost rc5 coding, but some non-standard keys */
|
|
static struct ir_scancode ir_codes_hauppauge_new[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
{ 0x0a, KEY_TEXT }, /* keypad asterisk as well */
|
|
{ 0x0b, KEY_RED }, /* red button */
|
|
{ 0x0c, KEY_RADIO },
|
|
{ 0x0d, KEY_MENU },
|
|
{ 0x0e, KEY_SUBTITLE }, /* also the # key */
|
|
{ 0x0f, KEY_MUTE },
|
|
{ 0x10, KEY_VOLUMEUP },
|
|
{ 0x11, KEY_VOLUMEDOWN },
|
|
{ 0x12, KEY_PREVIOUS }, /* previous channel */
|
|
{ 0x14, KEY_UP },
|
|
{ 0x15, KEY_DOWN },
|
|
{ 0x16, KEY_LEFT },
|
|
{ 0x17, KEY_RIGHT },
|
|
{ 0x18, KEY_VIDEO }, /* Videos */
|
|
{ 0x19, KEY_AUDIO }, /* Music */
|
|
/* 0x1a: Pictures - presume this means
|
|
"Multimedia Home Platform" -
|
|
no "PICTURES" key in input.h
|
|
*/
|
|
{ 0x1a, KEY_MHP },
|
|
|
|
{ 0x1b, KEY_EPG }, /* Guide */
|
|
{ 0x1c, KEY_TV },
|
|
{ 0x1e, KEY_NEXTSONG }, /* skip >| */
|
|
{ 0x1f, KEY_EXIT }, /* back/exit */
|
|
{ 0x20, KEY_CHANNELUP }, /* channel / program + */
|
|
{ 0x21, KEY_CHANNELDOWN }, /* channel / program - */
|
|
{ 0x22, KEY_CHANNEL }, /* source (old black remote) */
|
|
{ 0x24, KEY_PREVIOUSSONG }, /* replay |< */
|
|
{ 0x25, KEY_ENTER }, /* OK */
|
|
{ 0x26, KEY_SLEEP }, /* minimize (old black remote) */
|
|
{ 0x29, KEY_BLUE }, /* blue key */
|
|
{ 0x2e, KEY_GREEN }, /* green button */
|
|
{ 0x30, KEY_PAUSE }, /* pause */
|
|
{ 0x32, KEY_REWIND }, /* backward << */
|
|
{ 0x34, KEY_FASTFORWARD }, /* forward >> */
|
|
{ 0x35, KEY_PLAY },
|
|
{ 0x36, KEY_STOP },
|
|
{ 0x37, KEY_RECORD }, /* recording */
|
|
{ 0x38, KEY_YELLOW }, /* yellow key */
|
|
{ 0x3b, KEY_SELECT }, /* top right button */
|
|
{ 0x3c, KEY_ZOOM }, /* full */
|
|
{ 0x3d, KEY_POWER }, /* system power (green button) */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_hauppauge_new_table = {
|
|
.scan = ir_codes_hauppauge_new,
|
|
.size = ARRAY_SIZE(ir_codes_hauppauge_new),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new_table);
|
|
|
|
/*
|
|
* Hauppauge:the newer, gray remotes (seems there are multiple
|
|
* slightly different versions), shipped with cx88+ivtv cards.
|
|
*
|
|
* This table contains the complete RC5 code, instead of just the data part
|
|
*/
|
|
static struct ir_scancode ir_codes_rc5_hauppauge_new[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x1e00, KEY_0 },
|
|
{ 0x1e01, KEY_1 },
|
|
{ 0x1e02, KEY_2 },
|
|
{ 0x1e03, KEY_3 },
|
|
{ 0x1e04, KEY_4 },
|
|
{ 0x1e05, KEY_5 },
|
|
{ 0x1e06, KEY_6 },
|
|
{ 0x1e07, KEY_7 },
|
|
{ 0x1e08, KEY_8 },
|
|
{ 0x1e09, KEY_9 },
|
|
|
|
{ 0x1e0a, KEY_TEXT }, /* keypad asterisk as well */
|
|
{ 0x1e0b, KEY_RED }, /* red button */
|
|
{ 0x1e0c, KEY_RADIO },
|
|
{ 0x1e0d, KEY_MENU },
|
|
{ 0x1e0e, KEY_SUBTITLE }, /* also the # key */
|
|
{ 0x1e0f, KEY_MUTE },
|
|
{ 0x1e10, KEY_VOLUMEUP },
|
|
{ 0x1e11, KEY_VOLUMEDOWN },
|
|
{ 0x1e12, KEY_PREVIOUS }, /* previous channel */
|
|
{ 0x1e14, KEY_UP },
|
|
{ 0x1e15, KEY_DOWN },
|
|
{ 0x1e16, KEY_LEFT },
|
|
{ 0x1e17, KEY_RIGHT },
|
|
{ 0x1e18, KEY_VIDEO }, /* Videos */
|
|
{ 0x1e19, KEY_AUDIO }, /* Music */
|
|
/* 0x1e1a: Pictures - presume this means
|
|
"Multimedia Home Platform" -
|
|
no "PICTURES" key in input.h
|
|
*/
|
|
{ 0x1e1a, KEY_MHP },
|
|
|
|
{ 0x1e1b, KEY_EPG }, /* Guide */
|
|
{ 0x1e1c, KEY_TV },
|
|
{ 0x1e1e, KEY_NEXTSONG }, /* skip >| */
|
|
{ 0x1e1f, KEY_EXIT }, /* back/exit */
|
|
{ 0x1e20, KEY_CHANNELUP }, /* channel / program + */
|
|
{ 0x1e21, KEY_CHANNELDOWN }, /* channel / program - */
|
|
{ 0x1e22, KEY_CHANNEL }, /* source (old black remote) */
|
|
{ 0x1e24, KEY_PREVIOUSSONG }, /* replay |< */
|
|
{ 0x1e25, KEY_ENTER }, /* OK */
|
|
{ 0x1e26, KEY_SLEEP }, /* minimize (old black remote) */
|
|
{ 0x1e29, KEY_BLUE }, /* blue key */
|
|
{ 0x1e2e, KEY_GREEN }, /* green button */
|
|
{ 0x1e30, KEY_PAUSE }, /* pause */
|
|
{ 0x1e32, KEY_REWIND }, /* backward << */
|
|
{ 0x1e34, KEY_FASTFORWARD }, /* forward >> */
|
|
{ 0x1e35, KEY_PLAY },
|
|
{ 0x1e36, KEY_STOP },
|
|
{ 0x1e37, KEY_RECORD }, /* recording */
|
|
{ 0x1e38, KEY_YELLOW }, /* yellow key */
|
|
{ 0x1e3b, KEY_SELECT }, /* top right button */
|
|
{ 0x1e3c, KEY_ZOOM }, /* full */
|
|
{ 0x1e3d, KEY_POWER }, /* system power (green button) */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_rc5_hauppauge_new_table = {
|
|
.scan = ir_codes_rc5_hauppauge_new,
|
|
.size = ARRAY_SIZE(ir_codes_rc5_hauppauge_new),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_rc5_hauppauge_new_table);
|
|
|
|
static struct ir_scancode ir_codes_npgtech[] = {
|
|
{ 0x1d, KEY_SWITCHVIDEOMODE }, /* switch inputs */
|
|
{ 0x2a, KEY_FRONT },
|
|
|
|
{ 0x3e, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x06, KEY_3 },
|
|
{ 0x0a, KEY_4 },
|
|
{ 0x0e, KEY_5 },
|
|
{ 0x12, KEY_6 },
|
|
{ 0x16, KEY_7 },
|
|
{ 0x1a, KEY_8 },
|
|
{ 0x1e, KEY_9 },
|
|
{ 0x3a, KEY_0 },
|
|
{ 0x22, KEY_NUMLOCK }, /* -/-- */
|
|
{ 0x20, KEY_REFRESH },
|
|
|
|
{ 0x03, KEY_BRIGHTNESSDOWN },
|
|
{ 0x28, KEY_AUDIO },
|
|
{ 0x3c, KEY_CHANNELUP },
|
|
{ 0x3f, KEY_VOLUMEDOWN },
|
|
{ 0x2e, KEY_MUTE },
|
|
{ 0x3b, KEY_VOLUMEUP },
|
|
{ 0x00, KEY_CHANNELDOWN },
|
|
{ 0x07, KEY_BRIGHTNESSUP },
|
|
{ 0x2c, KEY_TEXT },
|
|
|
|
{ 0x37, KEY_RECORD },
|
|
{ 0x17, KEY_PLAY },
|
|
{ 0x13, KEY_PAUSE },
|
|
{ 0x26, KEY_STOP },
|
|
{ 0x18, KEY_FASTFORWARD },
|
|
{ 0x14, KEY_REWIND },
|
|
{ 0x33, KEY_ZOOM },
|
|
{ 0x32, KEY_KEYBOARD },
|
|
{ 0x30, KEY_GOTO }, /* Pointing arrow */
|
|
{ 0x36, KEY_MACRO }, /* Maximize/Minimize (yellow) */
|
|
{ 0x0b, KEY_RADIO },
|
|
{ 0x10, KEY_POWER },
|
|
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_npgtech_table = {
|
|
.scan = ir_codes_npgtech,
|
|
.size = ARRAY_SIZE(ir_codes_npgtech),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_npgtech_table);
|
|
|
|
/* Norwood Micro (non-Pro) TV Tuner
|
|
By Peter Naulls <peter@chocky.org>
|
|
Key comments are the functions given in the manual */
|
|
static struct ir_scancode ir_codes_norwood[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x20, KEY_0 },
|
|
{ 0x21, KEY_1 },
|
|
{ 0x22, KEY_2 },
|
|
{ 0x23, KEY_3 },
|
|
{ 0x24, KEY_4 },
|
|
{ 0x25, KEY_5 },
|
|
{ 0x26, KEY_6 },
|
|
{ 0x27, KEY_7 },
|
|
{ 0x28, KEY_8 },
|
|
{ 0x29, KEY_9 },
|
|
|
|
{ 0x78, KEY_TUNER }, /* Video Source */
|
|
{ 0x2c, KEY_EXIT }, /* Open/Close software */
|
|
{ 0x2a, KEY_SELECT }, /* 2 Digit Select */
|
|
{ 0x69, KEY_AGAIN }, /* Recall */
|
|
|
|
{ 0x32, KEY_BRIGHTNESSUP }, /* Brightness increase */
|
|
{ 0x33, KEY_BRIGHTNESSDOWN }, /* Brightness decrease */
|
|
{ 0x6b, KEY_KPPLUS }, /* (not named >>>>>) */
|
|
{ 0x6c, KEY_KPMINUS }, /* (not named <<<<<) */
|
|
|
|
{ 0x2d, KEY_MUTE }, /* Mute */
|
|
{ 0x30, KEY_VOLUMEUP }, /* Volume up */
|
|
{ 0x31, KEY_VOLUMEDOWN }, /* Volume down */
|
|
{ 0x60, KEY_CHANNELUP }, /* Channel up */
|
|
{ 0x61, KEY_CHANNELDOWN }, /* Channel down */
|
|
|
|
{ 0x3f, KEY_RECORD }, /* Record */
|
|
{ 0x37, KEY_PLAY }, /* Play */
|
|
{ 0x36, KEY_PAUSE }, /* Pause */
|
|
{ 0x2b, KEY_STOP }, /* Stop */
|
|
{ 0x67, KEY_FASTFORWARD }, /* Foward */
|
|
{ 0x66, KEY_REWIND }, /* Rewind */
|
|
{ 0x3e, KEY_SEARCH }, /* Auto Scan */
|
|
{ 0x2e, KEY_CAMERA }, /* Capture Video */
|
|
{ 0x6d, KEY_MENU }, /* Show/Hide Control */
|
|
{ 0x2f, KEY_ZOOM }, /* Full Screen */
|
|
{ 0x34, KEY_RADIO }, /* FM */
|
|
{ 0x65, KEY_POWER }, /* Computer power */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_norwood_table = {
|
|
.scan = ir_codes_norwood,
|
|
.size = ARRAY_SIZE(ir_codes_norwood),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_norwood_table);
|
|
|
|
/* From reading the following remotes:
|
|
* Zenith Universal 7 / TV Mode 807 / VCR Mode 837
|
|
* Hauppauge (from NOVA-CI-s box product)
|
|
* This is a "middle of the road" approach, differences are noted
|
|
*/
|
|
static struct ir_scancode ir_codes_budget_ci_old[] = {
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
{ 0x0a, KEY_ENTER },
|
|
{ 0x0b, KEY_RED },
|
|
{ 0x0c, KEY_POWER }, /* RADIO on Hauppauge */
|
|
{ 0x0d, KEY_MUTE },
|
|
{ 0x0f, KEY_A }, /* TV on Hauppauge */
|
|
{ 0x10, KEY_VOLUMEUP },
|
|
{ 0x11, KEY_VOLUMEDOWN },
|
|
{ 0x14, KEY_B },
|
|
{ 0x1c, KEY_UP },
|
|
{ 0x1d, KEY_DOWN },
|
|
{ 0x1e, KEY_OPTION }, /* RESERVED on Hauppauge */
|
|
{ 0x1f, KEY_BREAK },
|
|
{ 0x20, KEY_CHANNELUP },
|
|
{ 0x21, KEY_CHANNELDOWN },
|
|
{ 0x22, KEY_PREVIOUS }, /* Prev Ch on Zenith, SOURCE on Hauppauge */
|
|
{ 0x24, KEY_RESTART },
|
|
{ 0x25, KEY_OK },
|
|
{ 0x26, KEY_CYCLEWINDOWS }, /* MINIMIZE on Hauppauge */
|
|
{ 0x28, KEY_ENTER }, /* VCR mode on Zenith */
|
|
{ 0x29, KEY_PAUSE },
|
|
{ 0x2b, KEY_RIGHT },
|
|
{ 0x2c, KEY_LEFT },
|
|
{ 0x2e, KEY_MENU }, /* FULL SCREEN on Hauppauge */
|
|
{ 0x30, KEY_SLOW },
|
|
{ 0x31, KEY_PREVIOUS }, /* VCR mode on Zenith */
|
|
{ 0x32, KEY_REWIND },
|
|
{ 0x34, KEY_FASTFORWARD },
|
|
{ 0x35, KEY_PLAY },
|
|
{ 0x36, KEY_STOP },
|
|
{ 0x37, KEY_RECORD },
|
|
{ 0x38, KEY_TUNER }, /* TV/VCR on Zenith */
|
|
{ 0x3a, KEY_C },
|
|
{ 0x3c, KEY_EXIT },
|
|
{ 0x3d, KEY_POWER2 },
|
|
{ 0x3e, KEY_TUNER },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_budget_ci_old_table = {
|
|
.scan = ir_codes_budget_ci_old,
|
|
.size = ARRAY_SIZE(ir_codes_budget_ci_old),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old_table);
|
|
|
|
/*
|
|
* Marc Fargas <telenieko@telenieko.com>
|
|
* this is the remote control that comes with the asus p7131
|
|
* which has a label saying is "Model PC-39"
|
|
*/
|
|
static struct ir_scancode ir_codes_asus_pc39[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x15, KEY_0 },
|
|
{ 0x29, KEY_1 },
|
|
{ 0x2d, KEY_2 },
|
|
{ 0x2b, KEY_3 },
|
|
{ 0x09, KEY_4 },
|
|
{ 0x0d, KEY_5 },
|
|
{ 0x0b, KEY_6 },
|
|
{ 0x31, KEY_7 },
|
|
{ 0x35, KEY_8 },
|
|
{ 0x33, KEY_9 },
|
|
|
|
{ 0x3e, KEY_RADIO }, /* radio */
|
|
{ 0x03, KEY_MENU }, /* dvd/menu */
|
|
{ 0x2a, KEY_VOLUMEUP },
|
|
{ 0x19, KEY_VOLUMEDOWN },
|
|
{ 0x37, KEY_UP },
|
|
{ 0x3b, KEY_DOWN },
|
|
{ 0x27, KEY_LEFT },
|
|
{ 0x2f, KEY_RIGHT },
|
|
{ 0x25, KEY_VIDEO }, /* video */
|
|
{ 0x39, KEY_AUDIO }, /* music */
|
|
|
|
{ 0x21, KEY_TV }, /* tv */
|
|
{ 0x1d, KEY_EXIT }, /* back */
|
|
{ 0x0a, KEY_CHANNELUP }, /* channel / program + */
|
|
{ 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
|
|
{ 0x1a, KEY_ENTER }, /* enter */
|
|
|
|
{ 0x06, KEY_PAUSE }, /* play/pause */
|
|
{ 0x1e, KEY_PREVIOUS }, /* rew */
|
|
{ 0x26, KEY_NEXT }, /* forward */
|
|
{ 0x0e, KEY_REWIND }, /* backward << */
|
|
{ 0x3a, KEY_FASTFORWARD }, /* forward >> */
|
|
{ 0x36, KEY_STOP },
|
|
{ 0x2e, KEY_RECORD }, /* recording */
|
|
{ 0x16, KEY_POWER }, /* the button that reads "close" */
|
|
|
|
{ 0x11, KEY_ZOOM }, /* full screen */
|
|
{ 0x13, KEY_MACRO }, /* recall */
|
|
{ 0x23, KEY_HOME }, /* home */
|
|
{ 0x05, KEY_PVR }, /* picture */
|
|
{ 0x3d, KEY_MUTE }, /* mute */
|
|
{ 0x01, KEY_DVD }, /* dvd */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_asus_pc39_table = {
|
|
.scan = ir_codes_asus_pc39,
|
|
.size = ARRAY_SIZE(ir_codes_asus_pc39),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_asus_pc39_table);
|
|
|
|
|
|
/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
|
|
Juan Pablo Sormani <sorman@gmail.com> */
|
|
static struct ir_scancode ir_codes_encore_enltv[] = {
|
|
|
|
/* Power button does nothing, neither in Windows app,
|
|
although it sends data (used for BIOS wakeup?) */
|
|
{ 0x0d, KEY_MUTE },
|
|
|
|
{ 0x1e, KEY_TV },
|
|
{ 0x00, KEY_VIDEO },
|
|
{ 0x01, KEY_AUDIO }, /* music */
|
|
{ 0x02, KEY_MHP }, /* picture */
|
|
|
|
{ 0x1f, KEY_1 },
|
|
{ 0x03, KEY_2 },
|
|
{ 0x04, KEY_3 },
|
|
{ 0x05, KEY_4 },
|
|
{ 0x1c, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x1d, KEY_9 },
|
|
{ 0x0a, KEY_0 },
|
|
|
|
{ 0x09, KEY_LIST }, /* -/-- */
|
|
{ 0x0b, KEY_LAST }, /* recall */
|
|
|
|
{ 0x14, KEY_HOME }, /* win start menu */
|
|
{ 0x15, KEY_EXIT }, /* exit */
|
|
{ 0x16, KEY_CHANNELUP }, /* UP */
|
|
{ 0x12, KEY_CHANNELDOWN }, /* DOWN */
|
|
{ 0x0c, KEY_VOLUMEUP }, /* RIGHT */
|
|
{ 0x17, KEY_VOLUMEDOWN }, /* LEFT */
|
|
|
|
{ 0x18, KEY_ENTER }, /* OK */
|
|
|
|
{ 0x0e, KEY_ESC },
|
|
{ 0x13, KEY_CYCLEWINDOWS }, /* desktop */
|
|
{ 0x11, KEY_TAB },
|
|
{ 0x19, KEY_SWITCHVIDEOMODE }, /* switch */
|
|
|
|
{ 0x1a, KEY_MENU },
|
|
{ 0x1b, KEY_ZOOM }, /* fullscreen */
|
|
{ 0x44, KEY_TIME }, /* time shift */
|
|
{ 0x40, KEY_MODE }, /* source */
|
|
|
|
{ 0x5a, KEY_RECORD },
|
|
{ 0x42, KEY_PLAY }, /* play/pause */
|
|
{ 0x45, KEY_STOP },
|
|
{ 0x43, KEY_CAMERA }, /* camera icon */
|
|
|
|
{ 0x48, KEY_REWIND },
|
|
{ 0x4a, KEY_FASTFORWARD },
|
|
{ 0x49, KEY_PREVIOUS },
|
|
{ 0x4b, KEY_NEXT },
|
|
|
|
{ 0x4c, KEY_FAVORITES }, /* tv wall */
|
|
{ 0x4d, KEY_SOUND }, /* DVD sound */
|
|
{ 0x4e, KEY_LANGUAGE }, /* DVD lang */
|
|
{ 0x4f, KEY_TEXT }, /* DVD text */
|
|
|
|
{ 0x50, KEY_SLEEP }, /* shutdown */
|
|
{ 0x51, KEY_MODE }, /* stereo > main */
|
|
{ 0x52, KEY_SELECT }, /* stereo > sap */
|
|
{ 0x53, KEY_PROG1 }, /* teletext */
|
|
|
|
|
|
{ 0x59, KEY_RED }, /* AP1 */
|
|
{ 0x41, KEY_GREEN }, /* AP2 */
|
|
{ 0x47, KEY_YELLOW }, /* AP3 */
|
|
{ 0x57, KEY_BLUE }, /* AP4 */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_encore_enltv_table = {
|
|
.scan = ir_codes_encore_enltv,
|
|
.size = ARRAY_SIZE(ir_codes_encore_enltv),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_table);
|
|
|
|
/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
|
|
Mauro Carvalho Chehab <mchehab@infradead.org> */
|
|
static struct ir_scancode ir_codes_encore_enltv2[] = {
|
|
{ 0x4c, KEY_POWER2 },
|
|
{ 0x4a, KEY_TUNER },
|
|
{ 0x40, KEY_1 },
|
|
{ 0x60, KEY_2 },
|
|
{ 0x50, KEY_3 },
|
|
{ 0x70, KEY_4 },
|
|
{ 0x48, KEY_5 },
|
|
{ 0x68, KEY_6 },
|
|
{ 0x58, KEY_7 },
|
|
{ 0x78, KEY_8 },
|
|
{ 0x44, KEY_9 },
|
|
{ 0x54, KEY_0 },
|
|
|
|
{ 0x64, KEY_LAST }, /* +100 */
|
|
{ 0x4e, KEY_AGAIN }, /* Recall */
|
|
|
|
{ 0x6c, KEY_SWITCHVIDEOMODE }, /* Video Source */
|
|
{ 0x5e, KEY_MENU },
|
|
{ 0x56, KEY_SCREEN },
|
|
{ 0x7a, KEY_SETUP },
|
|
|
|
{ 0x46, KEY_MUTE },
|
|
{ 0x5c, KEY_MODE }, /* Stereo */
|
|
{ 0x74, KEY_INFO },
|
|
{ 0x7c, KEY_CLEAR },
|
|
|
|
{ 0x55, KEY_UP },
|
|
{ 0x49, KEY_DOWN },
|
|
{ 0x7e, KEY_LEFT },
|
|
{ 0x59, KEY_RIGHT },
|
|
{ 0x6a, KEY_ENTER },
|
|
|
|
{ 0x42, KEY_VOLUMEUP },
|
|
{ 0x62, KEY_VOLUMEDOWN },
|
|
{ 0x52, KEY_CHANNELUP },
|
|
{ 0x72, KEY_CHANNELDOWN },
|
|
|
|
{ 0x41, KEY_RECORD },
|
|
{ 0x51, KEY_CAMERA }, /* Snapshot */
|
|
{ 0x75, KEY_TIME }, /* Timeshift */
|
|
{ 0x71, KEY_TV2 }, /* PIP */
|
|
|
|
{ 0x45, KEY_REWIND },
|
|
{ 0x6f, KEY_PAUSE },
|
|
{ 0x7d, KEY_FORWARD },
|
|
{ 0x79, KEY_STOP },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_encore_enltv2_table = {
|
|
.scan = ir_codes_encore_enltv2,
|
|
.size = ARRAY_SIZE(ir_codes_encore_enltv2),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_encore_enltv2_table);
|
|
|
|
/* for the Technotrend 1500 bundled remotes (grey and black): */
|
|
static struct ir_scancode ir_codes_tt_1500[] = {
|
|
{ 0x01, KEY_POWER },
|
|
{ 0x02, KEY_SHUFFLE }, /* ? double-arrow key */
|
|
{ 0x03, KEY_1 },
|
|
{ 0x04, KEY_2 },
|
|
{ 0x05, KEY_3 },
|
|
{ 0x06, KEY_4 },
|
|
{ 0x07, KEY_5 },
|
|
{ 0x08, KEY_6 },
|
|
{ 0x09, KEY_7 },
|
|
{ 0x0a, KEY_8 },
|
|
{ 0x0b, KEY_9 },
|
|
{ 0x0c, KEY_0 },
|
|
{ 0x0d, KEY_UP },
|
|
{ 0x0e, KEY_LEFT },
|
|
{ 0x0f, KEY_OK },
|
|
{ 0x10, KEY_RIGHT },
|
|
{ 0x11, KEY_DOWN },
|
|
{ 0x12, KEY_INFO },
|
|
{ 0x13, KEY_EXIT },
|
|
{ 0x14, KEY_RED },
|
|
{ 0x15, KEY_GREEN },
|
|
{ 0x16, KEY_YELLOW },
|
|
{ 0x17, KEY_BLUE },
|
|
{ 0x18, KEY_MUTE },
|
|
{ 0x19, KEY_TEXT },
|
|
{ 0x1a, KEY_MODE }, /* ? TV/Radio */
|
|
{ 0x21, KEY_OPTION },
|
|
{ 0x22, KEY_EPG },
|
|
{ 0x23, KEY_CHANNELUP },
|
|
{ 0x24, KEY_CHANNELDOWN },
|
|
{ 0x25, KEY_VOLUMEUP },
|
|
{ 0x26, KEY_VOLUMEDOWN },
|
|
{ 0x27, KEY_SETUP },
|
|
{ 0x3a, KEY_RECORD }, /* these keys are only in the black remote */
|
|
{ 0x3b, KEY_PLAY },
|
|
{ 0x3c, KEY_STOP },
|
|
{ 0x3d, KEY_REWIND },
|
|
{ 0x3e, KEY_PAUSE },
|
|
{ 0x3f, KEY_FORWARD },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_tt_1500_table = {
|
|
.scan = ir_codes_tt_1500,
|
|
.size = ARRAY_SIZE(ir_codes_tt_1500),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_tt_1500_table);
|
|
|
|
/* DViCO FUSION HDTV MCE remote */
|
|
static struct ir_scancode ir_codes_fusionhdtv_mce[] = {
|
|
|
|
{ 0x0b, KEY_1 },
|
|
{ 0x17, KEY_2 },
|
|
{ 0x1b, KEY_3 },
|
|
{ 0x07, KEY_4 },
|
|
{ 0x50, KEY_5 },
|
|
{ 0x54, KEY_6 },
|
|
{ 0x48, KEY_7 },
|
|
{ 0x4c, KEY_8 },
|
|
{ 0x58, KEY_9 },
|
|
{ 0x03, KEY_0 },
|
|
|
|
{ 0x5e, KEY_OK },
|
|
{ 0x51, KEY_UP },
|
|
{ 0x53, KEY_DOWN },
|
|
{ 0x5b, KEY_LEFT },
|
|
{ 0x5f, KEY_RIGHT },
|
|
|
|
{ 0x02, KEY_TV }, /* Labeled DTV on remote */
|
|
{ 0x0e, KEY_MP3 },
|
|
{ 0x1a, KEY_DVD },
|
|
{ 0x1e, KEY_FAVORITES }, /* Labeled CPF on remote */
|
|
{ 0x16, KEY_SETUP },
|
|
{ 0x46, KEY_POWER2 }, /* TV On/Off button on remote */
|
|
{ 0x0a, KEY_EPG }, /* Labeled Guide on remote */
|
|
|
|
{ 0x49, KEY_BACK },
|
|
{ 0x59, KEY_INFO }, /* Labeled MORE on remote */
|
|
{ 0x4d, KEY_MENU }, /* Labeled DVDMENU on remote */
|
|
{ 0x55, KEY_CYCLEWINDOWS }, /* Labeled ALT-TAB on remote */
|
|
|
|
{ 0x0f, KEY_PREVIOUSSONG }, /* Labeled |<< REPLAY on remote */
|
|
{ 0x12, KEY_NEXTSONG }, /* Labeled >>| SKIP on remote */
|
|
{ 0x42, KEY_ENTER }, /* Labeled START with a green
|
|
MS windows logo on remote */
|
|
|
|
{ 0x15, KEY_VOLUMEUP },
|
|
{ 0x05, KEY_VOLUMEDOWN },
|
|
{ 0x11, KEY_CHANNELUP },
|
|
{ 0x09, KEY_CHANNELDOWN },
|
|
|
|
{ 0x52, KEY_CAMERA },
|
|
{ 0x5a, KEY_TUNER },
|
|
{ 0x19, KEY_OPEN },
|
|
|
|
{ 0x13, KEY_MODE }, /* 4:3 16:9 select */
|
|
{ 0x1f, KEY_ZOOM },
|
|
|
|
{ 0x43, KEY_REWIND },
|
|
{ 0x47, KEY_PLAYPAUSE },
|
|
{ 0x4f, KEY_FASTFORWARD },
|
|
{ 0x57, KEY_MUTE },
|
|
{ 0x0d, KEY_STOP },
|
|
{ 0x01, KEY_RECORD },
|
|
{ 0x4e, KEY_POWER },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_fusionhdtv_mce_table = {
|
|
.scan = ir_codes_fusionhdtv_mce,
|
|
.size = ARRAY_SIZE(ir_codes_fusionhdtv_mce),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce_table);
|
|
|
|
/* Pinnacle PCTV HD 800i mini remote */
|
|
static struct ir_scancode ir_codes_pinnacle_pctv_hd[] = {
|
|
|
|
{ 0x0f, KEY_1 },
|
|
{ 0x15, KEY_2 },
|
|
{ 0x10, KEY_3 },
|
|
{ 0x18, KEY_4 },
|
|
{ 0x1b, KEY_5 },
|
|
{ 0x1e, KEY_6 },
|
|
{ 0x11, KEY_7 },
|
|
{ 0x21, KEY_8 },
|
|
{ 0x12, KEY_9 },
|
|
{ 0x27, KEY_0 },
|
|
|
|
{ 0x24, KEY_ZOOM },
|
|
{ 0x2a, KEY_SUBTITLE },
|
|
|
|
{ 0x00, KEY_MUTE },
|
|
{ 0x01, KEY_ENTER }, /* Pinnacle Logo */
|
|
{ 0x39, KEY_POWER },
|
|
|
|
{ 0x03, KEY_VOLUMEUP },
|
|
{ 0x09, KEY_VOLUMEDOWN },
|
|
{ 0x06, KEY_CHANNELUP },
|
|
{ 0x0c, KEY_CHANNELDOWN },
|
|
|
|
{ 0x2d, KEY_REWIND },
|
|
{ 0x30, KEY_PLAYPAUSE },
|
|
{ 0x33, KEY_FASTFORWARD },
|
|
{ 0x3c, KEY_STOP },
|
|
{ 0x36, KEY_RECORD },
|
|
{ 0x3f, KEY_EPG }, /* Labeled "?" */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_pinnacle_pctv_hd_table = {
|
|
.scan = ir_codes_pinnacle_pctv_hd,
|
|
.size = ARRAY_SIZE(ir_codes_pinnacle_pctv_hd),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_pinnacle_pctv_hd_table);
|
|
|
|
/*
|
|
* Igor Kuznetsov <igk72@ya.ru>
|
|
* Andrey J. Melnikov <temnota@kmv.ru>
|
|
*
|
|
* Keytable is used by BeholdTV 60x series, M6 series at
|
|
* least, and probably other cards too.
|
|
* The "ascii-art picture" below (in comments, first row
|
|
* is the keycode in hex, and subsequent row(s) shows
|
|
* the button labels (several variants when appropriate)
|
|
* helps to descide which keycodes to assign to the buttons.
|
|
*/
|
|
static struct ir_scancode ir_codes_behold[] = {
|
|
|
|
/* 0x1c 0x12 *
|
|
* TV/FM POWER *
|
|
* */
|
|
{ 0x1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
|
|
{ 0x12, KEY_POWER },
|
|
|
|
/* 0x01 0x02 0x03 *
|
|
* 1 2 3 *
|
|
* *
|
|
* 0x04 0x05 0x06 *
|
|
* 4 5 6 *
|
|
* *
|
|
* 0x07 0x08 0x09 *
|
|
* 7 8 9 *
|
|
* */
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
|
|
/* 0x0a 0x00 0x17 *
|
|
* RECALL 0 MODE *
|
|
* */
|
|
{ 0x0a, KEY_AGAIN },
|
|
{ 0x00, KEY_0 },
|
|
{ 0x17, KEY_MODE },
|
|
|
|
/* 0x14 0x10 *
|
|
* ASPECT FULLSCREEN *
|
|
* */
|
|
{ 0x14, KEY_SCREEN },
|
|
{ 0x10, KEY_ZOOM },
|
|
|
|
/* 0x0b *
|
|
* Up *
|
|
* *
|
|
* 0x18 0x16 0x0c *
|
|
* Left Ok Right *
|
|
* *
|
|
* 0x015 *
|
|
* Down *
|
|
* */
|
|
{ 0x0b, KEY_CHANNELUP },
|
|
{ 0x18, KEY_VOLUMEDOWN },
|
|
{ 0x16, KEY_OK }, /* XXX KEY_ENTER */
|
|
{ 0x0c, KEY_VOLUMEUP },
|
|
{ 0x15, KEY_CHANNELDOWN },
|
|
|
|
/* 0x11 0x0d *
|
|
* MUTE INFO *
|
|
* */
|
|
{ 0x11, KEY_MUTE },
|
|
{ 0x0d, KEY_INFO },
|
|
|
|
/* 0x0f 0x1b 0x1a *
|
|
* RECORD PLAY/PAUSE STOP *
|
|
* *
|
|
* 0x0e 0x1f 0x1e *
|
|
*TELETEXT AUDIO SOURCE *
|
|
* RED YELLOW *
|
|
* */
|
|
{ 0x0f, KEY_RECORD },
|
|
{ 0x1b, KEY_PLAYPAUSE },
|
|
{ 0x1a, KEY_STOP },
|
|
{ 0x0e, KEY_TEXT },
|
|
{ 0x1f, KEY_RED }, /*XXX KEY_AUDIO */
|
|
{ 0x1e, KEY_YELLOW }, /*XXX KEY_SOURCE */
|
|
|
|
/* 0x1d 0x13 0x19 *
|
|
* SLEEP PREVIEW DVB *
|
|
* GREEN BLUE *
|
|
* */
|
|
{ 0x1d, KEY_SLEEP },
|
|
{ 0x13, KEY_GREEN },
|
|
{ 0x19, KEY_BLUE }, /* XXX KEY_SAT */
|
|
|
|
/* 0x58 0x5c *
|
|
* FREEZE SNAPSHOT *
|
|
* */
|
|
{ 0x58, KEY_SLOW },
|
|
{ 0x5c, KEY_CAMERA },
|
|
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_behold_table = {
|
|
.scan = ir_codes_behold,
|
|
.size = ARRAY_SIZE(ir_codes_behold),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_behold_table);
|
|
|
|
/* Beholder Intl. Ltd. 2008
|
|
* Dmitry Belimov d.belimov@google.com
|
|
* Keytable is used by BeholdTV Columbus
|
|
* The "ascii-art picture" below (in comments, first row
|
|
* is the keycode in hex, and subsequent row(s) shows
|
|
* the button labels (several variants when appropriate)
|
|
* helps to descide which keycodes to assign to the buttons.
|
|
*/
|
|
static struct ir_scancode ir_codes_behold_columbus[] = {
|
|
|
|
/* 0x13 0x11 0x1C 0x12 *
|
|
* Mute Source TV/FM Power *
|
|
* */
|
|
|
|
{ 0x13, KEY_MUTE },
|
|
{ 0x11, KEY_PROPS },
|
|
{ 0x1C, KEY_TUNER }, /* KEY_TV/KEY_RADIO */
|
|
{ 0x12, KEY_POWER },
|
|
|
|
/* 0x01 0x02 0x03 0x0D *
|
|
* 1 2 3 Stereo *
|
|
* *
|
|
* 0x04 0x05 0x06 0x19 *
|
|
* 4 5 6 Snapshot *
|
|
* *
|
|
* 0x07 0x08 0x09 0x10 *
|
|
* 7 8 9 Zoom *
|
|
* */
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x0D, KEY_SETUP }, /* Setup key */
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x19, KEY_CAMERA }, /* Snapshot key */
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
{ 0x10, KEY_ZOOM },
|
|
|
|
/* 0x0A 0x00 0x0B 0x0C *
|
|
* RECALL 0 ChannelUp VolumeUp *
|
|
* */
|
|
{ 0x0A, KEY_AGAIN },
|
|
{ 0x00, KEY_0 },
|
|
{ 0x0B, KEY_CHANNELUP },
|
|
{ 0x0C, KEY_VOLUMEUP },
|
|
|
|
/* 0x1B 0x1D 0x15 0x18 *
|
|
* Timeshift Record ChannelDown VolumeDown *
|
|
* */
|
|
|
|
{ 0x1B, KEY_TIME },
|
|
{ 0x1D, KEY_RECORD },
|
|
{ 0x15, KEY_CHANNELDOWN },
|
|
{ 0x18, KEY_VOLUMEDOWN },
|
|
|
|
/* 0x0E 0x1E 0x0F 0x1A *
|
|
* Stop Pause Previouse Next *
|
|
* */
|
|
|
|
{ 0x0E, KEY_STOP },
|
|
{ 0x1E, KEY_PAUSE },
|
|
{ 0x0F, KEY_PREVIOUS },
|
|
{ 0x1A, KEY_NEXT },
|
|
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_behold_columbus_table = {
|
|
.scan = ir_codes_behold_columbus,
|
|
.size = ARRAY_SIZE(ir_codes_behold_columbus),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_behold_columbus_table);
|
|
|
|
/*
|
|
* Remote control for the Genius TVGO A11MCE
|
|
* Adrian Pardini <pardo.bsso@gmail.com>
|
|
*/
|
|
static struct ir_scancode ir_codes_genius_tvgo_a11mce[] = {
|
|
/* Keys 0 to 9 */
|
|
{ 0x48, KEY_0 },
|
|
{ 0x09, KEY_1 },
|
|
{ 0x1d, KEY_2 },
|
|
{ 0x1f, KEY_3 },
|
|
{ 0x19, KEY_4 },
|
|
{ 0x1b, KEY_5 },
|
|
{ 0x11, KEY_6 },
|
|
{ 0x17, KEY_7 },
|
|
{ 0x12, KEY_8 },
|
|
{ 0x16, KEY_9 },
|
|
|
|
{ 0x54, KEY_RECORD }, /* recording */
|
|
{ 0x06, KEY_MUTE }, /* mute */
|
|
{ 0x10, KEY_POWER },
|
|
{ 0x40, KEY_LAST }, /* recall */
|
|
{ 0x4c, KEY_CHANNELUP }, /* channel / program + */
|
|
{ 0x00, KEY_CHANNELDOWN }, /* channel / program - */
|
|
{ 0x0d, KEY_VOLUMEUP },
|
|
{ 0x15, KEY_VOLUMEDOWN },
|
|
{ 0x4d, KEY_OK }, /* also labeled as Pause */
|
|
{ 0x1c, KEY_ZOOM }, /* full screen and Stop*/
|
|
{ 0x02, KEY_MODE }, /* AV Source or Rewind*/
|
|
{ 0x04, KEY_LIST }, /* -/-- */
|
|
/* small arrows above numbers */
|
|
{ 0x1a, KEY_NEXT }, /* also Fast Forward */
|
|
{ 0x0e, KEY_PREVIOUS }, /* also Rewind */
|
|
/* these are in a rather non standard layout and have
|
|
an alternate name written */
|
|
{ 0x1e, KEY_UP }, /* Video Setting */
|
|
{ 0x0a, KEY_DOWN }, /* Video Default */
|
|
{ 0x05, KEY_CAMERA }, /* Snapshot */
|
|
{ 0x0c, KEY_RIGHT }, /* Hide Panel */
|
|
/* Four buttons without label */
|
|
{ 0x49, KEY_RED },
|
|
{ 0x0b, KEY_GREEN },
|
|
{ 0x13, KEY_YELLOW },
|
|
{ 0x50, KEY_BLUE },
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_genius_tvgo_a11mce_table = {
|
|
.scan = ir_codes_genius_tvgo_a11mce,
|
|
.size = ARRAY_SIZE(ir_codes_genius_tvgo_a11mce),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_genius_tvgo_a11mce_table);
|
|
|
|
/*
|
|
* Remote control for Powercolor Real Angel 330
|
|
* Daniel Fraga <fragabr@gmail.com>
|
|
*/
|
|
static struct ir_scancode ir_codes_powercolor_real_angel[] = {
|
|
{ 0x38, KEY_SWITCHVIDEOMODE }, /* switch inputs */
|
|
{ 0x0c, KEY_MEDIA }, /* Turn ON/OFF App */
|
|
{ 0x00, KEY_0 },
|
|
{ 0x01, KEY_1 },
|
|
{ 0x02, KEY_2 },
|
|
{ 0x03, KEY_3 },
|
|
{ 0x04, KEY_4 },
|
|
{ 0x05, KEY_5 },
|
|
{ 0x06, KEY_6 },
|
|
{ 0x07, KEY_7 },
|
|
{ 0x08, KEY_8 },
|
|
{ 0x09, KEY_9 },
|
|
{ 0x0a, KEY_DIGITS }, /* single, double, tripple digit */
|
|
{ 0x29, KEY_PREVIOUS }, /* previous channel */
|
|
{ 0x12, KEY_BRIGHTNESSUP },
|
|
{ 0x13, KEY_BRIGHTNESSDOWN },
|
|
{ 0x2b, KEY_MODE }, /* stereo/mono */
|
|
{ 0x2c, KEY_TEXT }, /* teletext */
|
|
{ 0x20, KEY_CHANNELUP }, /* channel up */
|
|
{ 0x21, KEY_CHANNELDOWN }, /* channel down */
|
|
{ 0x10, KEY_VOLUMEUP }, /* volume up */
|
|
{ 0x11, KEY_VOLUMEDOWN }, /* volume down */
|
|
{ 0x0d, KEY_MUTE },
|
|
{ 0x1f, KEY_RECORD },
|
|
{ 0x17, KEY_PLAY },
|
|
{ 0x16, KEY_PAUSE },
|
|
{ 0x0b, KEY_STOP },
|
|
{ 0x27, KEY_FASTFORWARD },
|
|
{ 0x26, KEY_REWIND },
|
|
{ 0x1e, KEY_SEARCH }, /* autoscan */
|
|
{ 0x0e, KEY_CAMERA }, /* snapshot */
|
|
{ 0x2d, KEY_SETUP },
|
|
{ 0x0f, KEY_SCREEN }, /* full screen */
|
|
{ 0x14, KEY_RADIO }, /* FM radio */
|
|
{ 0x25, KEY_POWER }, /* power */
|
|
};
|
|
|
|
struct ir_scancode_table ir_codes_powercolor_real_angel_table = {
|
|
.scan = ir_codes_powercolor_real_angel,
|
|
.size = ARRAY_SIZE(ir_codes_powercolor_real_angel),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_powercolor_real_angel_table);
|
|
|
|
/* Kworld Plus TV Analog Lite PCI IR
|
|
Mauro Carvalho Chehab <mchehab@infradead.org>
|
|
*/
|
|
static struct ir_scancode ir_codes_kworld_plus_tv_analog[] = {
|
|
{ 0x0c, KEY_PROG1 }, /* Kworld key */
|
|
{ 0x16, KEY_CLOSECD }, /* -> ) */
|
|
{ 0x1d, KEY_POWER2 },
|
|
|
|
{ 0x00, KEY_1 },
|
|
{ 0x01, KEY_2 },
|
|
{ 0x02, KEY_3 }, /* Two keys have the same code: 3 and left */
|
|
{ 0x03, KEY_4 }, /* Two keys have the same code: 3 and right */
|
|
{ 0x04, KEY_5 },
|
|
{ 0x05, KEY_6 },
|
|
{ 0x06, KEY_7 },
|
|
{ 0x07, KEY_8 },
|
|
{ 0x08, KEY_9 },
|
|
{ 0x0a, KEY_0 },
|
|
|
|
{ 0x09, KEY_AGAIN },
|
|
{ 0x14, KEY_MUTE },
|
|
|
|
{ 0x20, KEY_UP },
|
|
{ 0x21, KEY_DOWN },
|
|
{ 0x0b, KEY_ENTER },
|
|
|
|
{ 0x10, KEY_CHANNELUP },
|
|
{ 0x11, KEY_CHANNELDOWN },
|
|
|
|
/* Couldn't map key left/key right since those
|
|
conflict with '3' and '4' scancodes
|
|
I dunno what the original driver does
|
|
*/
|
|
|
|
{ 0x13, KEY_VOLUMEUP },
|
|
{ 0x12, KEY_VOLUMEDOWN },
|
|
|
|
/* The lower part of the IR
|
|
There are several duplicated keycodes there.
|
|
Most of them conflict with digits.
|
|
Add mappings just to the unused scancodes.
|
|
Somehow, the original driver has a way to know,
|
|
but this doesn't seem to be on some GPIO.
|
|
Also, it is not related to the time between keyup
|
|
and keydown.
|
|
*/
|
|
{ 0x19, KEY_TIME}, /* Timeshift */
|
|
{ 0x1a, KEY_STOP},
|
|
{ 0x1b, KEY_RECORD},
|
|
|
|
{ 0x22, KEY_TEXT},
|
|
|
|
{ 0x15, KEY_AUDIO}, /* ((*)) */
|
|
{ 0x0f, KEY_ZOOM},
|
|
{ 0x1c, KEY_CAMERA}, /* snapshot */
|
|
|
|
{ 0x18, KEY_RED}, /* B */
|
|
{ 0x23, KEY_GREEN}, /* C */
|
|
};
|
|
struct ir_scancode_table ir_codes_kworld_plus_tv_analog_table = {
|
|
.scan = ir_codes_kworld_plus_tv_analog,
|
|
.size = ARRAY_SIZE(ir_codes_kworld_plus_tv_analog),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_kworld_plus_tv_analog_table);
|
|
|
|
/* Kaiomy TVnPC U2
|
|
Mauro Carvalho Chehab <mchehab@infradead.org>
|
|
*/
|
|
static struct ir_scancode ir_codes_kaiomy[] = {
|
|
{ 0x43, KEY_POWER2},
|
|
{ 0x01, KEY_LIST},
|
|
{ 0x0b, KEY_ZOOM},
|
|
{ 0x03, KEY_POWER},
|
|
|
|
{ 0x04, KEY_1},
|
|
{ 0x08, KEY_2},
|
|
{ 0x02, KEY_3},
|
|
|
|
{ 0x0f, KEY_4},
|
|
{ 0x05, KEY_5},
|
|
{ 0x06, KEY_6},
|
|
|
|
{ 0x0c, KEY_7},
|
|
{ 0x0d, KEY_8},
|
|
{ 0x0a, KEY_9},
|
|
|
|
{ 0x11, KEY_0},
|
|
|
|
{ 0x09, KEY_CHANNELUP},
|
|
{ 0x07, KEY_CHANNELDOWN},
|
|
|
|
{ 0x0e, KEY_VOLUMEUP},
|
|
{ 0x13, KEY_VOLUMEDOWN},
|
|
|
|
{ 0x10, KEY_HOME},
|
|
{ 0x12, KEY_ENTER},
|
|
|
|
{ 0x14, KEY_RECORD},
|
|
{ 0x15, KEY_STOP},
|
|
{ 0x16, KEY_PLAY},
|
|
{ 0x17, KEY_MUTE},
|
|
|
|
{ 0x18, KEY_UP},
|
|
{ 0x19, KEY_DOWN},
|
|
{ 0x1a, KEY_LEFT},
|
|
{ 0x1b, KEY_RIGHT},
|
|
|
|
{ 0x1c, KEY_RED},
|
|
{ 0x1d, KEY_GREEN},
|
|
{ 0x1e, KEY_YELLOW},
|
|
{ 0x1f, KEY_BLUE},
|
|
};
|
|
struct ir_scancode_table ir_codes_kaiomy_table = {
|
|
.scan = ir_codes_kaiomy,
|
|
.size = ARRAY_SIZE(ir_codes_kaiomy),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_kaiomy_table);
|
|
|
|
static struct ir_scancode ir_codes_avermedia_a16d[] = {
|
|
{ 0x20, KEY_LIST},
|
|
{ 0x00, KEY_POWER},
|
|
{ 0x28, KEY_1},
|
|
{ 0x18, KEY_2},
|
|
{ 0x38, KEY_3},
|
|
{ 0x24, KEY_4},
|
|
{ 0x14, KEY_5},
|
|
{ 0x34, KEY_6},
|
|
{ 0x2c, KEY_7},
|
|
{ 0x1c, KEY_8},
|
|
{ 0x3c, KEY_9},
|
|
{ 0x12, KEY_SUBTITLE},
|
|
{ 0x22, KEY_0},
|
|
{ 0x32, KEY_REWIND},
|
|
{ 0x3a, KEY_SHUFFLE},
|
|
{ 0x02, KEY_PRINT},
|
|
{ 0x11, KEY_CHANNELDOWN},
|
|
{ 0x31, KEY_CHANNELUP},
|
|
{ 0x0c, KEY_ZOOM},
|
|
{ 0x1e, KEY_VOLUMEDOWN},
|
|
{ 0x3e, KEY_VOLUMEUP},
|
|
{ 0x0a, KEY_MUTE},
|
|
{ 0x04, KEY_AUDIO},
|
|
{ 0x26, KEY_RECORD},
|
|
{ 0x06, KEY_PLAY},
|
|
{ 0x36, KEY_STOP},
|
|
{ 0x16, KEY_PAUSE},
|
|
{ 0x2e, KEY_REWIND},
|
|
{ 0x0e, KEY_FASTFORWARD},
|
|
{ 0x30, KEY_TEXT},
|
|
{ 0x21, KEY_GREEN},
|
|
{ 0x01, KEY_BLUE},
|
|
{ 0x08, KEY_EPG},
|
|
{ 0x2a, KEY_MENU},
|
|
};
|
|
struct ir_scancode_table ir_codes_avermedia_a16d_table = {
|
|
.scan = ir_codes_avermedia_a16d,
|
|
.size = ARRAY_SIZE(ir_codes_avermedia_a16d),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_avermedia_a16d_table);
|
|
|
|
/* Encore ENLTV-FM v5.3
|
|
Mauro Carvalho Chehab <mchehab@infradead.org>
|
|
*/
|
|
static struct ir_scancode ir_codes_encore_enltv_fm53[] = {
|
|
{ 0x10, KEY_POWER2},
|
|
{ 0x06, KEY_MUTE},
|
|
|
|
{ 0x09, KEY_1},
|
|
{ 0x1d, KEY_2},
|
|
{ 0x1f, KEY_3},
|
|
{ 0x19, KEY_4},
|
|
{ 0x1b, KEY_5},
|
|
{ 0x11, KEY_6},
|
|
{ 0x17, KEY_7},
|
|
{ 0x12, KEY_8},
|
|
{ 0x16, KEY_9},
|
|
{ 0x48, KEY_0},
|
|
|
|
{ 0x04, KEY_LIST}, /* -/-- */
|
|
{ 0x40, KEY_LAST}, /* recall */
|
|
|
|
{ 0x02, KEY_MODE}, /* TV/AV */
|
|
{ 0x05, KEY_CAMERA}, /* SNAPSHOT */
|
|
|
|
{ 0x4c, KEY_CHANNELUP}, /* UP */
|
|
{ 0x00, KEY_CHANNELDOWN}, /* DOWN */
|
|
{ 0x0d, KEY_VOLUMEUP}, /* RIGHT */
|
|
{ 0x15, KEY_VOLUMEDOWN}, /* LEFT */
|
|
{ 0x49, KEY_ENTER}, /* OK */
|
|
|
|
{ 0x54, KEY_RECORD},
|
|
{ 0x4d, KEY_PLAY}, /* pause */
|
|
|
|
{ 0x1e, KEY_MENU}, /* video setting */
|
|
{ 0x0e, KEY_RIGHT}, /* <- */
|
|
{ 0x1a, KEY_LEFT}, /* -> */
|
|
|
|
{ 0x0a, KEY_CLEAR}, /* video default */
|
|
{ 0x0c, KEY_ZOOM}, /* hide pannel */
|
|
{ 0x47, KEY_SLEEP}, /* shutdown */
|
|
};
|
|
struct ir_scancode_table ir_codes_encore_enltv_fm53_table = {
|
|
.scan = ir_codes_encore_enltv_fm53,
|
|
.size = ARRAY_SIZE(ir_codes_encore_enltv_fm53),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_encore_enltv_fm53_table);
|
|
|
|
/* Zogis Real Audio 220 - 32 keys IR */
|
|
static struct ir_scancode ir_codes_real_audio_220_32_keys[] = {
|
|
{ 0x1c, KEY_RADIO},
|
|
{ 0x12, KEY_POWER2},
|
|
|
|
{ 0x01, KEY_1},
|
|
{ 0x02, KEY_2},
|
|
{ 0x03, KEY_3},
|
|
{ 0x04, KEY_4},
|
|
{ 0x05, KEY_5},
|
|
{ 0x06, KEY_6},
|
|
{ 0x07, KEY_7},
|
|
{ 0x08, KEY_8},
|
|
{ 0x09, KEY_9},
|
|
{ 0x00, KEY_0},
|
|
|
|
{ 0x0c, KEY_VOLUMEUP},
|
|
{ 0x18, KEY_VOLUMEDOWN},
|
|
{ 0x0b, KEY_CHANNELUP},
|
|
{ 0x15, KEY_CHANNELDOWN},
|
|
{ 0x16, KEY_ENTER},
|
|
|
|
{ 0x11, KEY_LIST}, /* Source */
|
|
{ 0x0d, KEY_AUDIO}, /* stereo */
|
|
|
|
{ 0x0f, KEY_PREVIOUS}, /* Prev */
|
|
{ 0x1b, KEY_TIME}, /* Timeshift */
|
|
{ 0x1a, KEY_NEXT}, /* Next */
|
|
|
|
{ 0x0e, KEY_STOP},
|
|
{ 0x1f, KEY_PLAY},
|
|
{ 0x1e, KEY_PLAYPAUSE}, /* Pause */
|
|
|
|
{ 0x1d, KEY_RECORD},
|
|
{ 0x13, KEY_MUTE},
|
|
{ 0x19, KEY_CAMERA}, /* Snapshot */
|
|
|
|
};
|
|
struct ir_scancode_table ir_codes_real_audio_220_32_keys_table = {
|
|
.scan = ir_codes_real_audio_220_32_keys,
|
|
.size = ARRAY_SIZE(ir_codes_real_audio_220_32_keys),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_real_audio_220_32_keys_table);
|
|
|
|
/* ATI TV Wonder HD 600 USB
|
|
Devin Heitmueller <devin.heitmueller@gmail.com>
|
|
*/
|
|
static struct ir_scancode ir_codes_ati_tv_wonder_hd_600[] = {
|
|
{ 0x00, KEY_RECORD}, /* Row 1 */
|
|
{ 0x01, KEY_PLAYPAUSE},
|
|
{ 0x02, KEY_STOP},
|
|
{ 0x03, KEY_POWER},
|
|
{ 0x04, KEY_PREVIOUS}, /* Row 2 */
|
|
{ 0x05, KEY_REWIND},
|
|
{ 0x06, KEY_FORWARD},
|
|
{ 0x07, KEY_NEXT},
|
|
{ 0x08, KEY_EPG}, /* Row 3 */
|
|
{ 0x09, KEY_HOME},
|
|
{ 0x0a, KEY_MENU},
|
|
{ 0x0b, KEY_CHANNELUP},
|
|
{ 0x0c, KEY_BACK}, /* Row 4 */
|
|
{ 0x0d, KEY_UP},
|
|
{ 0x0e, KEY_INFO},
|
|
{ 0x0f, KEY_CHANNELDOWN},
|
|
{ 0x10, KEY_LEFT}, /* Row 5 */
|
|
{ 0x11, KEY_SELECT},
|
|
{ 0x12, KEY_RIGHT},
|
|
{ 0x13, KEY_VOLUMEUP},
|
|
{ 0x14, KEY_LAST}, /* Row 6 */
|
|
{ 0x15, KEY_DOWN},
|
|
{ 0x16, KEY_MUTE},
|
|
{ 0x17, KEY_VOLUMEDOWN},
|
|
};
|
|
struct ir_scancode_table ir_codes_ati_tv_wonder_hd_600_table = {
|
|
.scan = ir_codes_ati_tv_wonder_hd_600,
|
|
.size = ARRAY_SIZE(ir_codes_ati_tv_wonder_hd_600),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_ati_tv_wonder_hd_600_table);
|
|
|
|
/* DVBWorld remotes
|
|
Igor M. Liplianin <liplianin@me.by>
|
|
*/
|
|
static struct ir_scancode ir_codes_dm1105_nec[] = {
|
|
{ 0x0a, KEY_POWER2}, /* power */
|
|
{ 0x0c, KEY_MUTE}, /* mute */
|
|
{ 0x11, KEY_1},
|
|
{ 0x12, KEY_2},
|
|
{ 0x13, KEY_3},
|
|
{ 0x14, KEY_4},
|
|
{ 0x15, KEY_5},
|
|
{ 0x16, KEY_6},
|
|
{ 0x17, KEY_7},
|
|
{ 0x18, KEY_8},
|
|
{ 0x19, KEY_9},
|
|
{ 0x10, KEY_0},
|
|
{ 0x1c, KEY_CHANNELUP}, /* ch+ */
|
|
{ 0x0f, KEY_CHANNELDOWN}, /* ch- */
|
|
{ 0x1a, KEY_VOLUMEUP}, /* vol+ */
|
|
{ 0x0e, KEY_VOLUMEDOWN}, /* vol- */
|
|
{ 0x04, KEY_RECORD}, /* rec */
|
|
{ 0x09, KEY_CHANNEL}, /* fav */
|
|
{ 0x08, KEY_BACKSPACE}, /* rewind */
|
|
{ 0x07, KEY_FASTFORWARD}, /* fast */
|
|
{ 0x0b, KEY_PAUSE}, /* pause */
|
|
{ 0x02, KEY_ESC}, /* cancel */
|
|
{ 0x03, KEY_TAB}, /* tab */
|
|
{ 0x00, KEY_UP}, /* up */
|
|
{ 0x1f, KEY_ENTER}, /* ok */
|
|
{ 0x01, KEY_DOWN}, /* down */
|
|
{ 0x05, KEY_RECORD}, /* cap */
|
|
{ 0x06, KEY_STOP}, /* stop */
|
|
{ 0x40, KEY_ZOOM}, /* full */
|
|
{ 0x1e, KEY_TV}, /* tvmode */
|
|
{ 0x1b, KEY_B}, /* recall */
|
|
};
|
|
struct ir_scancode_table ir_codes_dm1105_nec_table = {
|
|
.scan = ir_codes_dm1105_nec,
|
|
.size = ARRAY_SIZE(ir_codes_dm1105_nec),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_dm1105_nec_table);
|
|
|
|
static struct ir_scancode ir_codes_tevii_nec[] = {
|
|
{ 0x0a, KEY_POWER2},
|
|
{ 0x0c, KEY_MUTE},
|
|
{ 0x11, KEY_1},
|
|
{ 0x12, KEY_2},
|
|
{ 0x13, KEY_3},
|
|
{ 0x14, KEY_4},
|
|
{ 0x15, KEY_5},
|
|
{ 0x16, KEY_6},
|
|
{ 0x17, KEY_7},
|
|
{ 0x18, KEY_8},
|
|
{ 0x19, KEY_9},
|
|
{ 0x10, KEY_0},
|
|
{ 0x1c, KEY_MENU},
|
|
{ 0x0f, KEY_VOLUMEDOWN},
|
|
{ 0x1a, KEY_LAST},
|
|
{ 0x0e, KEY_OPEN},
|
|
{ 0x04, KEY_RECORD},
|
|
{ 0x09, KEY_VOLUMEUP},
|
|
{ 0x08, KEY_CHANNELUP},
|
|
{ 0x07, KEY_PVR},
|
|
{ 0x0b, KEY_TIME},
|
|
{ 0x02, KEY_RIGHT},
|
|
{ 0x03, KEY_LEFT},
|
|
{ 0x00, KEY_UP},
|
|
{ 0x1f, KEY_OK},
|
|
{ 0x01, KEY_DOWN},
|
|
{ 0x05, KEY_TUNER},
|
|
{ 0x06, KEY_CHANNELDOWN},
|
|
{ 0x40, KEY_PLAYPAUSE},
|
|
{ 0x1e, KEY_REWIND},
|
|
{ 0x1b, KEY_FAVORITES},
|
|
{ 0x1d, KEY_BACK},
|
|
{ 0x4d, KEY_FASTFORWARD},
|
|
{ 0x44, KEY_EPG},
|
|
{ 0x4c, KEY_INFO},
|
|
{ 0x41, KEY_AB},
|
|
{ 0x43, KEY_AUDIO},
|
|
{ 0x45, KEY_SUBTITLE},
|
|
{ 0x4a, KEY_LIST},
|
|
{ 0x46, KEY_F1},
|
|
{ 0x47, KEY_F2},
|
|
{ 0x5e, KEY_F3},
|
|
{ 0x5c, KEY_F4},
|
|
{ 0x52, KEY_F5},
|
|
{ 0x5a, KEY_F6},
|
|
{ 0x56, KEY_MODE},
|
|
{ 0x58, KEY_SWITCHVIDEOMODE},
|
|
};
|
|
struct ir_scancode_table ir_codes_tevii_nec_table = {
|
|
.scan = ir_codes_tevii_nec,
|
|
.size = ARRAY_SIZE(ir_codes_tevii_nec),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_tevii_nec_table);
|
|
|
|
static struct ir_scancode ir_codes_tbs_nec[] = {
|
|
{ 0x04, KEY_POWER2}, /*power*/
|
|
{ 0x14, KEY_MUTE}, /*mute*/
|
|
{ 0x07, KEY_1},
|
|
{ 0x06, KEY_2},
|
|
{ 0x05, KEY_3},
|
|
{ 0x0b, KEY_4},
|
|
{ 0x0a, KEY_5},
|
|
{ 0x09, KEY_6},
|
|
{ 0x0f, KEY_7},
|
|
{ 0x0e, KEY_8},
|
|
{ 0x0d, KEY_9},
|
|
{ 0x12, KEY_0},
|
|
{ 0x16, KEY_CHANNELUP}, /*ch+*/
|
|
{ 0x11, KEY_CHANNELDOWN},/*ch-*/
|
|
{ 0x13, KEY_VOLUMEUP}, /*vol+*/
|
|
{ 0x0c, KEY_VOLUMEDOWN},/*vol-*/
|
|
{ 0x03, KEY_RECORD}, /*rec*/
|
|
{ 0x18, KEY_PAUSE}, /*pause*/
|
|
{ 0x19, KEY_OK}, /*ok*/
|
|
{ 0x1a, KEY_CAMERA}, /* snapshot */
|
|
{ 0x01, KEY_UP},
|
|
{ 0x10, KEY_LEFT},
|
|
{ 0x02, KEY_RIGHT},
|
|
{ 0x08, KEY_DOWN},
|
|
{ 0x15, KEY_FAVORITES},
|
|
{ 0x17, KEY_SUBTITLE},
|
|
{ 0x1d, KEY_ZOOM},
|
|
{ 0x1f, KEY_EXIT},
|
|
{ 0x1e, KEY_MENU},
|
|
{ 0x1c, KEY_EPG},
|
|
{ 0x00, KEY_PREVIOUS},
|
|
{ 0x1b, KEY_MODE},
|
|
};
|
|
struct ir_scancode_table ir_codes_tbs_nec_table = {
|
|
.scan = ir_codes_tbs_nec,
|
|
.size = ARRAY_SIZE(ir_codes_tbs_nec),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_tbs_nec_table);
|
|
|
|
/* Terratec Cinergy Hybrid T USB XS
|
|
Devin Heitmueller <dheitmueller@linuxtv.org>
|
|
*/
|
|
static struct ir_scancode ir_codes_terratec_cinergy_xs[] = {
|
|
{ 0x41, KEY_HOME},
|
|
{ 0x01, KEY_POWER},
|
|
{ 0x42, KEY_MENU},
|
|
{ 0x02, KEY_1},
|
|
{ 0x03, KEY_2},
|
|
{ 0x04, KEY_3},
|
|
{ 0x43, KEY_SUBTITLE},
|
|
{ 0x05, KEY_4},
|
|
{ 0x06, KEY_5},
|
|
{ 0x07, KEY_6},
|
|
{ 0x44, KEY_TEXT},
|
|
{ 0x08, KEY_7},
|
|
{ 0x09, KEY_8},
|
|
{ 0x0a, KEY_9},
|
|
{ 0x45, KEY_DELETE},
|
|
{ 0x0b, KEY_TUNER},
|
|
{ 0x0c, KEY_0},
|
|
{ 0x0d, KEY_MODE},
|
|
{ 0x46, KEY_TV},
|
|
{ 0x47, KEY_DVD},
|
|
{ 0x49, KEY_VIDEO},
|
|
{ 0x4b, KEY_AUX},
|
|
{ 0x10, KEY_UP},
|
|
{ 0x11, KEY_LEFT},
|
|
{ 0x12, KEY_OK},
|
|
{ 0x13, KEY_RIGHT},
|
|
{ 0x14, KEY_DOWN},
|
|
{ 0x0f, KEY_EPG},
|
|
{ 0x16, KEY_INFO},
|
|
{ 0x4d, KEY_BACKSPACE},
|
|
{ 0x1c, KEY_VOLUMEUP},
|
|
{ 0x4c, KEY_PLAY},
|
|
{ 0x1b, KEY_CHANNELUP},
|
|
{ 0x1e, KEY_VOLUMEDOWN},
|
|
{ 0x1d, KEY_MUTE},
|
|
{ 0x1f, KEY_CHANNELDOWN},
|
|
{ 0x17, KEY_RED},
|
|
{ 0x18, KEY_GREEN},
|
|
{ 0x19, KEY_YELLOW},
|
|
{ 0x1a, KEY_BLUE},
|
|
{ 0x58, KEY_RECORD},
|
|
{ 0x48, KEY_STOP},
|
|
{ 0x40, KEY_PAUSE},
|
|
{ 0x54, KEY_LAST},
|
|
{ 0x4e, KEY_REWIND},
|
|
{ 0x4f, KEY_FASTFORWARD},
|
|
{ 0x5c, KEY_NEXT},
|
|
};
|
|
struct ir_scancode_table ir_codes_terratec_cinergy_xs_table = {
|
|
.scan = ir_codes_terratec_cinergy_xs,
|
|
.size = ARRAY_SIZE(ir_codes_terratec_cinergy_xs),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_terratec_cinergy_xs_table);
|
|
|
|
/* EVGA inDtube
|
|
Devin Heitmueller <devin.heitmueller@gmail.com>
|
|
*/
|
|
static struct ir_scancode ir_codes_evga_indtube[] = {
|
|
{ 0x12, KEY_POWER},
|
|
{ 0x02, KEY_MODE}, /* TV */
|
|
{ 0x14, KEY_MUTE},
|
|
{ 0x1a, KEY_CHANNELUP},
|
|
{ 0x16, KEY_TV2}, /* PIP */
|
|
{ 0x1d, KEY_VOLUMEUP},
|
|
{ 0x05, KEY_CHANNELDOWN},
|
|
{ 0x0f, KEY_PLAYPAUSE},
|
|
{ 0x19, KEY_VOLUMEDOWN},
|
|
{ 0x1c, KEY_REWIND},
|
|
{ 0x0d, KEY_RECORD},
|
|
{ 0x18, KEY_FORWARD},
|
|
{ 0x1e, KEY_PREVIOUS},
|
|
{ 0x1b, KEY_STOP},
|
|
{ 0x1f, KEY_NEXT},
|
|
{ 0x13, KEY_CAMERA},
|
|
};
|
|
struct ir_scancode_table ir_codes_evga_indtube_table = {
|
|
.scan = ir_codes_evga_indtube,
|
|
.size = ARRAY_SIZE(ir_codes_evga_indtube),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_evga_indtube_table);
|
|
|
|
static struct ir_scancode ir_codes_videomate_s350[] = {
|
|
{ 0x00, KEY_TV},
|
|
{ 0x01, KEY_DVD},
|
|
{ 0x04, KEY_RECORD},
|
|
{ 0x05, KEY_VIDEO}, /* TV/Video */
|
|
{ 0x07, KEY_STOP},
|
|
{ 0x08, KEY_PLAYPAUSE},
|
|
{ 0x0a, KEY_REWIND},
|
|
{ 0x0f, KEY_FASTFORWARD},
|
|
{ 0x10, KEY_CHANNELUP},
|
|
{ 0x12, KEY_VOLUMEUP},
|
|
{ 0x13, KEY_CHANNELDOWN},
|
|
{ 0x14, KEY_MUTE},
|
|
{ 0x15, KEY_VOLUMEDOWN},
|
|
{ 0x16, KEY_1},
|
|
{ 0x17, KEY_2},
|
|
{ 0x18, KEY_3},
|
|
{ 0x19, KEY_4},
|
|
{ 0x1a, KEY_5},
|
|
{ 0x1b, KEY_6},
|
|
{ 0x1c, KEY_7},
|
|
{ 0x1d, KEY_8},
|
|
{ 0x1e, KEY_9},
|
|
{ 0x1f, KEY_0},
|
|
{ 0x21, KEY_SLEEP},
|
|
{ 0x24, KEY_ZOOM},
|
|
{ 0x25, KEY_LAST}, /* Recall */
|
|
{ 0x26, KEY_SUBTITLE}, /* CC */
|
|
{ 0x27, KEY_LANGUAGE}, /* MTS */
|
|
{ 0x29, KEY_CHANNEL}, /* SURF */
|
|
{ 0x2b, KEY_A},
|
|
{ 0x2c, KEY_B},
|
|
{ 0x2f, KEY_CAMERA}, /* Snapshot */
|
|
{ 0x23, KEY_RADIO},
|
|
{ 0x02, KEY_PREVIOUSSONG},
|
|
{ 0x06, KEY_NEXTSONG},
|
|
{ 0x03, KEY_EPG},
|
|
{ 0x09, KEY_SETUP},
|
|
{ 0x22, KEY_BACKSPACE},
|
|
{ 0x0c, KEY_UP},
|
|
{ 0x0e, KEY_DOWN},
|
|
{ 0x0b, KEY_LEFT},
|
|
{ 0x0d, KEY_RIGHT},
|
|
{ 0x11, KEY_ENTER},
|
|
{ 0x20, KEY_TEXT},
|
|
};
|
|
struct ir_scancode_table ir_codes_videomate_s350_table = {
|
|
.scan = ir_codes_videomate_s350,
|
|
.size = ARRAY_SIZE(ir_codes_videomate_s350),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_videomate_s350_table);
|
|
|
|
/* GADMEI UTV330+ RM008Z remote
|
|
Shine Liu <shinel@foxmail.com>
|
|
*/
|
|
static struct ir_scancode ir_codes_gadmei_rm008z[] = {
|
|
{ 0x14, KEY_POWER2}, /* POWER OFF */
|
|
{ 0x0c, KEY_MUTE}, /* MUTE */
|
|
|
|
{ 0x18, KEY_TV}, /* TV */
|
|
{ 0x0e, KEY_VIDEO}, /* AV */
|
|
{ 0x0b, KEY_AUDIO}, /* SV */
|
|
{ 0x0f, KEY_RADIO}, /* FM */
|
|
|
|
{ 0x00, KEY_1},
|
|
{ 0x01, KEY_2},
|
|
{ 0x02, KEY_3},
|
|
{ 0x03, KEY_4},
|
|
{ 0x04, KEY_5},
|
|
{ 0x05, KEY_6},
|
|
{ 0x06, KEY_7},
|
|
{ 0x07, KEY_8},
|
|
{ 0x08, KEY_9},
|
|
{ 0x09, KEY_0},
|
|
{ 0x0a, KEY_INFO}, /* OSD */
|
|
{ 0x1c, KEY_BACKSPACE}, /* LAST */
|
|
|
|
{ 0x0d, KEY_PLAY}, /* PLAY */
|
|
{ 0x1e, KEY_CAMERA}, /* SNAPSHOT */
|
|
{ 0x1a, KEY_RECORD}, /* RECORD */
|
|
{ 0x17, KEY_STOP}, /* STOP */
|
|
|
|
{ 0x1f, KEY_UP}, /* UP */
|
|
{ 0x44, KEY_DOWN}, /* DOWN */
|
|
{ 0x46, KEY_TAB}, /* BACK */
|
|
{ 0x4a, KEY_ZOOM}, /* FULLSECREEN */
|
|
|
|
{ 0x10, KEY_VOLUMEUP}, /* VOLUMEUP */
|
|
{ 0x11, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
|
|
{ 0x12, KEY_CHANNELUP}, /* CHANNELUP */
|
|
{ 0x13, KEY_CHANNELDOWN}, /* CHANNELDOWN */
|
|
{ 0x15, KEY_ENTER}, /* OK */
|
|
};
|
|
struct ir_scancode_table ir_codes_gadmei_rm008z_table = {
|
|
.scan = ir_codes_gadmei_rm008z,
|
|
.size = ARRAY_SIZE(ir_codes_gadmei_rm008z),
|
|
};
|
|
EXPORT_SYMBOL_GPL(ir_codes_gadmei_rm008z_table);
|
|
|