/*


    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/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);

/* Michal Majchrowicz <mmajchrowicz@gmail.com> */
IR_KEYTAB_TYPE ir_codes_proteus_2309[IR_KEYTAB_SIZE] = {
	/* 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_F,         /* full screen */
	[ 0x0f ] = KEY_BACKSPACE, /* recall      */
	[ 0x1b ] = KEY_ENTER,     /* mute        */
	[ 0x41 ] = KEY_RECORD,    /* record      */
	[ 0x43 ] = KEY_STOP,      /* stop        */
	[ 0x16 ] = KEY_S,
	[ 0x1a ] = KEY_Q,         /* off         */
	[ 0x2e ] = KEY_RED,
	[ 0x1f ] = KEY_DOWN,      /* channel -   */
	[ 0x1c ] = KEY_UP,        /* channel +   */
	[ 0x10 ] = KEY_LEFT,      /* volume -    */
	[ 0x1e ] = KEY_RIGHT,     /* volume +    */
	[ 0x14 ] = KEY_F1,
};

EXPORT_SYMBOL_GPL(ir_codes_proteus_2309);
/* 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_pinnacle_grey[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_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,
};

EXPORT_SYMBOL_GPL(ir_codes_pinnacle_grey);

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,
	[ 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_ARCHIVE,       /* 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
};

EXPORT_SYMBOL_GPL(ir_codes_winfast);

IR_KEYTAB_TYPE ir_codes_pinnacle_color[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_color);

/* 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);

IR_KEYTAB_TYPE ir_codes_npgtech[IR_KEYTAB_SIZE] = {
	[ 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_UP,
	[ 0x3f ] = KEY_LEFT,
	[ 0x2e ] = KEY_MUTE,
	[ 0x3b ] = KEY_RIGHT,
	[ 0x00 ] = KEY_DOWN,
	[ 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,

};

EXPORT_SYMBOL_GPL(ir_codes_npgtech);

/* Norwood Micro (non-Pro) TV Tuner
   By Peter Naulls <peter@chocky.org>
   Key comments are the functions given in the manual */
IR_KEYTAB_TYPE ir_codes_norwood[IR_KEYTAB_SIZE] = {
	/* 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      */
};

EXPORT_SYMBOL_GPL(ir_codes_norwood);

/* 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
 */
IR_KEYTAB_TYPE ir_codes_budget_ci_old[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_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,
};

EXPORT_SYMBOL_GPL(ir_codes_budget_ci_old);

/*
 * 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"
 */
IR_KEYTAB_TYPE ir_codes_asus_pc39[IR_KEYTAB_SIZE] = {
	/* 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 */
};

EXPORT_SYMBOL_GPL(ir_codes_asus_pc39);


/* Encore ENLTV-FM  - black plastic, white front cover with white glowing buttons
    Juan Pablo Sormani <sorman@gmail.com> */
IR_KEYTAB_TYPE ir_codes_encore_enltv[IR_KEYTAB_SIZE] = {

	/* 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_UP,
	[ 0x12 ] = KEY_DOWN,
	[ 0x0c ] = KEY_RIGHT,
	[ 0x17 ] = KEY_LEFT,

	[ 0x18 ] = KEY_ENTER,		/* OK */

	[ 0x0e ] = KEY_ESC,
	[ 0x13 ] = KEY_D,		/* 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 */


};

EXPORT_SYMBOL_GPL(ir_codes_encore_enltv);

/* for the Technotrend 1500 bundled remotes (grey and black): */
IR_KEYTAB_TYPE ir_codes_tt_1500[IR_KEYTAB_SIZE] = {
	[ 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,
};

EXPORT_SYMBOL_GPL(ir_codes_tt_1500);

/* DViCO FUSION HDTV MCE remote */
IR_KEYTAB_TYPE ir_codes_fusionhdtv_mce[IR_KEYTAB_SIZE] = {

	[ 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,
};

EXPORT_SYMBOL_GPL(ir_codes_fusionhdtv_mce);
