Merge with /pub/scm/linux/kernel/git/torvalds/linux-2.6.git
[linux-drm-fsl-dcu.git] / drivers / media / common / ir-keymaps.c
1 /*
2
3
4     Keytables for supported remote controls. This file is part of
5     video4linux.
6
7     This program is free software; you can redistribute it and/or modify
8     it under the terms of the GNU General Public License as published by
9     the Free Software Foundation; either version 2 of the License, or
10     (at your option) any later version.
11
12     This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU General Public License for more details.
16
17     You should have received a copy of the GNU General Public License
18     along with this program; if not, write to the Free Software
19     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20
21  */
22 #include <linux/module.h>
23 #include <linux/moduleparam.h>
24
25 #include <linux/input.h>
26 #include <media/ir-common.h>
27
28 /* empty keytable, can be used as placeholder for not-yet created keytables */
29 IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE] = {
30         [ 0x2a ] = KEY_COFFEE,
31 };
32
33 EXPORT_SYMBOL_GPL(ir_codes_empty);
34
35 /* Matt Jesson <dvb@jesson.eclipse.co.uk */
36 IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
37         [ 0x28 ] = KEY_0,         //'0' / 'enter'
38         [ 0x22 ] = KEY_1,         //'1'
39         [ 0x12 ] = KEY_2,         //'2' / 'up arrow'
40         [ 0x32 ] = KEY_3,         //'3'
41         [ 0x24 ] = KEY_4,         //'4' / 'left arrow'
42         [ 0x14 ] = KEY_5,         //'5'
43         [ 0x34 ] = KEY_6,         //'6' / 'right arrow'
44         [ 0x26 ] = KEY_7,         //'7'
45         [ 0x16 ] = KEY_8,         //'8' / 'down arrow'
46         [ 0x36 ] = KEY_9,         //'9'
47
48         [ 0x20 ] = KEY_LIST,        // 'source'
49         [ 0x10 ] = KEY_TEXT,        // 'teletext'
50         [ 0x00 ] = KEY_POWER,       // 'power'
51         [ 0x04 ] = KEY_AUDIO,       // 'audio'
52         [ 0x06 ] = KEY_ZOOM,        // 'full screen'
53         [ 0x18 ] = KEY_VIDEO,       // 'display'
54         [ 0x38 ] = KEY_SEARCH,      // 'loop'
55         [ 0x08 ] = KEY_INFO,        // 'preview'
56         [ 0x2a ] = KEY_REWIND,      // 'backward <<'
57         [ 0x1a ] = KEY_FASTFORWARD, // 'forward >>'
58         [ 0x3a ] = KEY_RECORD,      // 'capture'
59         [ 0x0a ] = KEY_MUTE,        // 'mute'
60         [ 0x2c ] = KEY_RECORD,      // 'record'
61         [ 0x1c ] = KEY_PAUSE,       // 'pause'
62         [ 0x3c ] = KEY_STOP,        // 'stop'
63         [ 0x0c ] = KEY_PLAY,        // 'play'
64         [ 0x2e ] = KEY_RED,         // 'red'
65         [ 0x01 ] = KEY_BLUE,        // 'blue' / 'cancel'
66         [ 0x0e ] = KEY_YELLOW,      // 'yellow' / 'ok'
67         [ 0x21 ] = KEY_GREEN,       // 'green'
68         [ 0x11 ] = KEY_CHANNELDOWN, // 'channel -'
69         [ 0x31 ] = KEY_CHANNELUP,   // 'channel +'
70         [ 0x1e ] = KEY_VOLUMEDOWN,  // 'volume -'
71         [ 0x3e ] = KEY_VOLUMEUP,    // 'volume +'
72 };
73
74 EXPORT_SYMBOL_GPL(ir_codes_avermedia_dvbt);
75
76 /* Attila Kondoros <attila.kondoros@chello.hu> */
77 IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
78
79         [ 0x01 ] = KEY_1,
80         [ 0x02 ] = KEY_2,
81         [ 0x03 ] = KEY_3,
82         [ 0x04 ] = KEY_4,
83         [ 0x05 ] = KEY_5,
84         [ 0x06 ] = KEY_6,
85         [ 0x07 ] = KEY_7,
86         [ 0x08 ] = KEY_8,
87         [ 0x09 ] = KEY_9,
88         [ 0x00 ] = KEY_0,
89         [ 0x17 ] = KEY_LAST,        // +100
90         [ 0x0a ] = KEY_LIST,        // recall
91
92
93         [ 0x1c ] = KEY_TUNER,       // TV/FM
94         [ 0x15 ] = KEY_SEARCH,      // scan
95         [ 0x12 ] = KEY_POWER,       // power
96         [ 0x1f ] = KEY_VOLUMEDOWN,  // vol up
97         [ 0x1b ] = KEY_VOLUMEUP,    // vol down
98         [ 0x1e ] = KEY_CHANNELDOWN, // chn up
99         [ 0x1a ] = KEY_CHANNELUP,   // chn down
100
101         [ 0x11 ] = KEY_VIDEO,       // video
102         [ 0x0f ] = KEY_ZOOM,        // full screen
103         [ 0x13 ] = KEY_MUTE,        // mute/unmute
104         [ 0x10 ] = KEY_TEXT,        // min
105
106         [ 0x0d ] = KEY_STOP,        // freeze
107         [ 0x0e ] = KEY_RECORD,      // record
108         [ 0x1d ] = KEY_PLAYPAUSE,   // stop
109         [ 0x19 ] = KEY_PLAY,        // play
110
111         [ 0x16 ] = KEY_GOTO,        // osd
112         [ 0x14 ] = KEY_REFRESH,     // default
113         [ 0x0c ] = KEY_KPPLUS,      // fine tune >>>>
114         [ 0x18 ] = KEY_KPMINUS      // fine tune <<<<
115 };
116
117 EXPORT_SYMBOL_GPL(ir_codes_apac_viewcomp);
118
119 /* ---------------------------------------------------------------------- */
120
121 IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
122
123         [ 0x1e ] = KEY_POWER,       // power
124         [ 0x07 ] = KEY_MEDIA,       // source
125         [ 0x1c ] = KEY_SEARCH,      // scan
126
127 /* FIXME: duplicate keycodes?
128  *
129  * These four keys seem to share the same GPIO as CH+, CH-, <<< and >>>
130  * The GPIO values are
131  * 6397fb for both "Scan <" and "CH -",
132  * 639ffb for "Scan >" and "CH+",
133  * 6384fb for "Tune <" and "<<<",
134  * 638cfb for "Tune >" and ">>>", regardless of the mask.
135  *
136  *      [ 0x17 ] = KEY_BACK,        // fm scan <<
137  *      [ 0x1f ] = KEY_FORWARD,     // fm scan >>
138  *
139  *      [ 0x04 ] = KEY_LEFT,        // fm tuning <
140  *      [ 0x0c ] = KEY_RIGHT,       // fm tuning >
141  *
142  * For now, these four keys are disabled. Pressing them will generate
143  * the CH+/CH-/<<</>>> events
144  */
145
146         [ 0x03 ] = KEY_TUNER,       // TV/FM
147
148         [ 0x00 ] = KEY_RECORD,
149         [ 0x08 ] = KEY_STOP,
150         [ 0x11 ] = KEY_PLAY,
151
152         [ 0x1a ] = KEY_PLAYPAUSE,   // freeze
153         [ 0x19 ] = KEY_ZOOM,        // zoom
154         [ 0x0f ] = KEY_TEXT,        // min
155
156         [ 0x01 ] = KEY_1,
157         [ 0x0b ] = KEY_2,
158         [ 0x1b ] = KEY_3,
159         [ 0x05 ] = KEY_4,
160         [ 0x09 ] = KEY_5,
161         [ 0x15 ] = KEY_6,
162         [ 0x06 ] = KEY_7,
163         [ 0x0a ] = KEY_8,
164         [ 0x12 ] = KEY_9,
165         [ 0x02 ] = KEY_0,
166         [ 0x10 ] = KEY_LAST,        // +100
167         [ 0x13 ] = KEY_LIST,        // recall
168
169         [ 0x1f ] = KEY_CHANNELUP,   // chn down
170         [ 0x17 ] = KEY_CHANNELDOWN, // chn up
171         [ 0x16 ] = KEY_VOLUMEUP,    // vol down
172         [ 0x14 ] = KEY_VOLUMEDOWN,  // vol up
173
174         [ 0x04 ] = KEY_KPMINUS,     // <<<
175         [ 0x0e ] = KEY_SETUP,       // function
176         [ 0x0c ] = KEY_KPPLUS,      // >>>
177
178         [ 0x0d ] = KEY_GOTO,        // mts
179         [ 0x1d ] = KEY_REFRESH,     // reset
180         [ 0x18 ] = KEY_MUTE         // mute/unmute
181 };
182
183 EXPORT_SYMBOL_GPL(ir_codes_pixelview);
184
185 IR_KEYTAB_TYPE ir_codes_nebula[IR_KEYTAB_SIZE] = {
186         [ 0x00 ] = KEY_0,
187         [ 0x01 ] = KEY_1,
188         [ 0x02 ] = KEY_2,
189         [ 0x03 ] = KEY_3,
190         [ 0x04 ] = KEY_4,
191         [ 0x05 ] = KEY_5,
192         [ 0x06 ] = KEY_6,
193         [ 0x07 ] = KEY_7,
194         [ 0x08 ] = KEY_8,
195         [ 0x09 ] = KEY_9,
196         [ 0x0a ] = KEY_TV,
197         [ 0x0b ] = KEY_AUX,
198         [ 0x0c ] = KEY_DVD,
199         [ 0x0d ] = KEY_POWER,
200         [ 0x0e ] = KEY_MHP,     /* labelled 'Picture' */
201         [ 0x0f ] = KEY_AUDIO,
202         [ 0x10 ] = KEY_INFO,
203         [ 0x11 ] = KEY_F13,     /* 16:9 */
204         [ 0x12 ] = KEY_F14,     /* 14:9 */
205         [ 0x13 ] = KEY_EPG,
206         [ 0x14 ] = KEY_EXIT,
207         [ 0x15 ] = KEY_MENU,
208         [ 0x16 ] = KEY_UP,
209         [ 0x17 ] = KEY_DOWN,
210         [ 0x18 ] = KEY_LEFT,
211         [ 0x19 ] = KEY_RIGHT,
212         [ 0x1a ] = KEY_ENTER,
213         [ 0x1b ] = KEY_CHANNELUP,
214         [ 0x1c ] = KEY_CHANNELDOWN,
215         [ 0x1d ] = KEY_VOLUMEUP,
216         [ 0x1e ] = KEY_VOLUMEDOWN,
217         [ 0x1f ] = KEY_RED,
218         [ 0x20 ] = KEY_GREEN,
219         [ 0x21 ] = KEY_YELLOW,
220         [ 0x22 ] = KEY_BLUE,
221         [ 0x23 ] = KEY_SUBTITLE,
222         [ 0x24 ] = KEY_F15,     /* AD */
223         [ 0x25 ] = KEY_TEXT,
224         [ 0x26 ] = KEY_MUTE,
225         [ 0x27 ] = KEY_REWIND,
226         [ 0x28 ] = KEY_STOP,
227         [ 0x29 ] = KEY_PLAY,
228         [ 0x2a ] = KEY_FASTFORWARD,
229         [ 0x2b ] = KEY_F16,     /* chapter */
230         [ 0x2c ] = KEY_PAUSE,
231         [ 0x2d ] = KEY_PLAY,
232         [ 0x2e ] = KEY_RECORD,
233         [ 0x2f ] = KEY_F17,     /* picture in picture */
234         [ 0x30 ] = KEY_KPPLUS,  /* zoom in */
235         [ 0x31 ] = KEY_KPMINUS, /* zoom out */
236         [ 0x32 ] = KEY_F18,     /* capture */
237         [ 0x33 ] = KEY_F19,     /* web */
238         [ 0x34 ] = KEY_EMAIL,
239         [ 0x35 ] = KEY_PHONE,
240         [ 0x36 ] = KEY_PC
241 };
242
243 EXPORT_SYMBOL_GPL(ir_codes_nebula);
244
245 /* DigitalNow DNTV Live DVB-T Remote */
246 IR_KEYTAB_TYPE ir_codes_dntv_live_dvb_t[IR_KEYTAB_SIZE] = {
247         [ 0x00 ] = KEY_ESC,             /* 'go up a level?' */
248         /* Keys 0 to 9 */
249         [ 0x0a ] = KEY_0,
250         [ 0x01 ] = KEY_1,
251         [ 0x02 ] = KEY_2,
252         [ 0x03 ] = KEY_3,
253         [ 0x04 ] = KEY_4,
254         [ 0x05 ] = KEY_5,
255         [ 0x06 ] = KEY_6,
256         [ 0x07 ] = KEY_7,
257         [ 0x08 ] = KEY_8,
258         [ 0x09 ] = KEY_9,
259
260         [ 0x0b ] = KEY_TUNER,           /* tv/fm */
261         [ 0x0c ] = KEY_SEARCH,          /* scan */
262         [ 0x0d ] = KEY_STOP,
263         [ 0x0e ] = KEY_PAUSE,
264         [ 0x0f ] = KEY_LIST,            /* source */
265
266         [ 0x10 ] = KEY_MUTE,
267         [ 0x11 ] = KEY_REWIND,          /* backward << */
268         [ 0x12 ] = KEY_POWER,
269         [ 0x13 ] = KEY_S,                       /* snap */
270         [ 0x14 ] = KEY_AUDIO,           /* stereo */
271         [ 0x15 ] = KEY_CLEAR,           /* reset */
272         [ 0x16 ] = KEY_PLAY,
273         [ 0x17 ] = KEY_ENTER,
274         [ 0x18 ] = KEY_ZOOM,            /* full screen */
275         [ 0x19 ] = KEY_FASTFORWARD,     /* forward >> */
276         [ 0x1a ] = KEY_CHANNELUP,
277         [ 0x1b ] = KEY_VOLUMEUP,
278         [ 0x1c ] = KEY_INFO,            /* preview */
279         [ 0x1d ] = KEY_RECORD,          /* record */
280         [ 0x1e ] = KEY_CHANNELDOWN,
281         [ 0x1f ] = KEY_VOLUMEDOWN,
282 };
283
284 EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvb_t);
285
286 /* ---------------------------------------------------------------------- */
287
288 /* IO-DATA BCTV7E Remote */
289 IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE] = {
290         [ 0x40 ] = KEY_TV,
291         [ 0x20 ] = KEY_RADIO,           /* FM */
292         [ 0x60 ] = KEY_EPG,
293         [ 0x00 ] = KEY_POWER,
294
295         /* Keys 0 to 9 */
296         [ 0x44 ] = KEY_0,               /* 10 */
297         [ 0x50 ] = KEY_1,
298         [ 0x30 ] = KEY_2,
299         [ 0x70 ] = KEY_3,
300         [ 0x48 ] = KEY_4,
301         [ 0x28 ] = KEY_5,
302         [ 0x68 ] = KEY_6,
303         [ 0x58 ] = KEY_7,
304         [ 0x38 ] = KEY_8,
305         [ 0x78 ] = KEY_9,
306
307         [ 0x10 ] = KEY_L,                       /* Live */
308         [ 0x08 ] = KEY_T,                       /* Time Shift */
309
310         [ 0x18 ] = KEY_PLAYPAUSE,               /* Play */
311
312         [ 0x24 ] = KEY_ENTER,           /* 11 */
313         [ 0x64 ] = KEY_ESC,             /* 12 */
314         [ 0x04 ] = KEY_M,                       /* Multi */
315
316         [ 0x54 ] = KEY_VIDEO,
317         [ 0x34 ] = KEY_CHANNELUP,
318         [ 0x74 ] = KEY_VOLUMEUP,
319         [ 0x14 ] = KEY_MUTE,
320
321         [ 0x4c ] = KEY_S,                       /* SVIDEO */
322         [ 0x2c ] = KEY_CHANNELDOWN,
323         [ 0x6c ] = KEY_VOLUMEDOWN,
324         [ 0x0c ] = KEY_ZOOM,
325
326         [ 0x5c ] = KEY_PAUSE,
327         [ 0x3c ] = KEY_C,                       /* || (red) */
328         [ 0x7c ] = KEY_RECORD,          /* recording */
329         [ 0x1c ] = KEY_STOP,
330
331         [ 0x41 ] = KEY_REWIND,          /* backward << */
332         [ 0x21 ] = KEY_PLAY,
333         [ 0x61 ] = KEY_FASTFORWARD,     /* forward >> */
334         [ 0x01 ] = KEY_NEXT,            /* skip >| */
335 };
336
337 EXPORT_SYMBOL_GPL(ir_codes_iodata_bctv7e);
338
339 /* ---------------------------------------------------------------------- */
340
341 /* ADS Tech Instant TV DVB-T PCI Remote */
342 IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = {
343         /* Keys 0 to 9 */
344         [ 0x4d ] = KEY_0,
345         [ 0x57 ] = KEY_1,
346         [ 0x4f ] = KEY_2,
347         [ 0x53 ] = KEY_3,
348         [ 0x56 ] = KEY_4,
349         [ 0x4e ] = KEY_5,
350         [ 0x5e ] = KEY_6,
351         [ 0x54 ] = KEY_7,
352         [ 0x4c ] = KEY_8,
353         [ 0x5c ] = KEY_9,
354
355         [ 0x5b ] = KEY_POWER,
356         [ 0x5f ] = KEY_MUTE,
357         [ 0x55 ] = KEY_GOTO,
358         [ 0x5d ] = KEY_SEARCH,
359         [ 0x17 ] = KEY_EPG,             /* Guide */
360         [ 0x1f ] = KEY_MENU,
361         [ 0x0f ] = KEY_UP,
362         [ 0x46 ] = KEY_DOWN,
363         [ 0x16 ] = KEY_LEFT,
364         [ 0x1e ] = KEY_RIGHT,
365         [ 0x0e ] = KEY_SELECT,          /* Enter */
366         [ 0x5a ] = KEY_INFO,
367         [ 0x52 ] = KEY_EXIT,
368         [ 0x59 ] = KEY_PREVIOUS,
369         [ 0x51 ] = KEY_NEXT,
370         [ 0x58 ] = KEY_REWIND,
371         [ 0x50 ] = KEY_FORWARD,
372         [ 0x44 ] = KEY_PLAYPAUSE,
373         [ 0x07 ] = KEY_STOP,
374         [ 0x1b ] = KEY_RECORD,
375         [ 0x13 ] = KEY_TUNER,           /* Live */
376         [ 0x0a ] = KEY_A,
377         [ 0x12 ] = KEY_B,
378         [ 0x03 ] = KEY_PROG1,           /* 1 */
379         [ 0x01 ] = KEY_PROG2,           /* 2 */
380         [ 0x00 ] = KEY_PROG3,           /* 3 */
381         [ 0x06 ] = KEY_DVD,
382         [ 0x48 ] = KEY_AUX,             /* Photo */
383         [ 0x40 ] = KEY_VIDEO,
384         [ 0x19 ] = KEY_AUDIO,           /* Music */
385         [ 0x0b ] = KEY_CHANNELUP,
386         [ 0x08 ] = KEY_CHANNELDOWN,
387         [ 0x15 ] = KEY_VOLUMEUP,
388         [ 0x1c ] = KEY_VOLUMEDOWN,
389 };
390
391 EXPORT_SYMBOL_GPL(ir_codes_adstech_dvb_t_pci);
392
393 /* ---------------------------------------------------------------------- */
394
395 /* MSI TV@nywhere remote */
396 IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = {
397         /* Keys 0 to 9 */
398         [ 0x00 ] = KEY_0,
399         [ 0x01 ] = KEY_1,
400         [ 0x02 ] = KEY_2,
401         [ 0x03 ] = KEY_3,
402         [ 0x04 ] = KEY_4,
403         [ 0x05 ] = KEY_5,
404         [ 0x06 ] = KEY_6,
405         [ 0x07 ] = KEY_7,
406         [ 0x08 ] = KEY_8,
407         [ 0x09 ] = KEY_9,
408
409         [ 0x0c ] = KEY_MUTE,
410         [ 0x0f ] = KEY_SCREEN,          /* Full Screen */
411         [ 0x10 ] = KEY_F,                       /* Funtion */
412         [ 0x11 ] = KEY_T,                       /* Time shift */
413         [ 0x12 ] = KEY_POWER,
414         [ 0x13 ] = KEY_MEDIA,           /* MTS */
415         [ 0x14 ] = KEY_SLOW,
416         [ 0x16 ] = KEY_REWIND,          /* backward << */
417         [ 0x17 ] = KEY_ENTER,           /* Return */
418         [ 0x18 ] = KEY_FASTFORWARD,     /* forward >> */
419         [ 0x1a ] = KEY_CHANNELUP,
420         [ 0x1b ] = KEY_VOLUMEUP,
421         [ 0x1e ] = KEY_CHANNELDOWN,
422         [ 0x1f ] = KEY_VOLUMEDOWN,
423 };
424
425 EXPORT_SYMBOL_GPL(ir_codes_msi_tvanywhere);
426
427 /* ---------------------------------------------------------------------- */
428
429 /* Cinergy 1400 DVB-T */
430 IR_KEYTAB_TYPE ir_codes_cinergy_1400[IR_KEYTAB_SIZE] = {
431         [ 0x01 ] = KEY_POWER,
432         [ 0x02 ] = KEY_1,
433         [ 0x03 ] = KEY_2,
434         [ 0x04 ] = KEY_3,
435         [ 0x05 ] = KEY_4,
436         [ 0x06 ] = KEY_5,
437         [ 0x07 ] = KEY_6,
438         [ 0x08 ] = KEY_7,
439         [ 0x09 ] = KEY_8,
440         [ 0x0a ] = KEY_9,
441         [ 0x0c ] = KEY_0,
442
443         [ 0x0b ] = KEY_VIDEO,
444         [ 0x0d ] = KEY_REFRESH,
445         [ 0x0e ] = KEY_SELECT,
446         [ 0x0f ] = KEY_EPG,
447         [ 0x10 ] = KEY_UP,
448         [ 0x11 ] = KEY_LEFT,
449         [ 0x12 ] = KEY_OK,
450         [ 0x13 ] = KEY_RIGHT,
451         [ 0x14 ] = KEY_DOWN,
452         [ 0x15 ] = KEY_TEXT,
453         [ 0x16 ] = KEY_INFO,
454
455         [ 0x17 ] = KEY_RED,
456         [ 0x18 ] = KEY_GREEN,
457         [ 0x19 ] = KEY_YELLOW,
458         [ 0x1a ] = KEY_BLUE,
459
460         [ 0x1b ] = KEY_CHANNELUP,
461         [ 0x1c ] = KEY_VOLUMEUP,
462         [ 0x1d ] = KEY_MUTE,
463         [ 0x1e ] = KEY_VOLUMEDOWN,
464         [ 0x1f ] = KEY_CHANNELDOWN,
465
466         [ 0x40 ] = KEY_PAUSE,
467         [ 0x4c ] = KEY_PLAY,
468         [ 0x58 ] = KEY_RECORD,
469         [ 0x54 ] = KEY_PREVIOUS,
470         [ 0x48 ] = KEY_STOP,
471         [ 0x5c ] = KEY_NEXT,
472 };
473
474 EXPORT_SYMBOL_GPL(ir_codes_cinergy_1400);
475
476 /* ---------------------------------------------------------------------- */
477
478 /* AVERTV STUDIO 303 Remote */
479 IR_KEYTAB_TYPE ir_codes_avertv_303[IR_KEYTAB_SIZE] = {
480         [ 0x2a ] = KEY_1,
481         [ 0x32 ] = KEY_2,
482         [ 0x3a ] = KEY_3,
483         [ 0x4a ] = KEY_4,
484         [ 0x52 ] = KEY_5,
485         [ 0x5a ] = KEY_6,
486         [ 0x6a ] = KEY_7,
487         [ 0x72 ] = KEY_8,
488         [ 0x7a ] = KEY_9,
489         [ 0x0e ] = KEY_0,
490
491         [ 0x02 ] = KEY_POWER,
492         [ 0x22 ] = KEY_VIDEO,
493         [ 0x42 ] = KEY_AUDIO,
494         [ 0x62 ] = KEY_ZOOM,
495         [ 0x0a ] = KEY_TV,
496         [ 0x12 ] = KEY_CD,
497         [ 0x1a ] = KEY_TEXT,
498
499         [ 0x16 ] = KEY_SUBTITLE,
500         [ 0x1e ] = KEY_REWIND,
501         [ 0x06 ] = KEY_PRINT,
502
503         [ 0x2e ] = KEY_SEARCH,
504         [ 0x36 ] = KEY_SLEEP,
505         [ 0x3e ] = KEY_SHUFFLE,
506         [ 0x26 ] = KEY_MUTE,
507
508         [ 0x4e ] = KEY_RECORD,
509         [ 0x56 ] = KEY_PAUSE,
510         [ 0x5e ] = KEY_STOP,
511         [ 0x46 ] = KEY_PLAY,
512
513         [ 0x6e ] = KEY_RED,
514         [ 0x0b ] = KEY_GREEN,
515         [ 0x66 ] = KEY_YELLOW,
516         [ 0x03 ] = KEY_BLUE,
517
518         [ 0x76 ] = KEY_LEFT,
519         [ 0x7e ] = KEY_RIGHT,
520         [ 0x13 ] = KEY_DOWN,
521         [ 0x1b ] = KEY_UP,
522 };
523
524 EXPORT_SYMBOL_GPL(ir_codes_avertv_303);
525
526 /* ---------------------------------------------------------------------- */
527
528 /* DigitalNow DNTV Live! DVB-T Pro Remote */
529 IR_KEYTAB_TYPE ir_codes_dntv_live_dvbt_pro[IR_KEYTAB_SIZE] = {
530         [ 0x16 ] = KEY_POWER,
531         [ 0x5b ] = KEY_HOME,
532
533         [ 0x55 ] = KEY_TV,              /* live tv */
534         [ 0x58 ] = KEY_TUNER,           /* digital Radio */
535         [ 0x5a ] = KEY_RADIO,           /* FM radio */
536         [ 0x59 ] = KEY_DVD,             /* dvd menu */
537         [ 0x03 ] = KEY_1,
538         [ 0x01 ] = KEY_2,
539         [ 0x06 ] = KEY_3,
540         [ 0x09 ] = KEY_4,
541         [ 0x1d ] = KEY_5,
542         [ 0x1f ] = KEY_6,
543         [ 0x0d ] = KEY_7,
544         [ 0x19 ] = KEY_8,
545         [ 0x1b ] = KEY_9,
546         [ 0x0c ] = KEY_CANCEL,
547         [ 0x15 ] = KEY_0,
548         [ 0x4a ] = KEY_CLEAR,
549         [ 0x13 ] = KEY_BACK,
550         [ 0x00 ] = KEY_TAB,
551         [ 0x4b ] = KEY_UP,
552         [ 0x4e ] = KEY_LEFT,
553         [ 0x4f ] = KEY_OK,
554         [ 0x52 ] = KEY_RIGHT,
555         [ 0x51 ] = KEY_DOWN,
556         [ 0x1e ] = KEY_VOLUMEUP,
557         [ 0x0a ] = KEY_VOLUMEDOWN,
558         [ 0x02 ] = KEY_CHANNELDOWN,
559         [ 0x05 ] = KEY_CHANNELUP,
560         [ 0x11 ] = KEY_RECORD,
561         [ 0x14 ] = KEY_PLAY,
562         [ 0x4c ] = KEY_PAUSE,
563         [ 0x1a ] = KEY_STOP,
564         [ 0x40 ] = KEY_REWIND,
565         [ 0x12 ] = KEY_FASTFORWARD,
566         [ 0x41 ] = KEY_PREVIOUSSONG,    /* replay |< */
567         [ 0x42 ] = KEY_NEXTSONG,        /* skip >| */
568         [ 0x54 ] = KEY_CAMERA,          /* capture */
569         [ 0x50 ] = KEY_LANGUAGE,        /* sap */
570         [ 0x47 ] = KEY_TV2,             /* pip */
571         [ 0x4d ] = KEY_SCREEN,
572         [ 0x43 ] = KEY_SUBTITLE,
573         [ 0x10 ] = KEY_MUTE,
574         [ 0x49 ] = KEY_AUDIO,           /* l/r */
575         [ 0x07 ] = KEY_SLEEP,
576         [ 0x08 ] = KEY_VIDEO,           /* a/v */
577         [ 0x0e ] = KEY_PREVIOUS,        /* recall */
578         [ 0x45 ] = KEY_ZOOM,            /* zoom + */
579         [ 0x46 ] = KEY_ANGLE,           /* zoom - */
580         [ 0x56 ] = KEY_RED,
581         [ 0x57 ] = KEY_GREEN,
582         [ 0x5c ] = KEY_YELLOW,
583         [ 0x5d ] = KEY_BLUE,
584 };
585
586 EXPORT_SYMBOL_GPL(ir_codes_dntv_live_dvbt_pro);
587
588 IR_KEYTAB_TYPE ir_codes_em_terratec[IR_KEYTAB_SIZE] = {
589         [ 0x01 ] = KEY_CHANNEL,
590         [ 0x02 ] = KEY_SELECT,
591         [ 0x03 ] = KEY_MUTE,
592         [ 0x04 ] = KEY_POWER,
593         [ 0x05 ] = KEY_1,
594         [ 0x06 ] = KEY_2,
595         [ 0x07 ] = KEY_3,
596         [ 0x08 ] = KEY_CHANNELUP,
597         [ 0x09 ] = KEY_4,
598         [ 0x0a ] = KEY_5,
599         [ 0x0b ] = KEY_6,
600         [ 0x0c ] = KEY_CHANNELDOWN,
601         [ 0x0d ] = KEY_7,
602         [ 0x0e ] = KEY_8,
603         [ 0x0f ] = KEY_9,
604         [ 0x10 ] = KEY_VOLUMEUP,
605         [ 0x11 ] = KEY_0,
606         [ 0x12 ] = KEY_MENU,
607         [ 0x13 ] = KEY_PRINT,
608         [ 0x14 ] = KEY_VOLUMEDOWN,
609         [ 0x16 ] = KEY_PAUSE,
610         [ 0x18 ] = KEY_RECORD,
611         [ 0x19 ] = KEY_REWIND,
612         [ 0x1a ] = KEY_PLAY,
613         [ 0x1b ] = KEY_FORWARD,
614         [ 0x1c ] = KEY_BACKSPACE,
615         [ 0x1e ] = KEY_STOP,
616         [ 0x40 ] = KEY_ZOOM,
617 };
618
619 EXPORT_SYMBOL_GPL(ir_codes_em_terratec);
620
621 IR_KEYTAB_TYPE ir_codes_em_pinnacle_usb[IR_KEYTAB_SIZE] = {
622         [ 0x3a ] = KEY_0,
623         [ 0x31 ] = KEY_1,
624         [ 0x32 ] = KEY_2,
625         [ 0x33 ] = KEY_3,
626         [ 0x34 ] = KEY_4,
627         [ 0x35 ] = KEY_5,
628         [ 0x36 ] = KEY_6,
629         [ 0x37 ] = KEY_7,
630         [ 0x38 ] = KEY_8,
631         [ 0x39 ] = KEY_9,
632
633         [ 0x2f ] = KEY_POWER,
634
635         [ 0x2e ] = KEY_P,
636         [ 0x1f ] = KEY_L,
637         [ 0x2b ] = KEY_I,
638
639         [ 0x2d ] = KEY_ZOOM,
640         [ 0x1e ] = KEY_ZOOM,
641         [ 0x1b ] = KEY_VOLUMEUP,
642         [ 0x0f ] = KEY_VOLUMEDOWN,
643         [ 0x17 ] = KEY_CHANNELUP,
644         [ 0x1c ] = KEY_CHANNELDOWN,
645         [ 0x25 ] = KEY_INFO,
646
647         [ 0x3c ] = KEY_MUTE,
648
649         [ 0x3d ] = KEY_LEFT,
650         [ 0x3b ] = KEY_RIGHT,
651
652         [ 0x3f ] = KEY_UP,
653         [ 0x3e ] = KEY_DOWN,
654         [ 0x1a ] = KEY_PAUSE,
655
656         [ 0x1d ] = KEY_MENU,
657         [ 0x19 ] = KEY_PLAY,
658         [ 0x16 ] = KEY_REWIND,
659         [ 0x13 ] = KEY_FORWARD,
660         [ 0x15 ] = KEY_PAUSE,
661         [ 0x0e ] = KEY_REWIND,
662         [ 0x0d ] = KEY_PLAY,
663         [ 0x0b ] = KEY_STOP,
664         [ 0x07 ] = KEY_FORWARD,
665         [ 0x27 ] = KEY_RECORD,
666         [ 0x26 ] = KEY_TUNER,
667         [ 0x29 ] = KEY_TEXT,
668         [ 0x2a ] = KEY_MEDIA,
669         [ 0x18 ] = KEY_EPG,
670         [ 0x27 ] = KEY_RECORD,
671 };
672
673 EXPORT_SYMBOL_GPL(ir_codes_em_pinnacle_usb);
674
675 IR_KEYTAB_TYPE ir_codes_flyvideo[IR_KEYTAB_SIZE] = {
676         [ 0x0f ] = KEY_0,
677         [ 0x03 ] = KEY_1,
678         [ 0x04 ] = KEY_2,
679         [ 0x05 ] = KEY_3,
680         [ 0x07 ] = KEY_4,
681         [ 0x08 ] = KEY_5,
682         [ 0x09 ] = KEY_6,
683         [ 0x0b ] = KEY_7,
684         [ 0x0c ] = KEY_8,
685         [ 0x0d ] = KEY_9,
686
687         [ 0x0e ] = KEY_MODE,         // Air/Cable
688         [ 0x11 ] = KEY_VIDEO,        // Video
689         [ 0x15 ] = KEY_AUDIO,        // Audio
690         [ 0x00 ] = KEY_POWER,        // Power
691         [ 0x18 ] = KEY_TUNER,        // AV Source
692         [ 0x02 ] = KEY_ZOOM,         // Fullscreen
693         [ 0x1a ] = KEY_LANGUAGE,     // Stereo
694         [ 0x1b ] = KEY_MUTE,         // Mute
695         [ 0x14 ] = KEY_VOLUMEUP,     // Volume +
696         [ 0x17 ] = KEY_VOLUMEDOWN,   // Volume -
697         [ 0x12 ] = KEY_CHANNELUP,    // Channel +
698         [ 0x13 ] = KEY_CHANNELDOWN,  // Channel -
699         [ 0x06 ] = KEY_AGAIN,        // Recall
700         [ 0x10 ] = KEY_ENTER,      // Enter
701 };
702
703 EXPORT_SYMBOL_GPL(ir_codes_flyvideo);
704
705 IR_KEYTAB_TYPE ir_codes_flydvb[IR_KEYTAB_SIZE] = {
706         [ 0x01 ] = KEY_ZOOM,            // Full Screen
707         [ 0x00 ] = KEY_POWER,           // Power
708
709         [ 0x03 ] = KEY_1,
710         [ 0x04 ] = KEY_2,
711         [ 0x05 ] = KEY_3,
712         [ 0x07 ] = KEY_4,
713         [ 0x08 ] = KEY_5,
714         [ 0x09 ] = KEY_6,
715         [ 0x0b ] = KEY_7,
716         [ 0x0c ] = KEY_8,
717         [ 0x0d ] = KEY_9,
718         [ 0x06 ] = KEY_AGAIN,           // Recall
719         [ 0x0f ] = KEY_0,
720         [ 0x10 ] = KEY_MUTE,            // Mute
721         [ 0x02 ] = KEY_RADIO,           // TV/Radio
722         [ 0x1b ] = KEY_LANGUAGE,                // SAP (Second Audio Program)
723
724         [ 0x14 ] = KEY_VOLUMEUP,                // VOL+
725         [ 0x17 ] = KEY_VOLUMEDOWN,      // VOL-
726         [ 0x12 ] = KEY_CHANNELUP,               // CH+
727         [ 0x13 ] = KEY_CHANNELDOWN,     // CH-
728         [ 0x1d ] = KEY_ENTER,           // Enter
729
730         [ 0x1a ] = KEY_MODE,            // PIP
731         [ 0x18 ] = KEY_TUNER,           // Source
732
733         [ 0x1e ] = KEY_RECORD,          // Record/Pause
734         [ 0x15 ] = KEY_ANGLE,           // Swap (no label on key)
735         [ 0x1c ] = KEY_PAUSE,           // Timeshift/Pause
736         [ 0x19 ] = KEY_BACK,            // Rewind <<
737         [ 0x0a ] = KEY_PLAYPAUSE,               // Play/Pause
738         [ 0x1f ] = KEY_FORWARD,         // Forward >>
739         [ 0x16 ] = KEY_PREVIOUS,                // Back |<<
740         [ 0x11 ] = KEY_STOP,            // Stop
741         [ 0x0e ] = KEY_NEXT,            // End >>|
742 };
743
744 EXPORT_SYMBOL_GPL(ir_codes_flydvb);
745
746 IR_KEYTAB_TYPE ir_codes_cinergy[IR_KEYTAB_SIZE] = {
747         [ 0x00 ] = KEY_0,
748         [ 0x01 ] = KEY_1,
749         [ 0x02 ] = KEY_2,
750         [ 0x03 ] = KEY_3,
751         [ 0x04 ] = KEY_4,
752         [ 0x05 ] = KEY_5,
753         [ 0x06 ] = KEY_6,
754         [ 0x07 ] = KEY_7,
755         [ 0x08 ] = KEY_8,
756         [ 0x09 ] = KEY_9,
757
758         [ 0x0a ] = KEY_POWER,
759         [ 0x0b ] = KEY_PROG1,           // app
760         [ 0x0c ] = KEY_ZOOM,            // zoom/fullscreen
761         [ 0x0d ] = KEY_CHANNELUP,       // channel
762         [ 0x0e ] = KEY_CHANNELDOWN,     // channel-
763         [ 0x0f ] = KEY_VOLUMEUP,
764         [ 0x10 ] = KEY_VOLUMEDOWN,
765         [ 0x11 ] = KEY_TUNER,           // AV
766         [ 0x12 ] = KEY_NUMLOCK,         // -/--
767         [ 0x13 ] = KEY_AUDIO,           // audio
768         [ 0x14 ] = KEY_MUTE,
769         [ 0x15 ] = KEY_UP,
770         [ 0x16 ] = KEY_DOWN,
771         [ 0x17 ] = KEY_LEFT,
772         [ 0x18 ] = KEY_RIGHT,
773         [ 0x19 ] = BTN_LEFT,
774         [ 0x1a ] = BTN_RIGHT,
775         [ 0x1b ] = KEY_WWW,             // text
776         [ 0x1c ] = KEY_REWIND,
777         [ 0x1d ] = KEY_FORWARD,
778         [ 0x1e ] = KEY_RECORD,
779         [ 0x1f ] = KEY_PLAY,
780         [ 0x20 ] = KEY_PREVIOUSSONG,
781         [ 0x21 ] = KEY_NEXTSONG,
782         [ 0x22 ] = KEY_PAUSE,
783         [ 0x23 ] = KEY_STOP,
784 };
785
786 EXPORT_SYMBOL_GPL(ir_codes_cinergy);
787
788 /* Alfons Geser <a.geser@cox.net>
789  * updates from Job D. R. Borges <jobdrb@ig.com.br> */
790 IR_KEYTAB_TYPE ir_codes_eztv[IR_KEYTAB_SIZE] = {
791         [ 0x12 ] = KEY_POWER,
792         [ 0x01 ] = KEY_TV,             // DVR
793         [ 0x15 ] = KEY_DVD,            // DVD
794         [ 0x17 ] = KEY_AUDIO,          // music
795                                      // DVR mode / DVD mode / music mode
796
797         [ 0x1b ] = KEY_MUTE,           // mute
798         [ 0x02 ] = KEY_LANGUAGE,       // MTS/SAP / audio / autoseek
799         [ 0x1e ] = KEY_SUBTITLE,       // closed captioning / subtitle / seek
800         [ 0x16 ] = KEY_ZOOM,           // full screen
801         [ 0x1c ] = KEY_VIDEO,          // video source / eject / delall
802         [ 0x1d ] = KEY_RESTART,        // playback / angle / del
803         [ 0x2f ] = KEY_SEARCH,         // scan / menu / playlist
804         [ 0x30 ] = KEY_CHANNEL,        // CH surfing / bookmark / memo
805
806         [ 0x31 ] = KEY_HELP,           // help
807         [ 0x32 ] = KEY_MODE,           // num/memo
808         [ 0x33 ] = KEY_ESC,            // cancel
809
810         [ 0x0c ] = KEY_UP,             // up
811         [ 0x10 ] = KEY_DOWN,           // down
812         [ 0x08 ] = KEY_LEFT,           // left
813         [ 0x04 ] = KEY_RIGHT,          // right
814         [ 0x03 ] = KEY_SELECT,         // select
815
816         [ 0x1f ] = KEY_REWIND,         // rewind
817         [ 0x20 ] = KEY_PLAYPAUSE,      // play/pause
818         [ 0x29 ] = KEY_FORWARD,        // forward
819         [ 0x14 ] = KEY_AGAIN,          // repeat
820         [ 0x2b ] = KEY_RECORD,         // recording
821         [ 0x2c ] = KEY_STOP,           // stop
822         [ 0x2d ] = KEY_PLAY,           // play
823         [ 0x2e ] = KEY_SHUFFLE,        // snapshot / shuffle
824
825         [ 0x00 ] = KEY_0,
826         [ 0x05 ] = KEY_1,
827         [ 0x06 ] = KEY_2,
828         [ 0x07 ] = KEY_3,
829         [ 0x09 ] = KEY_4,
830         [ 0x0a ] = KEY_5,
831         [ 0x0b ] = KEY_6,
832         [ 0x0d ] = KEY_7,
833         [ 0x0e ] = KEY_8,
834         [ 0x0f ] = KEY_9,
835
836         [ 0x2a ] = KEY_VOLUMEUP,
837         [ 0x11 ] = KEY_VOLUMEDOWN,
838         [ 0x18 ] = KEY_CHANNELUP,      // CH.tracking up
839         [ 0x19 ] = KEY_CHANNELDOWN,    // CH.tracking down
840
841         [ 0x13 ] = KEY_ENTER,        // enter
842         [ 0x21 ] = KEY_DOT,          // . (decimal dot)
843 };
844
845 EXPORT_SYMBOL_GPL(ir_codes_eztv);
846
847 /* Alex Hermann <gaaf@gmx.net> */
848 IR_KEYTAB_TYPE ir_codes_avermedia[IR_KEYTAB_SIZE] = {
849         [ 0x28 ] = KEY_1,
850         [ 0x18 ] = KEY_2,
851         [ 0x38 ] = KEY_3,
852         [ 0x24 ] = KEY_4,
853         [ 0x14 ] = KEY_5,
854         [ 0x34 ] = KEY_6,
855         [ 0x2c ] = KEY_7,
856         [ 0x1c ] = KEY_8,
857         [ 0x3c ] = KEY_9,
858         [ 0x22 ] = KEY_0,
859
860         [ 0x20 ] = KEY_TV,              /* TV/FM */
861         [ 0x10 ] = KEY_CD,              /* CD */
862         [ 0x30 ] = KEY_TEXT,            /* TELETEXT */
863         [ 0x00 ] = KEY_POWER,           /* POWER */
864
865         [ 0x08 ] = KEY_VIDEO,           /* VIDEO */
866         [ 0x04 ] = KEY_AUDIO,           /* AUDIO */
867         [ 0x0c ] = KEY_ZOOM,            /* FULL SCREEN */
868
869         [ 0x12 ] = KEY_SUBTITLE,        /* DISPLAY */
870         [ 0x32 ] = KEY_REWIND,          /* LOOP */
871         [ 0x02 ] = KEY_PRINT,           /* PREVIEW */
872
873         [ 0x2a ] = KEY_SEARCH,          /* AUTOSCAN */
874         [ 0x1a ] = KEY_SLEEP,           /* FREEZE */
875         [ 0x3a ] = KEY_SHUFFLE,         /* SNAPSHOT */
876         [ 0x0a ] = KEY_MUTE,            /* MUTE */
877
878         [ 0x26 ] = KEY_RECORD,          /* RECORD */
879         [ 0x16 ] = KEY_PAUSE,           /* PAUSE */
880         [ 0x36 ] = KEY_STOP,            /* STOP */
881         [ 0x06 ] = KEY_PLAY,            /* PLAY */
882
883         [ 0x2e ] = KEY_RED,             /* RED */
884         [ 0x21 ] = KEY_GREEN,           /* GREEN */
885         [ 0x0e ] = KEY_YELLOW,          /* YELLOW */
886         [ 0x01 ] = KEY_BLUE,            /* BLUE */
887
888         [ 0x1e ] = KEY_VOLUMEDOWN,      /* VOLUME- */
889         [ 0x3e ] = KEY_VOLUMEUP,        /* VOLUME+ */
890         [ 0x11 ] = KEY_CHANNELDOWN,     /* CHANNEL/PAGE- */
891         [ 0x31 ] = KEY_CHANNELUP        /* CHANNEL/PAGE+ */
892 };
893
894 EXPORT_SYMBOL_GPL(ir_codes_avermedia);
895
896 IR_KEYTAB_TYPE ir_codes_videomate_tv_pvr[IR_KEYTAB_SIZE] = {
897         [ 0x14 ] = KEY_MUTE,
898         [ 0x24 ] = KEY_ZOOM,
899
900         [ 0x01 ] = KEY_DVD,
901         [ 0x23 ] = KEY_RADIO,
902         [ 0x00 ] = KEY_TV,
903
904         [ 0x0a ] = KEY_REWIND,
905         [ 0x08 ] = KEY_PLAYPAUSE,
906         [ 0x0f ] = KEY_FORWARD,
907
908         [ 0x02 ] = KEY_PREVIOUS,
909         [ 0x07 ] = KEY_STOP,
910         [ 0x06 ] = KEY_NEXT,
911
912         [ 0x0c ] = KEY_UP,
913         [ 0x0e ] = KEY_DOWN,
914         [ 0x0b ] = KEY_LEFT,
915         [ 0x0d ] = KEY_RIGHT,
916         [ 0x11 ] = KEY_OK,
917
918         [ 0x03 ] = KEY_MENU,
919         [ 0x09 ] = KEY_SETUP,
920         [ 0x05 ] = KEY_VIDEO,
921         [ 0x22 ] = KEY_CHANNEL,
922
923         [ 0x12 ] = KEY_VOLUMEUP,
924         [ 0x15 ] = KEY_VOLUMEDOWN,
925         [ 0x10 ] = KEY_CHANNELUP,
926         [ 0x13 ] = KEY_CHANNELDOWN,
927
928         [ 0x04 ] = KEY_RECORD,
929
930         [ 0x16 ] = KEY_1,
931         [ 0x17 ] = KEY_2,
932         [ 0x18 ] = KEY_3,
933         [ 0x19 ] = KEY_4,
934         [ 0x1a ] = KEY_5,
935         [ 0x1b ] = KEY_6,
936         [ 0x1c ] = KEY_7,
937         [ 0x1d ] = KEY_8,
938         [ 0x1e ] = KEY_9,
939         [ 0x1f ] = KEY_0,
940
941         [ 0x20 ] = KEY_LANGUAGE,
942         [ 0x21 ] = KEY_SLEEP,
943 };
944
945 EXPORT_SYMBOL_GPL(ir_codes_videomate_tv_pvr);
946
947 /* Michael Tokarev <mjt@tls.msk.ru>
948    http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
949    keytable is used by MANLI MTV00[ 0x0c ] and BeholdTV 40[13] at
950    least, and probably other cards too.
951    The "ascii-art picture" below (in comments, first row
952    is the keycode in hex, and subsequent row(s) shows
953    the button labels (several variants when appropriate)
954    helps to descide which keycodes to assign to the buttons.
955  */
956 IR_KEYTAB_TYPE ir_codes_manli[IR_KEYTAB_SIZE] = {
957
958         /*  0x1c            0x12  *
959          * FUNCTION         POWER *
960          *   FM              (|)  *
961          *                        */
962         [ 0x1c ] = KEY_RADIO,   /*XXX*/
963         [ 0x12 ] = KEY_POWER,
964
965         /*  0x01    0x02    0x03  *
966          *   1       2       3    *
967          *                        *
968          *  0x04    0x05    0x06  *
969          *   4       5       6    *
970          *                        *
971          *  0x07    0x08    0x09  *
972          *   7       8       9    *
973          *                        */
974         [ 0x01 ] = KEY_1,
975         [ 0x02 ] = KEY_2,
976         [ 0x03 ] = KEY_3,
977         [ 0x04 ] = KEY_4,
978         [ 0x05 ] = KEY_5,
979         [ 0x06 ] = KEY_6,
980         [ 0x07 ] = KEY_7,
981         [ 0x08 ] = KEY_8,
982         [ 0x09 ] = KEY_9,
983
984         /*  0x0a    0x00    0x17  *
985          * RECALL    0      +100  *
986          *                  PLUS  *
987          *                        */
988         [ 0x0a ] = KEY_AGAIN,   /*XXX KEY_REWIND? */
989         [ 0x00 ] = KEY_0,
990         [ 0x17 ] = KEY_DIGITS,  /*XXX*/
991
992         /*  0x14            0x10  *
993          *  MENU            INFO  *
994          *  OSD                   */
995         [ 0x14 ] = KEY_MENU,
996         [ 0x10 ] = KEY_INFO,
997
998         /*          0x0b          *
999          *           Up           *
1000          *                        *
1001          *  0x18    0x16    0x0c  *
1002          *  Left     Ok     Right *
1003          *                        *
1004          *         0x015          *
1005          *         Down           *
1006          *                        */
1007         [ 0x0b ] = KEY_UP,      /*XXX KEY_SCROLLUP? */
1008         [ 0x18 ] = KEY_LEFT,    /*XXX KEY_BACK? */
1009         [ 0x16 ] = KEY_OK,      /*XXX KEY_SELECT? KEY_ENTER? */
1010         [ 0x0c ] = KEY_RIGHT,   /*XXX KEY_FORWARD? */
1011         [ 0x15 ] = KEY_DOWN,    /*XXX KEY_SCROLLDOWN? */
1012
1013         /*  0x11            0x0d  *
1014          *  TV/AV           MODE  *
1015          *  SOURCE         STEREO *
1016          *                        */
1017         [ 0x11 ] = KEY_TV,      /*XXX*/
1018         [ 0x0d ] = KEY_MODE,    /*XXX there's no KEY_STEREO */
1019
1020         /*  0x0f    0x1b    0x1a  *
1021          *  AUDIO   Vol+    Chan+ *
1022          *        TIMESHIFT???    *
1023          *                        *
1024          *  0x0e    0x1f    0x1e  *
1025          *  SLEEP   Vol-    Chan- *
1026          *                        */
1027         [ 0x0f ] = KEY_AUDIO,
1028         [ 0x1b ] = KEY_VOLUMEUP,
1029         [ 0x1a ] = KEY_CHANNELUP,
1030         [ 0x0e ] = KEY_SLEEP,   /*XXX maybe KEY_PAUSE */
1031         [ 0x1f ] = KEY_VOLUMEDOWN,
1032         [ 0x1e ] = KEY_CHANNELDOWN,
1033
1034         /*         0x13     0x19  *
1035          *         MUTE   SNAPSHOT*
1036          *                        */
1037         [ 0x13 ] = KEY_MUTE,
1038         [ 0x19 ] = KEY_RECORD,  /*XXX*/
1039
1040         // 0x1d unused ?
1041 };
1042
1043 EXPORT_SYMBOL_GPL(ir_codes_manli);
1044
1045 /* Mike Baikov <mike@baikov.com> */
1046 IR_KEYTAB_TYPE ir_codes_gotview7135[IR_KEYTAB_SIZE] = {
1047
1048         [ 0x21 ] = KEY_POWER,
1049         [ 0x69 ] = KEY_TV,
1050         [ 0x33 ] = KEY_0,
1051         [ 0x51 ] = KEY_1,
1052         [ 0x31 ] = KEY_2,
1053         [ 0x71 ] = KEY_3,
1054         [ 0x3b ] = KEY_4,
1055         [ 0x58 ] = KEY_5,
1056         [ 0x41 ] = KEY_6,
1057         [ 0x48 ] = KEY_7,
1058         [ 0x30 ] = KEY_8,
1059         [ 0x53 ] = KEY_9,
1060         [ 0x73 ] = KEY_AGAIN, /* LOOP */
1061         [ 0x0a ] = KEY_AUDIO,
1062         [ 0x61 ] = KEY_PRINT, /* PREVIEW */
1063         [ 0x7a ] = KEY_VIDEO,
1064         [ 0x20 ] = KEY_CHANNELUP,
1065         [ 0x40 ] = KEY_CHANNELDOWN,
1066         [ 0x18 ] = KEY_VOLUMEDOWN,
1067         [ 0x50 ] = KEY_VOLUMEUP,
1068         [ 0x10 ] = KEY_MUTE,
1069         [ 0x4a ] = KEY_SEARCH,
1070         [ 0x7b ] = KEY_SHUFFLE, /* SNAPSHOT */
1071         [ 0x22 ] = KEY_RECORD,
1072         [ 0x62 ] = KEY_STOP,
1073         [ 0x78 ] = KEY_PLAY,
1074         [ 0x39 ] = KEY_REWIND,
1075         [ 0x59 ] = KEY_PAUSE,
1076         [ 0x19 ] = KEY_FORWARD,
1077         [ 0x09 ] = KEY_ZOOM,
1078
1079         [ 0x52 ] = KEY_F21, /* LIVE TIMESHIFT */
1080         [ 0x1a ] = KEY_F22, /* MIN TIMESHIFT */
1081         [ 0x3a ] = KEY_F23, /* TIMESHIFT */
1082         [ 0x70 ] = KEY_F24, /* NORMAL TIMESHIFT */
1083 };
1084
1085 EXPORT_SYMBOL_GPL(ir_codes_gotview7135);
1086
1087 IR_KEYTAB_TYPE ir_codes_purpletv[IR_KEYTAB_SIZE] = {
1088         [ 0x03 ] = KEY_POWER,
1089         [ 0x6f ] = KEY_MUTE,
1090         [ 0x10 ] = KEY_BACKSPACE,       /* Recall */
1091
1092         [ 0x11 ] = KEY_0,
1093         [ 0x04 ] = KEY_1,
1094         [ 0x05 ] = KEY_2,
1095         [ 0x06 ] = KEY_3,
1096         [ 0x08 ] = KEY_4,
1097         [ 0x09 ] = KEY_5,
1098         [ 0x0a ] = KEY_6,
1099         [ 0x0c ] = KEY_7,
1100         [ 0x0d ] = KEY_8,
1101         [ 0x0e ] = KEY_9,
1102         [ 0x12 ] = KEY_DOT,           /* 100+ */
1103
1104         [ 0x07 ] = KEY_VOLUMEUP,
1105         [ 0x0b ] = KEY_VOLUMEDOWN,
1106         [ 0x1a ] = KEY_KPPLUS,
1107         [ 0x18 ] = KEY_KPMINUS,
1108         [ 0x15 ] = KEY_UP,
1109         [ 0x1d ] = KEY_DOWN,
1110         [ 0x0f ] = KEY_CHANNELUP,
1111         [ 0x13 ] = KEY_CHANNELDOWN,
1112         [ 0x48 ] = KEY_ZOOM,
1113
1114         [ 0x1b ] = KEY_VIDEO,           /* Video source */
1115         [ 0x49 ] = KEY_LANGUAGE,        /* MTS Select */
1116         [ 0x19 ] = KEY_SEARCH,          /* Auto Scan */
1117
1118         [ 0x4b ] = KEY_RECORD,
1119         [ 0x46 ] = KEY_PLAY,
1120         [ 0x45 ] = KEY_PAUSE,           /* Pause */
1121         [ 0x44 ] = KEY_STOP,
1122         [ 0x40 ] = KEY_FORWARD,         /* Forward ? */
1123         [ 0x42 ] = KEY_REWIND,          /* Backward ? */
1124
1125 };
1126
1127 EXPORT_SYMBOL_GPL(ir_codes_purpletv);
1128
1129 /* Mapping for the 28 key remote control as seen at
1130    http://www.sednacomputer.com/photo/cardbus-tv.jpg
1131    Pavel Mihaylov <bin@bash.info> */
1132 IR_KEYTAB_TYPE ir_codes_pctv_sedna[IR_KEYTAB_SIZE] = {
1133         [ 0x00 ] = KEY_0,
1134         [ 0x01 ] = KEY_1,
1135         [ 0x02 ] = KEY_2,
1136         [ 0x03 ] = KEY_3,
1137         [ 0x04 ] = KEY_4,
1138         [ 0x05 ] = KEY_5,
1139         [ 0x06 ] = KEY_6,
1140         [ 0x07 ] = KEY_7,
1141         [ 0x08 ] = KEY_8,
1142         [ 0x09 ] = KEY_9,
1143
1144         [ 0x0a ] = KEY_AGAIN,          /* Recall */
1145         [ 0x0b ] = KEY_CHANNELUP,
1146         [ 0x0c ] = KEY_VOLUMEUP,
1147         [ 0x0d ] = KEY_MODE,           /* Stereo */
1148         [ 0x0e ] = KEY_STOP,
1149         [ 0x0f ] = KEY_PREVIOUSSONG,
1150         [ 0x10 ] = KEY_ZOOM,
1151         [ 0x11 ] = KEY_TUNER,          /* Source */
1152         [ 0x12 ] = KEY_POWER,
1153         [ 0x13 ] = KEY_MUTE,
1154         [ 0x15 ] = KEY_CHANNELDOWN,
1155         [ 0x18 ] = KEY_VOLUMEDOWN,
1156         [ 0x19 ] = KEY_SHUFFLE,        /* Snapshot */
1157         [ 0x1a ] = KEY_NEXTSONG,
1158         [ 0x1b ] = KEY_TEXT,           /* Time Shift */
1159         [ 0x1c ] = KEY_RADIO,          /* FM Radio */
1160         [ 0x1d ] = KEY_RECORD,
1161         [ 0x1e ] = KEY_PAUSE,
1162 };
1163
1164 EXPORT_SYMBOL_GPL(ir_codes_pctv_sedna);
1165
1166 /* Mark Phalan <phalanm@o2.ie> */
1167 IR_KEYTAB_TYPE ir_codes_pv951[IR_KEYTAB_SIZE] = {
1168         [ 0x00 ] = KEY_0,
1169         [ 0x01 ] = KEY_1,
1170         [ 0x02 ] = KEY_2,
1171         [ 0x03 ] = KEY_3,
1172         [ 0x04 ] = KEY_4,
1173         [ 0x05 ] = KEY_5,
1174         [ 0x06 ] = KEY_6,
1175         [ 0x07 ] = KEY_7,
1176         [ 0x08 ] = KEY_8,
1177         [ 0x09 ] = KEY_9,
1178
1179         [ 0x12 ] = KEY_POWER,
1180         [ 0x10 ] = KEY_MUTE,
1181         [ 0x1f ] = KEY_VOLUMEDOWN,
1182         [ 0x1b ] = KEY_VOLUMEUP,
1183         [ 0x1a ] = KEY_CHANNELUP,
1184         [ 0x1e ] = KEY_CHANNELDOWN,
1185         [ 0x0e ] = KEY_PAGEUP,
1186         [ 0x1d ] = KEY_PAGEDOWN,
1187         [ 0x13 ] = KEY_SOUND,
1188
1189         [ 0x18 ] = KEY_KPPLUSMINUS,     /* CH +/- */
1190         [ 0x16 ] = KEY_SUBTITLE,                /* CC */
1191         [ 0x0d ] = KEY_TEXT,            /* TTX */
1192         [ 0x0b ] = KEY_TV,              /* AIR/CBL */
1193         [ 0x11 ] = KEY_PC,              /* PC/TV */
1194         [ 0x17 ] = KEY_OK,              /* CH RTN */
1195         [ 0x19 ] = KEY_MODE,            /* FUNC */
1196         [ 0x0c ] = KEY_SEARCH,          /* AUTOSCAN */
1197
1198         /* Not sure what to do with these ones! */
1199         [ 0x0f ] = KEY_SELECT,          /* SOURCE */
1200         [ 0x0a ] = KEY_KPPLUS,          /* +100 */
1201         [ 0x14 ] = KEY_EQUAL,           /* SYNC */
1202         [ 0x1c ] = KEY_MEDIA,             /* PC/TV */
1203 };
1204
1205 EXPORT_SYMBOL_GPL(ir_codes_pv951);
1206
1207 /* generic RC5 keytable                                          */
1208 /* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1209 /* used by old (black) Hauppauge remotes                         */
1210 IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE] = {
1211         /* Keys 0 to 9 */
1212         [ 0x00 ] = KEY_0,
1213         [ 0x01 ] = KEY_1,
1214         [ 0x02 ] = KEY_2,
1215         [ 0x03 ] = KEY_3,
1216         [ 0x04 ] = KEY_4,
1217         [ 0x05 ] = KEY_5,
1218         [ 0x06 ] = KEY_6,
1219         [ 0x07 ] = KEY_7,
1220         [ 0x08 ] = KEY_8,
1221         [ 0x09 ] = KEY_9,
1222
1223         [ 0x0b ] = KEY_CHANNEL,         /* channel / program (japan: 11) */
1224         [ 0x0c ] = KEY_POWER,           /* standby */
1225         [ 0x0d ] = KEY_MUTE,            /* mute / demute */
1226         [ 0x0f ] = KEY_TV,              /* display */
1227         [ 0x10 ] = KEY_VOLUMEUP,
1228         [ 0x11 ] = KEY_VOLUMEDOWN,
1229         [ 0x12 ] = KEY_BRIGHTNESSUP,
1230         [ 0x13 ] = KEY_BRIGHTNESSDOWN,
1231         [ 0x1e ] = KEY_SEARCH,          /* search + */
1232         [ 0x20 ] = KEY_CHANNELUP,       /* channel / program + */
1233         [ 0x21 ] = KEY_CHANNELDOWN,     /* channel / program - */
1234         [ 0x22 ] = KEY_CHANNEL,         /* alt / channel */
1235         [ 0x23 ] = KEY_LANGUAGE,        /* 1st / 2nd language */
1236         [ 0x26 ] = KEY_SLEEP,           /* sleeptimer */
1237         [ 0x2e ] = KEY_MENU,            /* 2nd controls (USA: menu) */
1238         [ 0x30 ] = KEY_PAUSE,
1239         [ 0x32 ] = KEY_REWIND,
1240         [ 0x33 ] = KEY_GOTO,
1241         [ 0x35 ] = KEY_PLAY,
1242         [ 0x36 ] = KEY_STOP,
1243         [ 0x37 ] = KEY_RECORD,          /* recording */
1244         [ 0x3c ] = KEY_TEXT,            /* teletext submode (Japan: 12) */
1245         [ 0x3d ] = KEY_SUSPEND,         /* system standby */
1246
1247 };
1248
1249 EXPORT_SYMBOL_GPL(ir_codes_rc5_tv);
1250
1251 /* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
1252 IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE] = {
1253         /* Keys 0 to 9 */
1254         [ 0x12 ] = KEY_0,
1255         [ 0x05 ] = KEY_1,
1256         [ 0x06 ] = KEY_2,
1257         [ 0x07 ] = KEY_3,
1258         [ 0x09 ] = KEY_4,
1259         [ 0x0a ] = KEY_5,
1260         [ 0x0b ] = KEY_6,
1261         [ 0x0d ] = KEY_7,
1262         [ 0x0e ] = KEY_8,
1263         [ 0x0f ] = KEY_9,
1264
1265         [ 0x00 ] = KEY_POWER,
1266         [ 0x02 ] = KEY_TUNER,           /* TV/FM */
1267         [ 0x1e ] = KEY_VIDEO,
1268         [ 0x04 ] = KEY_VOLUMEUP,
1269         [ 0x08 ] = KEY_VOLUMEDOWN,
1270         [ 0x0c ] = KEY_CHANNELUP,
1271         [ 0x10 ] = KEY_CHANNELDOWN,
1272         [ 0x03 ] = KEY_ZOOM,            /* fullscreen */
1273         [ 0x1f ] = KEY_SUBTITLE,                /* closed caption/teletext */
1274         [ 0x20 ] = KEY_SLEEP,
1275         [ 0x14 ] = KEY_MUTE,
1276         [ 0x2b ] = KEY_RED,
1277         [ 0x2c ] = KEY_GREEN,
1278         [ 0x2d ] = KEY_YELLOW,
1279         [ 0x2e ] = KEY_BLUE,
1280         [ 0x18 ] = KEY_KPPLUS,          /* fine tune + */
1281         [ 0x19 ] = KEY_KPMINUS,         /* fine tune - */
1282         [ 0x21 ] = KEY_DOT,
1283         [ 0x13 ] = KEY_ENTER,
1284         [ 0x22 ] = KEY_BACK,
1285         [ 0x23 ] = KEY_PLAYPAUSE,
1286         [ 0x24 ] = KEY_NEXT,
1287         [ 0x26 ] = KEY_STOP,
1288         [ 0x27 ] = KEY_RECORD
1289 };
1290
1291 EXPORT_SYMBOL_GPL(ir_codes_winfast);
1292
1293 IR_KEYTAB_TYPE ir_codes_pinnacle[IR_KEYTAB_SIZE] = {
1294         [ 0x59 ] = KEY_MUTE,
1295         [ 0x4a ] = KEY_POWER,
1296
1297         [ 0x18 ] = KEY_TEXT,
1298         [ 0x26 ] = KEY_TV,
1299         [ 0x3d ] = KEY_PRINT,
1300
1301         [ 0x48 ] = KEY_RED,
1302         [ 0x04 ] = KEY_GREEN,
1303         [ 0x11 ] = KEY_YELLOW,
1304         [ 0x00 ] = KEY_BLUE,
1305
1306         [ 0x2d ] = KEY_VOLUMEUP,
1307         [ 0x1e ] = KEY_VOLUMEDOWN,
1308
1309         [ 0x49 ] = KEY_MENU,
1310
1311         [ 0x16 ] = KEY_CHANNELUP,
1312         [ 0x17 ] = KEY_CHANNELDOWN,
1313
1314         [ 0x20 ] = KEY_UP,
1315         [ 0x21 ] = KEY_DOWN,
1316         [ 0x22 ] = KEY_LEFT,
1317         [ 0x23 ] = KEY_RIGHT,
1318         [ 0x0d ] = KEY_SELECT,
1319
1320
1321
1322         [ 0x08 ] = KEY_BACK,
1323         [ 0x07 ] = KEY_REFRESH,
1324
1325         [ 0x2f ] = KEY_ZOOM,
1326         [ 0x29 ] = KEY_RECORD,
1327
1328         [ 0x4b ] = KEY_PAUSE,
1329         [ 0x4d ] = KEY_REWIND,
1330         [ 0x2e ] = KEY_PLAY,
1331         [ 0x4e ] = KEY_FORWARD,
1332         [ 0x53 ] = KEY_PREVIOUS,
1333         [ 0x4c ] = KEY_STOP,
1334         [ 0x54 ] = KEY_NEXT,
1335
1336         [ 0x69 ] = KEY_0,
1337         [ 0x6a ] = KEY_1,
1338         [ 0x6b ] = KEY_2,
1339         [ 0x6c ] = KEY_3,
1340         [ 0x6d ] = KEY_4,
1341         [ 0x6e ] = KEY_5,
1342         [ 0x6f ] = KEY_6,
1343         [ 0x70 ] = KEY_7,
1344         [ 0x71 ] = KEY_8,
1345         [ 0x72 ] = KEY_9,
1346
1347         [ 0x74 ] = KEY_CHANNEL,
1348         [ 0x0a ] = KEY_BACKSPACE,
1349 };
1350
1351 EXPORT_SYMBOL_GPL(ir_codes_pinnacle);
1352
1353 /* Hauppauge: the newer, gray remotes (seems there are multiple
1354  * slightly different versions), shipped with cx88+ivtv cards.
1355  * almost rc5 coding, but some non-standard keys */
1356 IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
1357         /* Keys 0 to 9 */
1358         [ 0x00 ] = KEY_0,
1359         [ 0x01 ] = KEY_1,
1360         [ 0x02 ] = KEY_2,
1361         [ 0x03 ] = KEY_3,
1362         [ 0x04 ] = KEY_4,
1363         [ 0x05 ] = KEY_5,
1364         [ 0x06 ] = KEY_6,
1365         [ 0x07 ] = KEY_7,
1366         [ 0x08 ] = KEY_8,
1367         [ 0x09 ] = KEY_9,
1368
1369         [ 0x0a ] = KEY_TEXT,            /* keypad asterisk as well */
1370         [ 0x0b ] = KEY_RED,             /* red button */
1371         [ 0x0c ] = KEY_RADIO,
1372         [ 0x0d ] = KEY_MENU,
1373         [ 0x0e ] = KEY_SUBTITLE,        /* also the # key */
1374         [ 0x0f ] = KEY_MUTE,
1375         [ 0x10 ] = KEY_VOLUMEUP,
1376         [ 0x11 ] = KEY_VOLUMEDOWN,
1377         [ 0x12 ] = KEY_PREVIOUS,        /* previous channel */
1378         [ 0x14 ] = KEY_UP,
1379         [ 0x15 ] = KEY_DOWN,
1380         [ 0x16 ] = KEY_LEFT,
1381         [ 0x17 ] = KEY_RIGHT,
1382         [ 0x18 ] = KEY_VIDEO,           /* Videos */
1383         [ 0x19 ] = KEY_AUDIO,           /* Music */
1384         /* 0x1a: Pictures - presume this means
1385            "Multimedia Home Platform" -
1386            no "PICTURES" key in input.h
1387          */
1388         [ 0x1a ] = KEY_MHP,
1389
1390         [ 0x1b ] = KEY_EPG,             /* Guide */
1391         [ 0x1c ] = KEY_TV,
1392         [ 0x1e ] = KEY_NEXTSONG,        /* skip >| */
1393         [ 0x1f ] = KEY_EXIT,            /* back/exit */
1394         [ 0x20 ] = KEY_CHANNELUP,       /* channel / program + */
1395         [ 0x21 ] = KEY_CHANNELDOWN,     /* channel / program - */
1396         [ 0x22 ] = KEY_CHANNEL,         /* source (old black remote) */
1397         [ 0x24 ] = KEY_PREVIOUSSONG,    /* replay |< */
1398         [ 0x25 ] = KEY_ENTER,           /* OK */
1399         [ 0x26 ] = KEY_SLEEP,           /* minimize (old black remote) */
1400         [ 0x29 ] = KEY_BLUE,            /* blue key */
1401         [ 0x2e ] = KEY_GREEN,           /* green button */
1402         [ 0x30 ] = KEY_PAUSE,           /* pause */
1403         [ 0x32 ] = KEY_REWIND,          /* backward << */
1404         [ 0x34 ] = KEY_FASTFORWARD,     /* forward >> */
1405         [ 0x35 ] = KEY_PLAY,
1406         [ 0x36 ] = KEY_STOP,
1407         [ 0x37 ] = KEY_RECORD,          /* recording */
1408         [ 0x38 ] = KEY_YELLOW,          /* yellow key */
1409         [ 0x3b ] = KEY_SELECT,          /* top right button */
1410         [ 0x3c ] = KEY_ZOOM,            /* full */
1411         [ 0x3d ] = KEY_POWER,           /* system power (green button) */
1412 };
1413
1414 EXPORT_SYMBOL_GPL(ir_codes_hauppauge_new);
1415