This commit was manufactured by cvs2svn to create branch 'vserver'.
[linux-2.6.git] / drivers / media / common / ir-keymaps.c
diff --git a/drivers/media/common/ir-keymaps.c b/drivers/media/common/ir-keymaps.c
new file mode 100644 (file)
index 0000000..a294d5c
--- /dev/null
@@ -0,0 +1,1415 @@
+/*
+
+
+    Keytables for supported remote controls. This file is part of
+    video4linux.
+
+    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.
+
+ */
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+
+#include <linux/input.h>
+#include <media/ir-common.h>
+
+/* empty keytable, can be used as placeholder for not-yet created keytables */
+IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE] = {
+       [ 0x2a ] = KEY_COFFEE,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_empty);
+
+/* Matt Jesson <dvb@jesson.eclipse.co.uk */
+IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
+       [ 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 +'
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt);
+
+/* Attila Kondoros <attila.kondoros@chello.hu> */
+IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
+
+       [ 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 <<<<
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp);
+
+/* ---------------------------------------------------------------------- */
+
+IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
+
+       [ 0x1e ] = KEY_POWER,       // power
+       [ 0x07 ] = KEY_MEDIA,       // source
+       [ 0x1c ] = KEY_SEARCH,      // scan
+
+/* FIXME: duplicate keycodes?
+ *
+ * These four keys seem to share the same GPIO as CH+, CH-, <<< and >>>
+ * The GPIO values are
+ * 6397fb for both "Scan <" and "CH -",
+ * 639ffb for "Scan >" and "CH+",
+ * 6384fb for "Tune <" and "<<<",
+ * 638cfb for "Tune >" and ">>>", regardless of the mask.
+ *
+ *     [ 0x17 ] = KEY_BACK,        // fm scan <<
+ *     [ 0x1f ] = KEY_FORWARD,     // fm scan >>
+ *
+ *     [ 0x04 ] = KEY_LEFT,        // fm tuning <
+ *     [ 0x0c ] = KEY_RIGHT,       // fm tuning >
+ *
+ * For now, these four keys are disabled. Pressing them will generate
+ * the CH+/CH-/<<</>>> events
+ */
+
+       [ 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
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_pixelview);
+
+IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE] = {
+       [ 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
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_nebula);
+
+/* DigitalNow DNTV Live DVB-T Remote */
+IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE] = {
+       [ 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_S,                       /* 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t);
+
+/* ---------------------------------------------------------------------- */
+
+/* IO-DATA BCTV7E Remote */
+IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE] = {
+       [ 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_T,                       /* 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_S,                       /* SVIDEO */
+       [ 0x2c ] = KEY_CHANNELDOWN,
+       [ 0x6c ] = KEY_VOLUMEDOWN,
+       [ 0x0c ] = KEY_ZOOM,
+
+       [ 0x5c ] = KEY_PAUSE,
+       [ 0x3c ] = KEY_C,                       /* || (red) */
+       [ 0x7c ] = KEY_RECORD,          /* recording */
+       [ 0x1c ] = KEY_STOP,
+
+       [ 0x41 ] = KEY_REWIND,          /* backward << */
+       [ 0x21 ] = KEY_PLAY,
+       [ 0x61 ] = KEY_FASTFORWARD,     /* forward >> */
+       [ 0x01 ] = KEY_NEXT,            /* skip >| */
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e);
+
+/* ---------------------------------------------------------------------- */
+
+/* ADS Tech Instant TV DVB-T PCI Remote */
+IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = {
+       /* 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci);
+
+/* ---------------------------------------------------------------------- */
+
+/* MSI TV@nywhere remote */
+IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = {
+       /* 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_F,                       /* Funtion */
+       [ 0x11 ] = KEY_T,                       /* 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere);
+
+/* ---------------------------------------------------------------------- */
+
+/* Cinergy 1400 DVB-T */
+IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400);
+
+/* ---------------------------------------------------------------------- */
+
+/* AVERTV STUDIO 303 Remote */
+IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_avertv_303);
+
+/* ---------------------------------------------------------------------- */
+
+/* DigitalNow DNTV Live! DVB-T Pro Remote */
+IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro);
+
+IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_em_terratec);
+
+IR_KEYTAB_TYPE ir_codes_em_pinnacle_usb[IR_KEYTAB_SIZE] = {
+       [ 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_ZOOM,
+       [ 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_PAUSE,
+
+       [ 0x1d ] = KEY_MENU,
+       [ 0x19 ] = KEY_PLAY,
+       [ 0x16 ] = KEY_REWIND,
+       [ 0x13 ] = KEY_FORWARD,
+       [ 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,
+       [ 0x27 ] = KEY_RECORD,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_em_pinnacle_usb);
+
+IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE] = {
+       [ 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
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_flyvideo);
+
+IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE] = {
+       [ 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 >>|
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_flydvb);
+
+IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_cinergy);
+
+/* Alfons Geser <a.geser@cox.net>
+ * updates from Job D. R. Borges <jobdrb@ig.com.br> */
+IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE] = {
+       [ 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_SHUFFLE,        // 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)
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_eztv);
+
+/* Alex Hermann <gaaf@gmx.net> */
+IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = {
+       [ 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_SHUFFLE,         /* 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+ */
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_avermedia);
+
+IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr);
+
+/* 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.
+ */
+IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
+
+       /*  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,      /*XXX KEY_SCROLLUP? */
+       [ 0x18 ] = KEY_LEFT,    /*XXX KEY_BACK? */
+       [ 0x16 ] = KEY_OK,      /*XXX KEY_SELECT? KEY_ENTER? */
+       [ 0x0c ] = KEY_RIGHT,   /*XXX KEY_FORWARD? */
+       [ 0x15 ] = KEY_DOWN,    /*XXX KEY_SCROLLDOWN? */
+
+       /*  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_SLEEP,   /*XXX maybe KEY_PAUSE */
+       [ 0x1f ] = KEY_VOLUMEDOWN,
+       [ 0x1e ] = KEY_CHANNELDOWN,
+
+       /*         0x13     0x19  *
+        *         MUTE   SNAPSHOT*
+        *                        */
+       [ 0x13 ] = KEY_MUTE,
+       [ 0x19 ] = KEY_RECORD,  /*XXX*/
+
+       // 0x1d unused ?
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_manli);
+
+/* Mike Baikov <mike@baikov.com> */
+IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE] = {
+
+       [ 0x21 ] = KEY_POWER,
+       [ 0x69 ] = KEY_TV,
+       [ 0x33 ] = KEY_0,
+       [ 0x51 ] = KEY_1,
+       [ 0x31 ] = KEY_2,
+       [ 0x71 ] = KEY_3,
+       [ 0x3b ] = KEY_4,
+       [ 0x58 ] = KEY_5,
+       [ 0x41 ] = KEY_6,
+       [ 0x48 ] = KEY_7,
+       [ 0x30 ] = KEY_8,
+       [ 0x53 ] = KEY_9,
+       [ 0x73 ] = KEY_AGAIN, /* LOOP */
+       [ 0x0a ] = KEY_AUDIO,
+       [ 0x61 ] = KEY_PRINT, /* PREVIEW */
+       [ 0x7a ] = KEY_VIDEO,
+       [ 0x20 ] = KEY_CHANNELUP,
+       [ 0x40 ] = KEY_CHANNELDOWN,
+       [ 0x18 ] = KEY_VOLUMEDOWN,
+       [ 0x50 ] = KEY_VOLUMEUP,
+       [ 0x10 ] = KEY_MUTE,
+       [ 0x4a ] = KEY_SEARCH,
+       [ 0x7b ] = KEY_SHUFFLE, /* SNAPSHOT */
+       [ 0x22 ] = KEY_RECORD,
+       [ 0x62 ] = KEY_STOP,
+       [ 0x78 ] = KEY_PLAY,
+       [ 0x39 ] = KEY_REWIND,
+       [ 0x59 ] = KEY_PAUSE,
+       [ 0x19 ] = KEY_FORWARD,
+       [ 0x09 ] = KEY_ZOOM,
+
+       [ 0x52 ] = KEY_F21, /* LIVE TIMESHIFT */
+       [ 0x1a ] = KEY_F22, /* MIN TIMESHIFT */
+       [ 0x3a ] = KEY_F23, /* TIMESHIFT */
+       [ 0x70 ] = KEY_F24, /* NORMAL TIMESHIFT */
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_gotview7135);
+
+IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE] = {
+       [ 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 */
+       [ 0x49 ] = KEY_LANGUAGE,        /* MTS Select */
+       [ 0x19 ] = KEY_SEARCH,          /* Auto Scan */
+
+       [ 0x4b ] = KEY_RECORD,
+       [ 0x46 ] = KEY_PLAY,
+       [ 0x45 ] = KEY_PAUSE,           /* Pause */
+       [ 0x44 ] = KEY_STOP,
+       [ 0x40 ] = KEY_FORWARD,         /* Forward ? */
+       [ 0x42 ] = KEY_REWIND,          /* Backward ? */
+
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_purpletv);
+
+/* Mapping for the 28 key remote control as seen at
+   http://www.sednacomputer.com/photo/cardbus-tv.jpg
+   Pavel Mihaylov <bin@bash.info> */
+IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE] = {
+       [ 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_SHUFFLE,        /* Snapshot */
+       [ 0x1a ] = KEY_NEXTSONG,
+       [ 0x1b ] = KEY_TEXT,           /* Time Shift */
+       [ 0x1c ] = KEY_RADIO,          /* FM Radio */
+       [ 0x1d ] = KEY_RECORD,
+       [ 0x1e ] = KEY_PAUSE,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna);
+
+/* Mark Phalan <phalanm@o2.ie> */
+IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE] = {
+       [ 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 */
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_pv951);
+
+/* generic RC5 keytable                                          */
+/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
+/* used by old (black) Hauppauge remotes                         */
+IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE] = {
+       /* 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 */
+
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_rc5_tv);
+
+/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
+IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE] = {
+       /* 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,
+       [ 0x02 ] = KEY_TUNER,           /* TV/FM */
+       [ 0x1e ] = KEY_VIDEO,
+       [ 0x04 ] = KEY_VOLUMEUP,
+       [ 0x08 ] = KEY_VOLUMEDOWN,
+       [ 0x0c ] = KEY_CHANNELUP,
+       [ 0x10 ] = KEY_CHANNELDOWN,
+       [ 0x03 ] = KEY_ZOOM,            /* fullscreen */
+       [ 0x1f ] = KEY_SUBTITLE,                /* closed caption/teletext */
+       [ 0x20 ] = KEY_SLEEP,
+       [ 0x14 ] = KEY_MUTE,
+       [ 0x2b ] = KEY_RED,
+       [ 0x2c ] = KEY_GREEN,
+       [ 0x2d ] = KEY_YELLOW,
+       [ 0x2e ] = KEY_BLUE,
+       [ 0x18 ] = KEY_KPPLUS,          /* fine tune + */
+       [ 0x19 ] = KEY_KPMINUS,         /* fine tune - */
+       [ 0x21 ] = KEY_DOT,
+       [ 0x13 ] = KEY_ENTER,
+       [ 0x22 ] = KEY_BACK,
+       [ 0x23 ] = KEY_PLAYPAUSE,
+       [ 0x24 ] = KEY_NEXT,
+       [ 0x26 ] = KEY_STOP,
+       [ 0x27 ] = KEY_RECORD
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_winfast);
+
+IR_KEYTAB_TYPE ir_codes_pinnacle[IR_KEYTAB_SIZE] = {
+       [ 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,
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_pinnacle);
+
+/* 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 */
+IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
+       /* 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) */
+};
+
+EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new);
+