]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/media/IR/ir-keymaps.c
V4L/DVB: ir-core: Add a macro to properly create IR tables
[net-next-2.6.git] / drivers / media / IR / ir-keymaps.c
CommitLineData
4c0f631e 1/*
7f9d6913
MCC
2 Keytables for supported remote controls, used on drivers/media
3 devices.
4c0f631e
RC
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
7f9d6913 18*/
4c0f631e 19
7f9d6913
MCC
20/*
21 * NOTICE FOR DEVELOPERS:
22 * The IR mappings should be as close as possible to what's
23 * specified at:
24 * http://linuxtv.org/wiki/index.php/Remote_Controllers
4c0f631e
RC
25 */
26#include <linux/module.h>
4c0f631e
RC
27
28#include <linux/input.h>
29#include <media/ir-common.h>
30
2915e5ef
MCC
31
32/*
33 * The usage of tables with just the command part is deprecated.
34 * All new IR keytables should contain address+command and need
35 * to define the proper IR_TYPE (IR_TYPE_RC5/IR_TYPE_NEC).
36 * The deprecated tables should use IR_TYPE_UNKNOWN
37 */
38#define IR_TABLE(irname, type, tabname) \
39struct ir_scancode_table tabname ## _table = { \
40 .scan = tabname, \
41 .size = ARRAY_SIZE(tabname), \
42 .ir_type = type, \
43 .name = #irname, \
44}; \
45EXPORT_SYMBOL_GPL(tabname ## _table)
46
47
4c0f631e 48/* empty keytable, can be used as placeholder for not-yet created keytables */
715a2233
MCC
49static struct ir_scancode ir_codes_empty[] = {
50 { 0x2a, KEY_COFFEE },
4c0f631e 51};
2915e5ef 52IR_TABLE(empty, IR_TYPE_UNKNOWN, ir_codes_empty);
4c0f631e 53
b04c1baf 54/* Michal Majchrowicz <mmajchrowicz@gmail.com> */
715a2233 55static struct ir_scancode ir_codes_proteus_2309[] = {
b04c1baf 56 /* numeric */
715a2233
MCC
57 { 0x00, KEY_0 },
58 { 0x01, KEY_1 },
59 { 0x02, KEY_2 },
60 { 0x03, KEY_3 },
61 { 0x04, KEY_4 },
62 { 0x05, KEY_5 },
63 { 0x06, KEY_6 },
64 { 0x07, KEY_7 },
65 { 0x08, KEY_8 },
66 { 0x09, KEY_9 },
67
68 { 0x5c, KEY_POWER }, /* power */
69 { 0x20, KEY_ZOOM }, /* full screen */
70 { 0x0f, KEY_BACKSPACE }, /* recall */
71 { 0x1b, KEY_ENTER }, /* mute */
72 { 0x41, KEY_RECORD }, /* record */
73 { 0x43, KEY_STOP }, /* stop */
74 { 0x16, KEY_S },
75 { 0x1a, KEY_POWER2 }, /* off */
76 { 0x2e, KEY_RED },
77 { 0x1f, KEY_CHANNELDOWN }, /* channel - */
78 { 0x1c, KEY_CHANNELUP }, /* channel + */
79 { 0x10, KEY_VOLUMEDOWN }, /* volume - */
80 { 0x1e, KEY_VOLUMEUP }, /* volume + */
81 { 0x14, KEY_F1 },
82};
2915e5ef 83IR_TABLE(proteus_2309, IR_TYPE_UNKNOWN, ir_codes_proteus_2309);
a83520f4 84
4c0f631e 85/* Matt Jesson <dvb@jesson.eclipse.co.uk */
715a2233
MCC
86static struct ir_scancode ir_codes_avermedia_dvbt[] = {
87 { 0x28, KEY_0 }, /* '0' / 'enter' */
88 { 0x22, KEY_1 }, /* '1' */
89 { 0x12, KEY_2 }, /* '2' / 'up arrow' */
90 { 0x32, KEY_3 }, /* '3' */
91 { 0x24, KEY_4 }, /* '4' / 'left arrow' */
92 { 0x14, KEY_5 }, /* '5' */
93 { 0x34, KEY_6 }, /* '6' / 'right arrow' */
94 { 0x26, KEY_7 }, /* '7' */
95 { 0x16, KEY_8 }, /* '8' / 'down arrow' */
96 { 0x36, KEY_9 }, /* '9' */
97
98 { 0x20, KEY_LIST }, /* 'source' */
99 { 0x10, KEY_TEXT }, /* 'teletext' */
100 { 0x00, KEY_POWER }, /* 'power' */
101 { 0x04, KEY_AUDIO }, /* 'audio' */
102 { 0x06, KEY_ZOOM }, /* 'full screen' */
103 { 0x18, KEY_VIDEO }, /* 'display' */
104 { 0x38, KEY_SEARCH }, /* 'loop' */
105 { 0x08, KEY_INFO }, /* 'preview' */
106 { 0x2a, KEY_REWIND }, /* 'backward <<' */
107 { 0x1a, KEY_FASTFORWARD }, /* 'forward >>' */
108 { 0x3a, KEY_RECORD }, /* 'capture' */
109 { 0x0a, KEY_MUTE }, /* 'mute' */
110 { 0x2c, KEY_RECORD }, /* 'record' */
111 { 0x1c, KEY_PAUSE }, /* 'pause' */
112 { 0x3c, KEY_STOP }, /* 'stop' */
113 { 0x0c, KEY_PLAY }, /* 'play' */
114 { 0x2e, KEY_RED }, /* 'red' */
115 { 0x01, KEY_BLUE }, /* 'blue' / 'cancel' */
116 { 0x0e, KEY_YELLOW }, /* 'yellow' / 'ok' */
117 { 0x21, KEY_GREEN }, /* 'green' */
118 { 0x11, KEY_CHANNELDOWN }, /* 'channel -' */
119 { 0x31, KEY_CHANNELUP }, /* 'channel +' */
120 { 0x1e, KEY_VOLUMEDOWN }, /* 'volume -' */
121 { 0x3e, KEY_VOLUMEUP }, /* 'volume +' */
122};
2915e5ef 123IR_TABLE(avermedia_dvbt, IR_TYPE_UNKNOWN, ir_codes_avermedia_dvbt);
4c0f631e 124
36f6bb97 125/* Mauro Carvalho Chehab <mchehab@infradead.org> */
715a2233
MCC
126static struct ir_scancode ir_codes_avermedia_m135a[] = {
127 { 0x00, KEY_POWER2 },
128 { 0x2e, KEY_DOT }, /* '.' */
129 { 0x01, KEY_MODE }, /* TV/FM */
130
131 { 0x05, KEY_1 },
132 { 0x06, KEY_2 },
133 { 0x07, KEY_3 },
134 { 0x09, KEY_4 },
135 { 0x0a, KEY_5 },
136 { 0x0b, KEY_6 },
137 { 0x0d, KEY_7 },
138 { 0x0e, KEY_8 },
139 { 0x0f, KEY_9 },
140 { 0x11, KEY_0 },
141
142 { 0x13, KEY_RIGHT }, /* -> */
143 { 0x12, KEY_LEFT }, /* <- */
144
145 { 0x17, KEY_SLEEP }, /* Capturar Imagem */
146 { 0x10, KEY_SHUFFLE }, /* Amostra */
36f6bb97
MCC
147
148 /* FIXME: The keys bellow aren't ok */
149
715a2233
MCC
150 { 0x43, KEY_CHANNELUP },
151 { 0x42, KEY_CHANNELDOWN },
152 { 0x1f, KEY_VOLUMEUP },
153 { 0x1e, KEY_VOLUMEDOWN },
154 { 0x0c, KEY_ENTER },
36f6bb97 155
715a2233
MCC
156 { 0x14, KEY_MUTE },
157 { 0x08, KEY_AUDIO },
36f6bb97 158
715a2233
MCC
159 { 0x03, KEY_TEXT },
160 { 0x04, KEY_EPG },
161 { 0x2b, KEY_TV2 }, /* TV2 */
36f6bb97 162
715a2233
MCC
163 { 0x1d, KEY_RED },
164 { 0x1c, KEY_YELLOW },
165 { 0x41, KEY_GREEN },
166 { 0x40, KEY_BLUE },
36f6bb97 167
715a2233
MCC
168 { 0x1a, KEY_PLAYPAUSE },
169 { 0x19, KEY_RECORD },
170 { 0x18, KEY_PLAY },
171 { 0x1b, KEY_STOP },
36f6bb97 172};
2915e5ef 173IR_TABLE(avermedia_m135a, IR_TYPE_UNKNOWN, ir_codes_avermedia_m135a);
36f6bb97 174
cb3bf504 175/* Oldrich Jedlicka <oldium.pro@seznam.cz> */
715a2233
MCC
176static struct ir_scancode ir_codes_avermedia_cardbus[] = {
177 { 0x00, KEY_POWER },
178 { 0x01, KEY_TUNER }, /* TV/FM */
179 { 0x03, KEY_TEXT }, /* Teletext */
180 { 0x04, KEY_EPG },
181 { 0x05, KEY_1 },
182 { 0x06, KEY_2 },
183 { 0x07, KEY_3 },
184 { 0x08, KEY_AUDIO },
185 { 0x09, KEY_4 },
186 { 0x0a, KEY_5 },
187 { 0x0b, KEY_6 },
188 { 0x0c, KEY_ZOOM }, /* Full screen */
189 { 0x0d, KEY_7 },
190 { 0x0e, KEY_8 },
191 { 0x0f, KEY_9 },
192 { 0x10, KEY_PAGEUP }, /* 16-CH PREV */
193 { 0x11, KEY_0 },
194 { 0x12, KEY_INFO },
195 { 0x13, KEY_AGAIN }, /* CH RTN - channel return */
196 { 0x14, KEY_MUTE },
197 { 0x15, KEY_EDIT }, /* Autoscan */
198 { 0x17, KEY_SAVE }, /* Screenshot */
199 { 0x18, KEY_PLAYPAUSE },
200 { 0x19, KEY_RECORD },
201 { 0x1a, KEY_PLAY },
202 { 0x1b, KEY_STOP },
203 { 0x1c, KEY_FASTFORWARD },
204 { 0x1d, KEY_REWIND },
205 { 0x1e, KEY_VOLUMEDOWN },
206 { 0x1f, KEY_VOLUMEUP },
207 { 0x22, KEY_SLEEP }, /* Sleep */
208 { 0x23, KEY_ZOOM }, /* Aspect */
209 { 0x26, KEY_SCREEN }, /* Pos */
210 { 0x27, KEY_ANGLE }, /* Size */
211 { 0x28, KEY_SELECT }, /* Select */
212 { 0x29, KEY_BLUE }, /* Blue/Picture */
213 { 0x2a, KEY_BACKSPACE }, /* Back */
214 { 0x2b, KEY_MEDIA }, /* PIP (Picture-in-picture) */
215 { 0x2c, KEY_DOWN },
216 { 0x2e, KEY_DOT },
217 { 0x2f, KEY_TV }, /* Live TV */
218 { 0x32, KEY_LEFT },
219 { 0x33, KEY_CLEAR }, /* Clear */
220 { 0x35, KEY_RED }, /* Red/TV */
221 { 0x36, KEY_UP },
222 { 0x37, KEY_HOME }, /* Home */
223 { 0x39, KEY_GREEN }, /* Green/Video */
224 { 0x3d, KEY_YELLOW }, /* Yellow/Music */
225 { 0x3e, KEY_OK }, /* Ok */
226 { 0x3f, KEY_RIGHT },
227 { 0x40, KEY_NEXT }, /* Next */
228 { 0x41, KEY_PREVIOUS }, /* Previous */
229 { 0x42, KEY_CHANNELDOWN }, /* Channel down */
230 { 0x43, KEY_CHANNELUP }, /* Channel up */
231};
2915e5ef 232IR_TABLE(avermedia_cardbus, IR_TYPE_UNKNOWN, ir_codes_avermedia_cardbus);
cb3bf504 233
4c0f631e 234/* Attila Kondoros <attila.kondoros@chello.hu> */
715a2233
MCC
235static struct ir_scancode ir_codes_apac_viewcomp[] = {
236
237 { 0x01, KEY_1 },
238 { 0x02, KEY_2 },
239 { 0x03, KEY_3 },
240 { 0x04, KEY_4 },
241 { 0x05, KEY_5 },
242 { 0x06, KEY_6 },
243 { 0x07, KEY_7 },
244 { 0x08, KEY_8 },
245 { 0x09, KEY_9 },
246 { 0x00, KEY_0 },
247 { 0x17, KEY_LAST }, /* +100 */
248 { 0x0a, KEY_LIST }, /* recall */
249
250
251 { 0x1c, KEY_TUNER }, /* TV/FM */
252 { 0x15, KEY_SEARCH }, /* scan */
253 { 0x12, KEY_POWER }, /* power */
254 { 0x1f, KEY_VOLUMEDOWN }, /* vol up */
255 { 0x1b, KEY_VOLUMEUP }, /* vol down */
256 { 0x1e, KEY_CHANNELDOWN }, /* chn up */
257 { 0x1a, KEY_CHANNELUP }, /* chn down */
258
259 { 0x11, KEY_VIDEO }, /* video */
260 { 0x0f, KEY_ZOOM }, /* full screen */
261 { 0x13, KEY_MUTE }, /* mute/unmute */
262 { 0x10, KEY_TEXT }, /* min */
263
264 { 0x0d, KEY_STOP }, /* freeze */
265 { 0x0e, KEY_RECORD }, /* record */
266 { 0x1d, KEY_PLAYPAUSE }, /* stop */
267 { 0x19, KEY_PLAY }, /* play */
268
269 { 0x16, KEY_GOTO }, /* osd */
270 { 0x14, KEY_REFRESH }, /* default */
271 { 0x0c, KEY_KPPLUS }, /* fine tune >>>> */
272 { 0x18, KEY_KPMINUS }, /* fine tune <<<< */
273};
2915e5ef 274IR_TABLE(apac_viewcomp, IR_TYPE_UNKNOWN, ir_codes_apac_viewcomp);
4c0f631e
RC
275
276/* ---------------------------------------------------------------------- */
277
715a2233 278static struct ir_scancode ir_codes_pixelview[] = {
4c0f631e 279
715a2233
MCC
280 { 0x1e, KEY_POWER }, /* power */
281 { 0x07, KEY_MEDIA }, /* source */
282 { 0x1c, KEY_SEARCH }, /* scan */
3b82bddb
MCC
283
284
715a2233 285 { 0x03, KEY_TUNER }, /* TV/FM */
3b82bddb 286
715a2233
MCC
287 { 0x00, KEY_RECORD },
288 { 0x08, KEY_STOP },
289 { 0x11, KEY_PLAY },
3b82bddb 290
715a2233
MCC
291 { 0x1a, KEY_PLAYPAUSE }, /* freeze */
292 { 0x19, KEY_ZOOM }, /* zoom */
293 { 0x0f, KEY_TEXT }, /* min */
3b82bddb 294
715a2233
MCC
295 { 0x01, KEY_1 },
296 { 0x0b, KEY_2 },
297 { 0x1b, KEY_3 },
298 { 0x05, KEY_4 },
299 { 0x09, KEY_5 },
300 { 0x15, KEY_6 },
301 { 0x06, KEY_7 },
302 { 0x0a, KEY_8 },
303 { 0x12, KEY_9 },
304 { 0x02, KEY_0 },
305 { 0x10, KEY_LAST }, /* +100 */
306 { 0x13, KEY_LIST }, /* recall */
3b82bddb 307
715a2233
MCC
308 { 0x1f, KEY_CHANNELUP }, /* chn down */
309 { 0x17, KEY_CHANNELDOWN }, /* chn up */
310 { 0x16, KEY_VOLUMEUP }, /* vol down */
311 { 0x14, KEY_VOLUMEDOWN }, /* vol up */
3b82bddb 312
715a2233
MCC
313 { 0x04, KEY_KPMINUS }, /* <<< */
314 { 0x0e, KEY_SETUP }, /* function */
315 { 0x0c, KEY_KPPLUS }, /* >>> */
3b82bddb 316
715a2233
MCC
317 { 0x0d, KEY_GOTO }, /* mts */
318 { 0x1d, KEY_REFRESH }, /* reset */
319 { 0x18, KEY_MUTE }, /* mute/unmute */
4c0f631e 320};
2915e5ef 321IR_TABLE(pixelview, IR_TYPE_UNKNOWN, ir_codes_pixelview);
4c0f631e 322
7f0dd179
MCC
323/*
324 Mauro Carvalho Chehab <mchehab@infradead.org>
325 present on PV MPEG 8000GT
326 */
715a2233
MCC
327static struct ir_scancode ir_codes_pixelview_new[] = {
328 { 0x3c, KEY_TIME }, /* Timeshift */
329 { 0x12, KEY_POWER },
330
331 { 0x3d, KEY_1 },
332 { 0x38, KEY_2 },
333 { 0x18, KEY_3 },
334 { 0x35, KEY_4 },
335 { 0x39, KEY_5 },
336 { 0x15, KEY_6 },
337 { 0x36, KEY_7 },
338 { 0x3a, KEY_8 },
339 { 0x1e, KEY_9 },
340 { 0x3e, KEY_0 },
341
342 { 0x1c, KEY_AGAIN }, /* LOOP */
343 { 0x3f, KEY_MEDIA }, /* Source */
344 { 0x1f, KEY_LAST }, /* +100 */
345 { 0x1b, KEY_MUTE },
346
347 { 0x17, KEY_CHANNELDOWN },
348 { 0x16, KEY_CHANNELUP },
349 { 0x10, KEY_VOLUMEUP },
350 { 0x14, KEY_VOLUMEDOWN },
351 { 0x13, KEY_ZOOM },
352
353 { 0x19, KEY_CAMERA }, /* SNAPSHOT */
354 { 0x1a, KEY_SEARCH }, /* scan */
355
356 { 0x37, KEY_REWIND }, /* << */
357 { 0x32, KEY_RECORD }, /* o (red) */
358 { 0x33, KEY_FORWARD }, /* >> */
359 { 0x11, KEY_STOP }, /* square */
360 { 0x3b, KEY_PLAY }, /* > */
361 { 0x30, KEY_PLAYPAUSE }, /* || */
362
363 { 0x31, KEY_TV },
364 { 0x34, KEY_RADIO },
365};
2915e5ef 366IR_TABLE(pixelview_new, IR_TYPE_UNKNOWN, ir_codes_pixelview_new);
715a2233
MCC
367
368static struct ir_scancode ir_codes_nebula[] = {
369 { 0x00, KEY_0 },
370 { 0x01, KEY_1 },
371 { 0x02, KEY_2 },
372 { 0x03, KEY_3 },
373 { 0x04, KEY_4 },
374 { 0x05, KEY_5 },
375 { 0x06, KEY_6 },
376 { 0x07, KEY_7 },
377 { 0x08, KEY_8 },
378 { 0x09, KEY_9 },
379 { 0x0a, KEY_TV },
380 { 0x0b, KEY_AUX },
381 { 0x0c, KEY_DVD },
382 { 0x0d, KEY_POWER },
383 { 0x0e, KEY_MHP }, /* labelled 'Picture' */
384 { 0x0f, KEY_AUDIO },
385 { 0x10, KEY_INFO },
386 { 0x11, KEY_F13 }, /* 16:9 */
387 { 0x12, KEY_F14 }, /* 14:9 */
388 { 0x13, KEY_EPG },
389 { 0x14, KEY_EXIT },
390 { 0x15, KEY_MENU },
391 { 0x16, KEY_UP },
392 { 0x17, KEY_DOWN },
393 { 0x18, KEY_LEFT },
394 { 0x19, KEY_RIGHT },
395 { 0x1a, KEY_ENTER },
396 { 0x1b, KEY_CHANNELUP },
397 { 0x1c, KEY_CHANNELDOWN },
398 { 0x1d, KEY_VOLUMEUP },
399 { 0x1e, KEY_VOLUMEDOWN },
400 { 0x1f, KEY_RED },
401 { 0x20, KEY_GREEN },
402 { 0x21, KEY_YELLOW },
403 { 0x22, KEY_BLUE },
404 { 0x23, KEY_SUBTITLE },
405 { 0x24, KEY_F15 }, /* AD */
406 { 0x25, KEY_TEXT },
407 { 0x26, KEY_MUTE },
408 { 0x27, KEY_REWIND },
409 { 0x28, KEY_STOP },
410 { 0x29, KEY_PLAY },
411 { 0x2a, KEY_FASTFORWARD },
412 { 0x2b, KEY_F16 }, /* chapter */
413 { 0x2c, KEY_PAUSE },
414 { 0x2d, KEY_PLAY },
415 { 0x2e, KEY_RECORD },
416 { 0x2f, KEY_F17 }, /* picture in picture */
417 { 0x30, KEY_KPPLUS }, /* zoom in */
418 { 0x31, KEY_KPMINUS }, /* zoom out */
419 { 0x32, KEY_F18 }, /* capture */
420 { 0x33, KEY_F19 }, /* web */
421 { 0x34, KEY_EMAIL },
422 { 0x35, KEY_PHONE },
423 { 0x36, KEY_PC },
424};
2915e5ef 425IR_TABLE(nebula, IR_TYPE_UNKNOWN, ir_codes_nebula);
4c0f631e
RC
426
427/* DigitalNow DNTV Live DVB-T Remote */
715a2233
MCC
428static struct ir_scancode ir_codes_dntv_live_dvb_t[] = {
429 { 0x00, KEY_ESC }, /* 'go up a level?' */
4c0f631e 430 /* Keys 0 to 9 */
715a2233
MCC
431 { 0x0a, KEY_0 },
432 { 0x01, KEY_1 },
433 { 0x02, KEY_2 },
434 { 0x03, KEY_3 },
435 { 0x04, KEY_4 },
436 { 0x05, KEY_5 },
437 { 0x06, KEY_6 },
438 { 0x07, KEY_7 },
439 { 0x08, KEY_8 },
440 { 0x09, KEY_9 },
441
442 { 0x0b, KEY_TUNER }, /* tv/fm */
443 { 0x0c, KEY_SEARCH }, /* scan */
444 { 0x0d, KEY_STOP },
445 { 0x0e, KEY_PAUSE },
446 { 0x0f, KEY_LIST }, /* source */
447
448 { 0x10, KEY_MUTE },
449 { 0x11, KEY_REWIND }, /* backward << */
450 { 0x12, KEY_POWER },
451 { 0x13, KEY_CAMERA }, /* snap */
452 { 0x14, KEY_AUDIO }, /* stereo */
453 { 0x15, KEY_CLEAR }, /* reset */
454 { 0x16, KEY_PLAY },
455 { 0x17, KEY_ENTER },
456 { 0x18, KEY_ZOOM }, /* full screen */
457 { 0x19, KEY_FASTFORWARD }, /* forward >> */
458 { 0x1a, KEY_CHANNELUP },
459 { 0x1b, KEY_VOLUMEUP },
460 { 0x1c, KEY_INFO }, /* preview */
461 { 0x1d, KEY_RECORD }, /* record */
462 { 0x1e, KEY_CHANNELDOWN },
463 { 0x1f, KEY_VOLUMEDOWN },
464};
2915e5ef 465IR_TABLE(dntv_live_dvb_t, IR_TYPE_UNKNOWN, ir_codes_dntv_live_dvb_t);
4c0f631e
RC
466
467/* ---------------------------------------------------------------------- */
468
469/* IO-DATA BCTV7E Remote */
715a2233
MCC
470static struct ir_scancode ir_codes_iodata_bctv7e[] = {
471 { 0x40, KEY_TV },
472 { 0x20, KEY_RADIO }, /* FM */
473 { 0x60, KEY_EPG },
474 { 0x00, KEY_POWER },
4c0f631e
RC
475
476 /* Keys 0 to 9 */
715a2233
MCC
477 { 0x44, KEY_0 }, /* 10 */
478 { 0x50, KEY_1 },
479 { 0x30, KEY_2 },
480 { 0x70, KEY_3 },
481 { 0x48, KEY_4 },
482 { 0x28, KEY_5 },
483 { 0x68, KEY_6 },
484 { 0x58, KEY_7 },
485 { 0x38, KEY_8 },
486 { 0x78, KEY_9 },
487
488 { 0x10, KEY_L }, /* Live */
489 { 0x08, KEY_TIME }, /* Time Shift */
490
491 { 0x18, KEY_PLAYPAUSE }, /* Play */
492
493 { 0x24, KEY_ENTER }, /* 11 */
494 { 0x64, KEY_ESC }, /* 12 */
495 { 0x04, KEY_M }, /* Multi */
496
497 { 0x54, KEY_VIDEO },
498 { 0x34, KEY_CHANNELUP },
499 { 0x74, KEY_VOLUMEUP },
500 { 0x14, KEY_MUTE },
501
502 { 0x4c, KEY_VCR }, /* SVIDEO */
503 { 0x2c, KEY_CHANNELDOWN },
504 { 0x6c, KEY_VOLUMEDOWN },
505 { 0x0c, KEY_ZOOM },
506
507 { 0x5c, KEY_PAUSE },
508 { 0x3c, KEY_RED }, /* || (red) */
509 { 0x7c, KEY_RECORD }, /* recording */
510 { 0x1c, KEY_STOP },
511
512 { 0x41, KEY_REWIND }, /* backward << */
513 { 0x21, KEY_PLAY },
514 { 0x61, KEY_FASTFORWARD }, /* forward >> */
515 { 0x01, KEY_NEXT }, /* skip >| */
516};
2915e5ef 517IR_TABLE(iodata_bctv7e, IR_TYPE_UNKNOWN, ir_codes_iodata_bctv7e);
4c0f631e
RC
518
519/* ---------------------------------------------------------------------- */
520
521/* ADS Tech Instant TV DVB-T PCI Remote */
715a2233 522static struct ir_scancode ir_codes_adstech_dvb_t_pci[] = {
4c0f631e 523 /* Keys 0 to 9 */
715a2233
MCC
524 { 0x4d, KEY_0 },
525 { 0x57, KEY_1 },
526 { 0x4f, KEY_2 },
527 { 0x53, KEY_3 },
528 { 0x56, KEY_4 },
529 { 0x4e, KEY_5 },
530 { 0x5e, KEY_6 },
531 { 0x54, KEY_7 },
532 { 0x4c, KEY_8 },
533 { 0x5c, KEY_9 },
534
535 { 0x5b, KEY_POWER },
536 { 0x5f, KEY_MUTE },
537 { 0x55, KEY_GOTO },
538 { 0x5d, KEY_SEARCH },
539 { 0x17, KEY_EPG }, /* Guide */
540 { 0x1f, KEY_MENU },
541 { 0x0f, KEY_UP },
542 { 0x46, KEY_DOWN },
543 { 0x16, KEY_LEFT },
544 { 0x1e, KEY_RIGHT },
545 { 0x0e, KEY_SELECT }, /* Enter */
546 { 0x5a, KEY_INFO },
547 { 0x52, KEY_EXIT },
548 { 0x59, KEY_PREVIOUS },
549 { 0x51, KEY_NEXT },
550 { 0x58, KEY_REWIND },
551 { 0x50, KEY_FORWARD },
552 { 0x44, KEY_PLAYPAUSE },
553 { 0x07, KEY_STOP },
554 { 0x1b, KEY_RECORD },
555 { 0x13, KEY_TUNER }, /* Live */
556 { 0x0a, KEY_A },
557 { 0x12, KEY_B },
558 { 0x03, KEY_PROG1 }, /* 1 */
559 { 0x01, KEY_PROG2 }, /* 2 */
560 { 0x00, KEY_PROG3 }, /* 3 */
561 { 0x06, KEY_DVD },
562 { 0x48, KEY_AUX }, /* Photo */
563 { 0x40, KEY_VIDEO },
564 { 0x19, KEY_AUDIO }, /* Music */
565 { 0x0b, KEY_CHANNELUP },
566 { 0x08, KEY_CHANNELDOWN },
567 { 0x15, KEY_VOLUMEUP },
568 { 0x1c, KEY_VOLUMEDOWN },
569};
2915e5ef 570IR_TABLE(adstech_dvb_t_pci, IR_TYPE_UNKNOWN, ir_codes_adstech_dvb_t_pci);
4c0f631e
RC
571
572/* ---------------------------------------------------------------------- */
573
ba340b40
BR
574/* MSI TV@nywhere MASTER remote */
575
715a2233 576static struct ir_scancode ir_codes_msi_tvanywhere[] = {
4c0f631e 577 /* Keys 0 to 9 */
715a2233
MCC
578 { 0x00, KEY_0 },
579 { 0x01, KEY_1 },
580 { 0x02, KEY_2 },
581 { 0x03, KEY_3 },
582 { 0x04, KEY_4 },
583 { 0x05, KEY_5 },
584 { 0x06, KEY_6 },
585 { 0x07, KEY_7 },
586 { 0x08, KEY_8 },
587 { 0x09, KEY_9 },
588
589 { 0x0c, KEY_MUTE },
590 { 0x0f, KEY_SCREEN }, /* Full Screen */
591 { 0x10, KEY_FN }, /* Funtion */
592 { 0x11, KEY_TIME }, /* Time shift */
593 { 0x12, KEY_POWER },
594 { 0x13, KEY_MEDIA }, /* MTS */
595 { 0x14, KEY_SLOW },
596 { 0x16, KEY_REWIND }, /* backward << */
597 { 0x17, KEY_ENTER }, /* Return */
598 { 0x18, KEY_FASTFORWARD }, /* forward >> */
599 { 0x1a, KEY_CHANNELUP },
600 { 0x1b, KEY_VOLUMEUP },
601 { 0x1e, KEY_CHANNELDOWN },
602 { 0x1f, KEY_VOLUMEDOWN },
603};
2915e5ef 604IR_TABLE(msi_tvanywhere, IR_TYPE_UNKNOWN, ir_codes_msi_tvanywhere);
4c0f631e
RC
605
606/* ---------------------------------------------------------------------- */
607
ba340b40
BR
608/*
609 Keycodes for remote on the MSI TV@nywhere Plus. The controller IC on the card
610 is marked "KS003". The controller is I2C at address 0x30, but does not seem
611 to respond to probes until a read is performed from a valid device.
612 I don't know why...
613
614 Note: This remote may be of similar or identical design to the
615 Pixelview remote (?). The raw codes and duplicate button codes
616 appear to be the same.
617
618 Henry Wong <henry@stuffedcow.net>
619 Some changes to formatting and keycodes by Mark Schultz <n9xmj@yahoo.com>
620
621*/
622
715a2233 623static struct ir_scancode ir_codes_msi_tvanywhere_plus[] = {
ba340b40
BR
624
625/* ---- Remote Button Layout ----
626
627 POWER SOURCE SCAN MUTE
628 TV/FM 1 2 3
629 |> 4 5 6
630 <| 7 8 9
631 ^^UP 0 + RECALL
632 vvDN RECORD STOP PLAY
633
634 MINIMIZE ZOOM
635
636 CH+
637 VOL- VOL+
638 CH-
639
640 SNAPSHOT MTS
641
642 << FUNC >> RESET
643*/
644
715a2233
MCC
645 { 0x01, KEY_1 }, /* 1 */
646 { 0x0b, KEY_2 }, /* 2 */
647 { 0x1b, KEY_3 }, /* 3 */
648 { 0x05, KEY_4 }, /* 4 */
649 { 0x09, KEY_5 }, /* 5 */
650 { 0x15, KEY_6 }, /* 6 */
651 { 0x06, KEY_7 }, /* 7 */
652 { 0x0a, KEY_8 }, /* 8 */
653 { 0x12, KEY_9 }, /* 9 */
654 { 0x02, KEY_0 }, /* 0 */
655 { 0x10, KEY_KPPLUS }, /* + */
656 { 0x13, KEY_AGAIN }, /* Recall */
657
658 { 0x1e, KEY_POWER }, /* Power */
659 { 0x07, KEY_TUNER }, /* Source */
660 { 0x1c, KEY_SEARCH }, /* Scan */
661 { 0x18, KEY_MUTE }, /* Mute */
662
663 { 0x03, KEY_RADIO }, /* TV/FM */
ba340b40
BR
664 /* The next four keys are duplicates that appear to send the
665 same IR code as Ch+, Ch-, >>, and << . The raw code assigned
666 to them is the actual code + 0x20 - they will never be
667 detected as such unless some way is discovered to distinguish
668 these buttons from those that have the same code. */
715a2233
MCC
669 { 0x3f, KEY_RIGHT }, /* |> and Ch+ */
670 { 0x37, KEY_LEFT }, /* <| and Ch- */
671 { 0x2c, KEY_UP }, /* ^^Up and >> */
672 { 0x24, KEY_DOWN }, /* vvDn and << */
673
674 { 0x00, KEY_RECORD }, /* Record */
675 { 0x08, KEY_STOP }, /* Stop */
676 { 0x11, KEY_PLAY }, /* Play */
677
678 { 0x0f, KEY_CLOSE }, /* Minimize */
679 { 0x19, KEY_ZOOM }, /* Zoom */
680 { 0x1a, KEY_CAMERA }, /* Snapshot */
681 { 0x0d, KEY_LANGUAGE }, /* MTS */
682
683 { 0x14, KEY_VOLUMEDOWN }, /* Vol- */
684 { 0x16, KEY_VOLUMEUP }, /* Vol+ */
685 { 0x17, KEY_CHANNELDOWN }, /* Ch- */
686 { 0x1f, KEY_CHANNELUP }, /* Ch+ */
687
688 { 0x04, KEY_REWIND }, /* << */
689 { 0x0e, KEY_MENU }, /* Function */
690 { 0x0c, KEY_FASTFORWARD }, /* >> */
691 { 0x1d, KEY_RESTART }, /* Reset */
692};
2915e5ef 693IR_TABLE(msi_tvanywhere_plus, IR_TYPE_UNKNOWN, ir_codes_msi_tvanywhere_plus);
ba340b40
BR
694
695/* ---------------------------------------------------------------------- */
696
4c0f631e 697/* Cinergy 1400 DVB-T */
715a2233
MCC
698static struct ir_scancode ir_codes_cinergy_1400[] = {
699 { 0x01, KEY_POWER },
700 { 0x02, KEY_1 },
701 { 0x03, KEY_2 },
702 { 0x04, KEY_3 },
703 { 0x05, KEY_4 },
704 { 0x06, KEY_5 },
705 { 0x07, KEY_6 },
706 { 0x08, KEY_7 },
707 { 0x09, KEY_8 },
708 { 0x0a, KEY_9 },
709 { 0x0c, KEY_0 },
710
711 { 0x0b, KEY_VIDEO },
712 { 0x0d, KEY_REFRESH },
713 { 0x0e, KEY_SELECT },
714 { 0x0f, KEY_EPG },
715 { 0x10, KEY_UP },
716 { 0x11, KEY_LEFT },
717 { 0x12, KEY_OK },
718 { 0x13, KEY_RIGHT },
719 { 0x14, KEY_DOWN },
720 { 0x15, KEY_TEXT },
721 { 0x16, KEY_INFO },
722
723 { 0x17, KEY_RED },
724 { 0x18, KEY_GREEN },
725 { 0x19, KEY_YELLOW },
726 { 0x1a, KEY_BLUE },
727
728 { 0x1b, KEY_CHANNELUP },
729 { 0x1c, KEY_VOLUMEUP },
730 { 0x1d, KEY_MUTE },
731 { 0x1e, KEY_VOLUMEDOWN },
732 { 0x1f, KEY_CHANNELDOWN },
733
734 { 0x40, KEY_PAUSE },
735 { 0x4c, KEY_PLAY },
736 { 0x58, KEY_RECORD },
737 { 0x54, KEY_PREVIOUS },
738 { 0x48, KEY_STOP },
739 { 0x5c, KEY_NEXT },
740};
2915e5ef 741IR_TABLE(cinergy_1400, IR_TYPE_UNKNOWN, ir_codes_cinergy_1400);
4c0f631e
RC
742
743/* ---------------------------------------------------------------------- */
744
745/* AVERTV STUDIO 303 Remote */
715a2233
MCC
746static struct ir_scancode ir_codes_avertv_303[] = {
747 { 0x2a, KEY_1 },
748 { 0x32, KEY_2 },
749 { 0x3a, KEY_3 },
750 { 0x4a, KEY_4 },
751 { 0x52, KEY_5 },
752 { 0x5a, KEY_6 },
753 { 0x6a, KEY_7 },
754 { 0x72, KEY_8 },
755 { 0x7a, KEY_9 },
756 { 0x0e, KEY_0 },
757
758 { 0x02, KEY_POWER },
759 { 0x22, KEY_VIDEO },
760 { 0x42, KEY_AUDIO },
761 { 0x62, KEY_ZOOM },
762 { 0x0a, KEY_TV },
763 { 0x12, KEY_CD },
764 { 0x1a, KEY_TEXT },
765
766 { 0x16, KEY_SUBTITLE },
767 { 0x1e, KEY_REWIND },
768 { 0x06, KEY_PRINT },
769
770 { 0x2e, KEY_SEARCH },
771 { 0x36, KEY_SLEEP },
772 { 0x3e, KEY_SHUFFLE },
773 { 0x26, KEY_MUTE },
774
775 { 0x4e, KEY_RECORD },
776 { 0x56, KEY_PAUSE },
777 { 0x5e, KEY_STOP },
778 { 0x46, KEY_PLAY },
779
780 { 0x6e, KEY_RED },
781 { 0x0b, KEY_GREEN },
782 { 0x66, KEY_YELLOW },
783 { 0x03, KEY_BLUE },
784
785 { 0x76, KEY_LEFT },
786 { 0x7e, KEY_RIGHT },
787 { 0x13, KEY_DOWN },
788 { 0x1b, KEY_UP },
789};
2915e5ef 790IR_TABLE(avertv_303, IR_TYPE_UNKNOWN, ir_codes_avertv_303);
4c0f631e
RC
791
792/* ---------------------------------------------------------------------- */
793
794/* DigitalNow DNTV Live! DVB-T Pro Remote */
715a2233
MCC
795static struct ir_scancode ir_codes_dntv_live_dvbt_pro[] = {
796 { 0x16, KEY_POWER },
797 { 0x5b, KEY_HOME },
798
799 { 0x55, KEY_TV }, /* live tv */
800 { 0x58, KEY_TUNER }, /* digital Radio */
801 { 0x5a, KEY_RADIO }, /* FM radio */
802 { 0x59, KEY_DVD }, /* dvd menu */
803 { 0x03, KEY_1 },
804 { 0x01, KEY_2 },
805 { 0x06, KEY_3 },
806 { 0x09, KEY_4 },
807 { 0x1d, KEY_5 },
808 { 0x1f, KEY_6 },
809 { 0x0d, KEY_7 },
810 { 0x19, KEY_8 },
811 { 0x1b, KEY_9 },
812 { 0x0c, KEY_CANCEL },
813 { 0x15, KEY_0 },
814 { 0x4a, KEY_CLEAR },
815 { 0x13, KEY_BACK },
816 { 0x00, KEY_TAB },
817 { 0x4b, KEY_UP },
818 { 0x4e, KEY_LEFT },
819 { 0x4f, KEY_OK },
820 { 0x52, KEY_RIGHT },
821 { 0x51, KEY_DOWN },
822 { 0x1e, KEY_VOLUMEUP },
823 { 0x0a, KEY_VOLUMEDOWN },
824 { 0x02, KEY_CHANNELDOWN },
825 { 0x05, KEY_CHANNELUP },
826 { 0x11, KEY_RECORD },
827 { 0x14, KEY_PLAY },
828 { 0x4c, KEY_PAUSE },
829 { 0x1a, KEY_STOP },
830 { 0x40, KEY_REWIND },
831 { 0x12, KEY_FASTFORWARD },
832 { 0x41, KEY_PREVIOUSSONG }, /* replay |< */
833 { 0x42, KEY_NEXTSONG }, /* skip >| */
834 { 0x54, KEY_CAMERA }, /* capture */
835 { 0x50, KEY_LANGUAGE }, /* sap */
836 { 0x47, KEY_TV2 }, /* pip */
837 { 0x4d, KEY_SCREEN },
838 { 0x43, KEY_SUBTITLE },
839 { 0x10, KEY_MUTE },
840 { 0x49, KEY_AUDIO }, /* l/r */
841 { 0x07, KEY_SLEEP },
842 { 0x08, KEY_VIDEO }, /* a/v */
843 { 0x0e, KEY_PREVIOUS }, /* recall */
844 { 0x45, KEY_ZOOM }, /* zoom + */
845 { 0x46, KEY_ANGLE }, /* zoom - */
846 { 0x56, KEY_RED },
847 { 0x57, KEY_GREEN },
848 { 0x5c, KEY_YELLOW },
849 { 0x5d, KEY_BLUE },
850};
2915e5ef 851IR_TABLE(dntv_live_dvbt_pro, IR_TYPE_UNKNOWN, ir_codes_dntv_live_dvbt_pro);
715a2233
MCC
852
853static struct ir_scancode ir_codes_em_terratec[] = {
854 { 0x01, KEY_CHANNEL },
855 { 0x02, KEY_SELECT },
856 { 0x03, KEY_MUTE },
857 { 0x04, KEY_POWER },
858 { 0x05, KEY_1 },
859 { 0x06, KEY_2 },
860 { 0x07, KEY_3 },
861 { 0x08, KEY_CHANNELUP },
862 { 0x09, KEY_4 },
863 { 0x0a, KEY_5 },
864 { 0x0b, KEY_6 },
865 { 0x0c, KEY_CHANNELDOWN },
866 { 0x0d, KEY_7 },
867 { 0x0e, KEY_8 },
868 { 0x0f, KEY_9 },
869 { 0x10, KEY_VOLUMEUP },
870 { 0x11, KEY_0 },
871 { 0x12, KEY_MENU },
872 { 0x13, KEY_PRINT },
873 { 0x14, KEY_VOLUMEDOWN },
874 { 0x16, KEY_PAUSE },
875 { 0x18, KEY_RECORD },
876 { 0x19, KEY_REWIND },
877 { 0x1a, KEY_PLAY },
878 { 0x1b, KEY_FORWARD },
879 { 0x1c, KEY_BACKSPACE },
880 { 0x1e, KEY_STOP },
881 { 0x40, KEY_ZOOM },
882};
2915e5ef 883IR_TABLE(em_terratec, IR_TYPE_UNKNOWN, ir_codes_em_terratec);
715a2233
MCC
884
885static struct ir_scancode ir_codes_pinnacle_grey[] = {
886 { 0x3a, KEY_0 },
887 { 0x31, KEY_1 },
888 { 0x32, KEY_2 },
889 { 0x33, KEY_3 },
890 { 0x34, KEY_4 },
891 { 0x35, KEY_5 },
892 { 0x36, KEY_6 },
893 { 0x37, KEY_7 },
894 { 0x38, KEY_8 },
895 { 0x39, KEY_9 },
896
897 { 0x2f, KEY_POWER },
898
899 { 0x2e, KEY_P },
900 { 0x1f, KEY_L },
901 { 0x2b, KEY_I },
902
903 { 0x2d, KEY_SCREEN },
904 { 0x1e, KEY_ZOOM },
905 { 0x1b, KEY_VOLUMEUP },
906 { 0x0f, KEY_VOLUMEDOWN },
907 { 0x17, KEY_CHANNELUP },
908 { 0x1c, KEY_CHANNELDOWN },
909 { 0x25, KEY_INFO },
910
911 { 0x3c, KEY_MUTE },
912
913 { 0x3d, KEY_LEFT },
914 { 0x3b, KEY_RIGHT },
915
916 { 0x3f, KEY_UP },
917 { 0x3e, KEY_DOWN },
918 { 0x1a, KEY_ENTER },
919
920 { 0x1d, KEY_MENU },
921 { 0x19, KEY_AGAIN },
922 { 0x16, KEY_PREVIOUSSONG },
923 { 0x13, KEY_NEXTSONG },
924 { 0x15, KEY_PAUSE },
925 { 0x0e, KEY_REWIND },
926 { 0x0d, KEY_PLAY },
927 { 0x0b, KEY_STOP },
928 { 0x07, KEY_FORWARD },
929 { 0x27, KEY_RECORD },
930 { 0x26, KEY_TUNER },
931 { 0x29, KEY_TEXT },
932 { 0x2a, KEY_MEDIA },
933 { 0x18, KEY_EPG },
934};
2915e5ef 935IR_TABLE(pinnacle_grey, IR_TYPE_UNKNOWN, ir_codes_pinnacle_grey);
715a2233
MCC
936
937static struct ir_scancode ir_codes_flyvideo[] = {
938 { 0x0f, KEY_0 },
939 { 0x03, KEY_1 },
940 { 0x04, KEY_2 },
941 { 0x05, KEY_3 },
942 { 0x07, KEY_4 },
943 { 0x08, KEY_5 },
944 { 0x09, KEY_6 },
945 { 0x0b, KEY_7 },
946 { 0x0c, KEY_8 },
947 { 0x0d, KEY_9 },
948
949 { 0x0e, KEY_MODE }, /* Air/Cable */
950 { 0x11, KEY_VIDEO }, /* Video */
951 { 0x15, KEY_AUDIO }, /* Audio */
952 { 0x00, KEY_POWER }, /* Power */
953 { 0x18, KEY_TUNER }, /* AV Source */
954 { 0x02, KEY_ZOOM }, /* Fullscreen */
955 { 0x1a, KEY_LANGUAGE }, /* Stereo */
956 { 0x1b, KEY_MUTE }, /* Mute */
957 { 0x14, KEY_VOLUMEUP }, /* Volume + */
958 { 0x17, KEY_VOLUMEDOWN },/* Volume - */
959 { 0x12, KEY_CHANNELUP },/* Channel + */
960 { 0x13, KEY_CHANNELDOWN },/* Channel - */
961 { 0x06, KEY_AGAIN }, /* Recall */
962 { 0x10, KEY_ENTER }, /* Enter */
963
964 { 0x19, KEY_BACK }, /* Rewind ( <<< ) */
965 { 0x1f, KEY_FORWARD }, /* Forward ( >>> ) */
966 { 0x0a, KEY_ANGLE }, /* no label, may be used as the PAUSE button */
967};
2915e5ef 968IR_TABLE(flyvideo, IR_TYPE_UNKNOWN, ir_codes_flyvideo);
715a2233
MCC
969
970static struct ir_scancode ir_codes_flydvb[] = {
971 { 0x01, KEY_ZOOM }, /* Full Screen */
972 { 0x00, KEY_POWER }, /* Power */
973
974 { 0x03, KEY_1 },
975 { 0x04, KEY_2 },
976 { 0x05, KEY_3 },
977 { 0x07, KEY_4 },
978 { 0x08, KEY_5 },
979 { 0x09, KEY_6 },
980 { 0x0b, KEY_7 },
981 { 0x0c, KEY_8 },
982 { 0x0d, KEY_9 },
983 { 0x06, KEY_AGAIN }, /* Recall */
984 { 0x0f, KEY_0 },
985 { 0x10, KEY_MUTE }, /* Mute */
986 { 0x02, KEY_RADIO }, /* TV/Radio */
987 { 0x1b, KEY_LANGUAGE }, /* SAP (Second Audio Program) */
988
989 { 0x14, KEY_VOLUMEUP }, /* VOL+ */
990 { 0x17, KEY_VOLUMEDOWN }, /* VOL- */
991 { 0x12, KEY_CHANNELUP }, /* CH+ */
992 { 0x13, KEY_CHANNELDOWN }, /* CH- */
993 { 0x1d, KEY_ENTER }, /* Enter */
994
995 { 0x1a, KEY_MODE }, /* PIP */
996 { 0x18, KEY_TUNER }, /* Source */
997
998 { 0x1e, KEY_RECORD }, /* Record/Pause */
999 { 0x15, KEY_ANGLE }, /* Swap (no label on key) */
1000 { 0x1c, KEY_PAUSE }, /* Timeshift/Pause */
1001 { 0x19, KEY_BACK }, /* Rewind << */
1002 { 0x0a, KEY_PLAYPAUSE }, /* Play/Pause */
1003 { 0x1f, KEY_FORWARD }, /* Forward >> */
1004 { 0x16, KEY_PREVIOUS }, /* Back |<< */
1005 { 0x11, KEY_STOP }, /* Stop */
1006 { 0x0e, KEY_NEXT }, /* End >>| */
1007};
2915e5ef 1008IR_TABLE(flydvb, IR_TYPE_UNKNOWN, ir_codes_flydvb);
715a2233
MCC
1009
1010static struct ir_scancode ir_codes_cinergy[] = {
1011 { 0x00, KEY_0 },
1012 { 0x01, KEY_1 },
1013 { 0x02, KEY_2 },
1014 { 0x03, KEY_3 },
1015 { 0x04, KEY_4 },
1016 { 0x05, KEY_5 },
1017 { 0x06, KEY_6 },
1018 { 0x07, KEY_7 },
1019 { 0x08, KEY_8 },
1020 { 0x09, KEY_9 },
1021
1022 { 0x0a, KEY_POWER },
1023 { 0x0b, KEY_PROG1 }, /* app */
1024 { 0x0c, KEY_ZOOM }, /* zoom/fullscreen */
1025 { 0x0d, KEY_CHANNELUP }, /* channel */
1026 { 0x0e, KEY_CHANNELDOWN }, /* channel- */
1027 { 0x0f, KEY_VOLUMEUP },
1028 { 0x10, KEY_VOLUMEDOWN },
1029 { 0x11, KEY_TUNER }, /* AV */
1030 { 0x12, KEY_NUMLOCK }, /* -/-- */
1031 { 0x13, KEY_AUDIO }, /* audio */
1032 { 0x14, KEY_MUTE },
1033 { 0x15, KEY_UP },
1034 { 0x16, KEY_DOWN },
1035 { 0x17, KEY_LEFT },
1036 { 0x18, KEY_RIGHT },
1037 { 0x19, BTN_LEFT, },
1038 { 0x1a, BTN_RIGHT, },
1039 { 0x1b, KEY_WWW }, /* text */
1040 { 0x1c, KEY_REWIND },
1041 { 0x1d, KEY_FORWARD },
1042 { 0x1e, KEY_RECORD },
1043 { 0x1f, KEY_PLAY },
1044 { 0x20, KEY_PREVIOUSSONG },
1045 { 0x21, KEY_NEXTSONG },
1046 { 0x22, KEY_PAUSE },
1047 { 0x23, KEY_STOP },
1048};
2915e5ef 1049IR_TABLE(cinergy, IR_TYPE_UNKNOWN, ir_codes_cinergy);
4c0f631e
RC
1050
1051/* Alfons Geser <a.geser@cox.net>
1052 * updates from Job D. R. Borges <jobdrb@ig.com.br> */
715a2233
MCC
1053static struct ir_scancode ir_codes_eztv[] = {
1054 { 0x12, KEY_POWER },
1055 { 0x01, KEY_TV }, /* DVR */
1056 { 0x15, KEY_DVD }, /* DVD */
1057 { 0x17, KEY_AUDIO }, /* music */
5d35364e
MCC
1058 /* DVR mode / DVD mode / music mode */
1059
715a2233
MCC
1060 { 0x1b, KEY_MUTE }, /* mute */
1061 { 0x02, KEY_LANGUAGE }, /* MTS/SAP / audio / autoseek */
1062 { 0x1e, KEY_SUBTITLE }, /* closed captioning / subtitle / seek */
1063 { 0x16, KEY_ZOOM }, /* full screen */
1064 { 0x1c, KEY_VIDEO }, /* video source / eject / delall */
1065 { 0x1d, KEY_RESTART }, /* playback / angle / del */
1066 { 0x2f, KEY_SEARCH }, /* scan / menu / playlist */
1067 { 0x30, KEY_CHANNEL }, /* CH surfing / bookmark / memo */
1068
1069 { 0x31, KEY_HELP }, /* help */
1070 { 0x32, KEY_MODE }, /* num/memo */
1071 { 0x33, KEY_ESC }, /* cancel */
1072
1073 { 0x0c, KEY_UP }, /* up */
1074 { 0x10, KEY_DOWN }, /* down */
1075 { 0x08, KEY_LEFT }, /* left */
1076 { 0x04, KEY_RIGHT }, /* right */
1077 { 0x03, KEY_SELECT }, /* select */
1078
1079 { 0x1f, KEY_REWIND }, /* rewind */
1080 { 0x20, KEY_PLAYPAUSE },/* play/pause */
1081 { 0x29, KEY_FORWARD }, /* forward */
1082 { 0x14, KEY_AGAIN }, /* repeat */
1083 { 0x2b, KEY_RECORD }, /* recording */
1084 { 0x2c, KEY_STOP }, /* stop */
1085 { 0x2d, KEY_PLAY }, /* play */
1086 { 0x2e, KEY_CAMERA }, /* snapshot / shuffle */
1087
1088 { 0x00, KEY_0 },
1089 { 0x05, KEY_1 },
1090 { 0x06, KEY_2 },
1091 { 0x07, KEY_3 },
1092 { 0x09, KEY_4 },
1093 { 0x0a, KEY_5 },
1094 { 0x0b, KEY_6 },
1095 { 0x0d, KEY_7 },
1096 { 0x0e, KEY_8 },
1097 { 0x0f, KEY_9 },
1098
1099 { 0x2a, KEY_VOLUMEUP },
1100 { 0x11, KEY_VOLUMEDOWN },
1101 { 0x18, KEY_CHANNELUP },/* CH.tracking up */
1102 { 0x19, KEY_CHANNELDOWN },/* CH.tracking down */
1103
1104 { 0x13, KEY_ENTER }, /* enter */
1105 { 0x21, KEY_DOT }, /* . (decimal dot) */
1106};
2915e5ef 1107IR_TABLE(eztv, IR_TYPE_UNKNOWN, ir_codes_eztv);
4c0f631e 1108
4c0f631e 1109/* Alex Hermann <gaaf@gmx.net> */
715a2233
MCC
1110static struct ir_scancode ir_codes_avermedia[] = {
1111 { 0x28, KEY_1 },
1112 { 0x18, KEY_2 },
1113 { 0x38, KEY_3 },
1114 { 0x24, KEY_4 },
1115 { 0x14, KEY_5 },
1116 { 0x34, KEY_6 },
1117 { 0x2c, KEY_7 },
1118 { 0x1c, KEY_8 },
1119 { 0x3c, KEY_9 },
1120 { 0x22, KEY_0 },
1121
1122 { 0x20, KEY_TV }, /* TV/FM */
1123 { 0x10, KEY_CD }, /* CD */
1124 { 0x30, KEY_TEXT }, /* TELETEXT */
1125 { 0x00, KEY_POWER }, /* POWER */
1126
1127 { 0x08, KEY_VIDEO }, /* VIDEO */
1128 { 0x04, KEY_AUDIO }, /* AUDIO */
1129 { 0x0c, KEY_ZOOM }, /* FULL SCREEN */
1130
1131 { 0x12, KEY_SUBTITLE }, /* DISPLAY */
1132 { 0x32, KEY_REWIND }, /* LOOP */
1133 { 0x02, KEY_PRINT }, /* PREVIEW */
1134
1135 { 0x2a, KEY_SEARCH }, /* AUTOSCAN */
1136 { 0x1a, KEY_SLEEP }, /* FREEZE */
1137 { 0x3a, KEY_CAMERA }, /* SNAPSHOT */
1138 { 0x0a, KEY_MUTE }, /* MUTE */
1139
1140 { 0x26, KEY_RECORD }, /* RECORD */
1141 { 0x16, KEY_PAUSE }, /* PAUSE */
1142 { 0x36, KEY_STOP }, /* STOP */
1143 { 0x06, KEY_PLAY }, /* PLAY */
1144
1145 { 0x2e, KEY_RED }, /* RED */
1146 { 0x21, KEY_GREEN }, /* GREEN */
1147 { 0x0e, KEY_YELLOW }, /* YELLOW */
1148 { 0x01, KEY_BLUE }, /* BLUE */
1149
1150 { 0x1e, KEY_VOLUMEDOWN }, /* VOLUME- */
1151 { 0x3e, KEY_VOLUMEUP }, /* VOLUME+ */
1152 { 0x11, KEY_CHANNELDOWN }, /* CHANNEL/PAGE- */
1153 { 0x31, KEY_CHANNELUP } /* CHANNEL/PAGE+ */
1154};
2915e5ef 1155IR_TABLE(avermedia, IR_TYPE_UNKNOWN, ir_codes_avermedia);
715a2233
MCC
1156
1157static struct ir_scancode ir_codes_videomate_tv_pvr[] = {
1158 { 0x14, KEY_MUTE },
1159 { 0x24, KEY_ZOOM },
1160
1161 { 0x01, KEY_DVD },
1162 { 0x23, KEY_RADIO },
1163 { 0x00, KEY_TV },
1164
1165 { 0x0a, KEY_REWIND },
1166 { 0x08, KEY_PLAYPAUSE },
1167 { 0x0f, KEY_FORWARD },
1168
1169 { 0x02, KEY_PREVIOUS },
1170 { 0x07, KEY_STOP },
1171 { 0x06, KEY_NEXT },
1172
1173 { 0x0c, KEY_UP },
1174 { 0x0e, KEY_DOWN },
1175 { 0x0b, KEY_LEFT },
1176 { 0x0d, KEY_RIGHT },
1177 { 0x11, KEY_OK },
1178
1179 { 0x03, KEY_MENU },
1180 { 0x09, KEY_SETUP },
1181 { 0x05, KEY_VIDEO },
1182 { 0x22, KEY_CHANNEL },
1183
1184 { 0x12, KEY_VOLUMEUP },
1185 { 0x15, KEY_VOLUMEDOWN },
1186 { 0x10, KEY_CHANNELUP },
1187 { 0x13, KEY_CHANNELDOWN },
1188
1189 { 0x04, KEY_RECORD },
1190
1191 { 0x16, KEY_1 },
1192 { 0x17, KEY_2 },
1193 { 0x18, KEY_3 },
1194 { 0x19, KEY_4 },
1195 { 0x1a, KEY_5 },
1196 { 0x1b, KEY_6 },
1197 { 0x1c, KEY_7 },
1198 { 0x1d, KEY_8 },
1199 { 0x1e, KEY_9 },
1200 { 0x1f, KEY_0 },
1201
1202 { 0x20, KEY_LANGUAGE },
1203 { 0x21, KEY_SLEEP },
1204};
2915e5ef 1205IR_TABLE(videomate_tv_pvr, IR_TYPE_UNKNOWN, ir_codes_videomate_tv_pvr);
4c0f631e
RC
1206
1207/* Michael Tokarev <mjt@tls.msk.ru>
1208 http://www.corpit.ru/mjt/beholdTV/remote_control.jpg
3b82bddb 1209 keytable is used by MANLI MTV00[0x0c] and BeholdTV 40[13] at
4c0f631e
RC
1210 least, and probably other cards too.
1211 The "ascii-art picture" below (in comments, first row
1212 is the keycode in hex, and subsequent row(s) shows
1213 the button labels (several variants when appropriate)
1214 helps to descide which keycodes to assign to the buttons.
1215 */
715a2233 1216static struct ir_scancode ir_codes_manli[] = {
4c0f631e
RC
1217
1218 /* 0x1c 0x12 *
1219 * FUNCTION POWER *
1220 * FM (|) *
1221 * */
715a2233
MCC
1222 { 0x1c, KEY_RADIO }, /*XXX*/
1223 { 0x12, KEY_POWER },
4c0f631e
RC
1224
1225 /* 0x01 0x02 0x03 *
1226 * 1 2 3 *
1227 * *
1228 * 0x04 0x05 0x06 *
1229 * 4 5 6 *
1230 * *
1231 * 0x07 0x08 0x09 *
1232 * 7 8 9 *
1233 * */
715a2233
MCC
1234 { 0x01, KEY_1 },
1235 { 0x02, KEY_2 },
1236 { 0x03, KEY_3 },
1237 { 0x04, KEY_4 },
1238 { 0x05, KEY_5 },
1239 { 0x06, KEY_6 },
1240 { 0x07, KEY_7 },
1241 { 0x08, KEY_8 },
1242 { 0x09, KEY_9 },
4c0f631e
RC
1243
1244 /* 0x0a 0x00 0x17 *
1245 * RECALL 0 +100 *
1246 * PLUS *
1247 * */
715a2233
MCC
1248 { 0x0a, KEY_AGAIN }, /*XXX KEY_REWIND? */
1249 { 0x00, KEY_0 },
1250 { 0x17, KEY_DIGITS }, /*XXX*/
4c0f631e
RC
1251
1252 /* 0x14 0x10 *
1253 * MENU INFO *
1254 * OSD */
715a2233
MCC
1255 { 0x14, KEY_MENU },
1256 { 0x10, KEY_INFO },
4c0f631e
RC
1257
1258 /* 0x0b *
1259 * Up *
1260 * *
1261 * 0x18 0x16 0x0c *
1262 * Left Ok Right *
1263 * *
1264 * 0x015 *
1265 * Down *
1266 * */
715a2233
MCC
1267 { 0x0b, KEY_UP },
1268 { 0x18, KEY_LEFT },
1269 { 0x16, KEY_OK }, /*XXX KEY_SELECT? KEY_ENTER? */
1270 { 0x0c, KEY_RIGHT },
1271 { 0x15, KEY_DOWN },
4c0f631e
RC
1272
1273 /* 0x11 0x0d *
1274 * TV/AV MODE *
1275 * SOURCE STEREO *
1276 * */
715a2233
MCC
1277 { 0x11, KEY_TV }, /*XXX*/
1278 { 0x0d, KEY_MODE }, /*XXX there's no KEY_STEREO */
4c0f631e
RC
1279
1280 /* 0x0f 0x1b 0x1a *
1281 * AUDIO Vol+ Chan+ *
1282 * TIMESHIFT??? *
1283 * *
1284 * 0x0e 0x1f 0x1e *
1285 * SLEEP Vol- Chan- *
1286 * */
715a2233
MCC
1287 { 0x0f, KEY_AUDIO },
1288 { 0x1b, KEY_VOLUMEUP },
1289 { 0x1a, KEY_CHANNELUP },
1290 { 0x0e, KEY_TIME },
1291 { 0x1f, KEY_VOLUMEDOWN },
1292 { 0x1e, KEY_CHANNELDOWN },
4c0f631e
RC
1293
1294 /* 0x13 0x19 *
1295 * MUTE SNAPSHOT*
1296 * */
715a2233
MCC
1297 { 0x13, KEY_MUTE },
1298 { 0x19, KEY_CAMERA },
4c0f631e 1299
97fd4f7f 1300 /* 0x1d unused ? */
4c0f631e 1301};
2915e5ef 1302IR_TABLE(manli, IR_TYPE_UNKNOWN, ir_codes_manli);
4c0f631e
RC
1303
1304/* Mike Baikov <mike@baikov.com> */
715a2233
MCC
1305static struct ir_scancode ir_codes_gotview7135[] = {
1306
1307 { 0x11, KEY_POWER },
1308 { 0x35, KEY_TV },
1309 { 0x1b, KEY_0 },
1310 { 0x29, KEY_1 },
1311 { 0x19, KEY_2 },
1312 { 0x39, KEY_3 },
1313 { 0x1f, KEY_4 },
1314 { 0x2c, KEY_5 },
1315 { 0x21, KEY_6 },
1316 { 0x24, KEY_7 },
1317 { 0x18, KEY_8 },
1318 { 0x2b, KEY_9 },
1319 { 0x3b, KEY_AGAIN }, /* LOOP */
1320 { 0x06, KEY_AUDIO },
1321 { 0x31, KEY_PRINT }, /* PREVIEW */
1322 { 0x3e, KEY_VIDEO },
1323 { 0x10, KEY_CHANNELUP },
1324 { 0x20, KEY_CHANNELDOWN },
1325 { 0x0c, KEY_VOLUMEDOWN },
1326 { 0x28, KEY_VOLUMEUP },
1327 { 0x08, KEY_MUTE },
1328 { 0x26, KEY_SEARCH }, /* SCAN */
1329 { 0x3f, KEY_CAMERA }, /* SNAPSHOT */
1330 { 0x12, KEY_RECORD },
1331 { 0x32, KEY_STOP },
1332 { 0x3c, KEY_PLAY },
1333 { 0x1d, KEY_REWIND },
1334 { 0x2d, KEY_PAUSE },
1335 { 0x0d, KEY_FORWARD },
1336 { 0x05, KEY_ZOOM }, /*FULL*/
1337
1338 { 0x2a, KEY_F21 }, /* LIVE TIMESHIFT */
1339 { 0x0e, KEY_F22 }, /* MIN TIMESHIFT */
1340 { 0x1e, KEY_TIME }, /* TIMESHIFT */
1341 { 0x38, KEY_F24 }, /* NORMAL TIMESHIFT */
1342};
2915e5ef 1343IR_TABLE(gotview7135, IR_TYPE_UNKNOWN, ir_codes_gotview7135);
715a2233
MCC
1344
1345static struct ir_scancode ir_codes_purpletv[] = {
1346 { 0x03, KEY_POWER },
1347 { 0x6f, KEY_MUTE },
1348 { 0x10, KEY_BACKSPACE }, /* Recall */
1349
1350 { 0x11, KEY_0 },
1351 { 0x04, KEY_1 },
1352 { 0x05, KEY_2 },
1353 { 0x06, KEY_3 },
1354 { 0x08, KEY_4 },
1355 { 0x09, KEY_5 },
1356 { 0x0a, KEY_6 },
1357 { 0x0c, KEY_7 },
1358 { 0x0d, KEY_8 },
1359 { 0x0e, KEY_9 },
1360 { 0x12, KEY_DOT }, /* 100+ */
1361
1362 { 0x07, KEY_VOLUMEUP },
1363 { 0x0b, KEY_VOLUMEDOWN },
1364 { 0x1a, KEY_KPPLUS },
1365 { 0x18, KEY_KPMINUS },
1366 { 0x15, KEY_UP },
1367 { 0x1d, KEY_DOWN },
1368 { 0x0f, KEY_CHANNELUP },
1369 { 0x13, KEY_CHANNELDOWN },
1370 { 0x48, KEY_ZOOM },
1371
1372 { 0x1b, KEY_VIDEO }, /* Video source */
1373 { 0x1f, KEY_CAMERA }, /* Snapshot */
1374 { 0x49, KEY_LANGUAGE }, /* MTS Select */
1375 { 0x19, KEY_SEARCH }, /* Auto Scan */
1376
1377 { 0x4b, KEY_RECORD },
1378 { 0x46, KEY_PLAY },
1379 { 0x45, KEY_PAUSE }, /* Pause */
1380 { 0x44, KEY_STOP },
1381 { 0x43, KEY_TIME }, /* Time Shift */
1382 { 0x17, KEY_CHANNEL }, /* SURF CH */
1383 { 0x40, KEY_FORWARD }, /* Forward ? */
1384 { 0x42, KEY_REWIND }, /* Backward ? */
1385
1386};
2915e5ef 1387IR_TABLE(purpletv, IR_TYPE_UNKNOWN, ir_codes_purpletv);
4c0f631e
RC
1388
1389/* Mapping for the 28 key remote control as seen at
1390 http://www.sednacomputer.com/photo/cardbus-tv.jpg
e80faad3
ML
1391 Pavel Mihaylov <bin@bash.info>
1392 Also for the remote bundled with Kozumi KTV-01C card */
715a2233
MCC
1393static struct ir_scancode ir_codes_pctv_sedna[] = {
1394 { 0x00, KEY_0 },
1395 { 0x01, KEY_1 },
1396 { 0x02, KEY_2 },
1397 { 0x03, KEY_3 },
1398 { 0x04, KEY_4 },
1399 { 0x05, KEY_5 },
1400 { 0x06, KEY_6 },
1401 { 0x07, KEY_7 },
1402 { 0x08, KEY_8 },
1403 { 0x09, KEY_9 },
1404
1405 { 0x0a, KEY_AGAIN }, /* Recall */
1406 { 0x0b, KEY_CHANNELUP },
1407 { 0x0c, KEY_VOLUMEUP },
1408 { 0x0d, KEY_MODE }, /* Stereo */
1409 { 0x0e, KEY_STOP },
1410 { 0x0f, KEY_PREVIOUSSONG },
1411 { 0x10, KEY_ZOOM },
1412 { 0x11, KEY_TUNER }, /* Source */
1413 { 0x12, KEY_POWER },
1414 { 0x13, KEY_MUTE },
1415 { 0x15, KEY_CHANNELDOWN },
1416 { 0x18, KEY_VOLUMEDOWN },
1417 { 0x19, KEY_CAMERA }, /* Snapshot */
1418 { 0x1a, KEY_NEXTSONG },
1419 { 0x1b, KEY_TIME }, /* Time Shift */
1420 { 0x1c, KEY_RADIO }, /* FM Radio */
1421 { 0x1d, KEY_RECORD },
1422 { 0x1e, KEY_PAUSE },
e80faad3 1423 /* additional codes for Kozumi's remote */
715a2233
MCC
1424 { 0x14, KEY_INFO }, /* OSD */
1425 { 0x16, KEY_OK }, /* OK */
1426 { 0x17, KEY_DIGITS }, /* Plus */
1427 { 0x1f, KEY_PLAY }, /* Play */
4c0f631e 1428};
2915e5ef 1429IR_TABLE(pctv_sedna, IR_TYPE_UNKNOWN, ir_codes_pctv_sedna);
4c0f631e
RC
1430
1431/* Mark Phalan <phalanm@o2.ie> */
715a2233
MCC
1432static struct ir_scancode ir_codes_pv951[] = {
1433 { 0x00, KEY_0 },
1434 { 0x01, KEY_1 },
1435 { 0x02, KEY_2 },
1436 { 0x03, KEY_3 },
1437 { 0x04, KEY_4 },
1438 { 0x05, KEY_5 },
1439 { 0x06, KEY_6 },
1440 { 0x07, KEY_7 },
1441 { 0x08, KEY_8 },
1442 { 0x09, KEY_9 },
1443
1444 { 0x12, KEY_POWER },
1445 { 0x10, KEY_MUTE },
1446 { 0x1f, KEY_VOLUMEDOWN },
1447 { 0x1b, KEY_VOLUMEUP },
1448 { 0x1a, KEY_CHANNELUP },
1449 { 0x1e, KEY_CHANNELDOWN },
1450 { 0x0e, KEY_PAGEUP },
1451 { 0x1d, KEY_PAGEDOWN },
1452 { 0x13, KEY_SOUND },
1453
1454 { 0x18, KEY_KPPLUSMINUS }, /* CH +/- */
1455 { 0x16, KEY_SUBTITLE }, /* CC */
1456 { 0x0d, KEY_TEXT }, /* TTX */
1457 { 0x0b, KEY_TV }, /* AIR/CBL */
1458 { 0x11, KEY_PC }, /* PC/TV */
1459 { 0x17, KEY_OK }, /* CH RTN */
1460 { 0x19, KEY_MODE }, /* FUNC */
1461 { 0x0c, KEY_SEARCH }, /* AUTOSCAN */
4c0f631e
RC
1462
1463 /* Not sure what to do with these ones! */
715a2233
MCC
1464 { 0x0f, KEY_SELECT }, /* SOURCE */
1465 { 0x0a, KEY_KPPLUS }, /* +100 */
1466 { 0x14, KEY_EQUAL }, /* SYNC */
1467 { 0x1c, KEY_MEDIA }, /* PC/TV */
1468};
2915e5ef 1469IR_TABLE(pv951, IR_TYPE_UNKNOWN, ir_codes_pv951);
4c0f631e
RC
1470
1471/* generic RC5 keytable */
1472/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
1473/* used by old (black) Hauppauge remotes */
715a2233 1474static struct ir_scancode ir_codes_rc5_tv[] = {
4c0f631e 1475 /* Keys 0 to 9 */
715a2233
MCC
1476 { 0x00, KEY_0 },
1477 { 0x01, KEY_1 },
1478 { 0x02, KEY_2 },
1479 { 0x03, KEY_3 },
1480 { 0x04, KEY_4 },
1481 { 0x05, KEY_5 },
1482 { 0x06, KEY_6 },
1483 { 0x07, KEY_7 },
1484 { 0x08, KEY_8 },
1485 { 0x09, KEY_9 },
1486
1487 { 0x0b, KEY_CHANNEL }, /* channel / program (japan: 11) */
1488 { 0x0c, KEY_POWER }, /* standby */
1489 { 0x0d, KEY_MUTE }, /* mute / demute */
1490 { 0x0f, KEY_TV }, /* display */
1491 { 0x10, KEY_VOLUMEUP },
1492 { 0x11, KEY_VOLUMEDOWN },
1493 { 0x12, KEY_BRIGHTNESSUP },
1494 { 0x13, KEY_BRIGHTNESSDOWN },
1495 { 0x1e, KEY_SEARCH }, /* search + */
1496 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1497 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1498 { 0x22, KEY_CHANNEL }, /* alt / channel */
1499 { 0x23, KEY_LANGUAGE }, /* 1st / 2nd language */
1500 { 0x26, KEY_SLEEP }, /* sleeptimer */
1501 { 0x2e, KEY_MENU }, /* 2nd controls (USA: menu) */
1502 { 0x30, KEY_PAUSE },
1503 { 0x32, KEY_REWIND },
1504 { 0x33, KEY_GOTO },
1505 { 0x35, KEY_PLAY },
1506 { 0x36, KEY_STOP },
1507 { 0x37, KEY_RECORD }, /* recording */
1508 { 0x3c, KEY_TEXT }, /* teletext submode (Japan: 12) */
1509 { 0x3d, KEY_SUSPEND }, /* system standby */
1510
1511};
2915e5ef 1512IR_TABLE(rc5_tv, IR_TYPE_UNKNOWN, ir_codes_rc5_tv);
4c0f631e
RC
1513
1514/* Table for Leadtek Winfast Remote Controls - used by both bttv and cx88 */
715a2233 1515static struct ir_scancode ir_codes_winfast[] = {
4c0f631e 1516 /* Keys 0 to 9 */
715a2233
MCC
1517 { 0x12, KEY_0 },
1518 { 0x05, KEY_1 },
1519 { 0x06, KEY_2 },
1520 { 0x07, KEY_3 },
1521 { 0x09, KEY_4 },
1522 { 0x0a, KEY_5 },
1523 { 0x0b, KEY_6 },
1524 { 0x0d, KEY_7 },
1525 { 0x0e, KEY_8 },
1526 { 0x0f, KEY_9 },
1527
1528 { 0x00, KEY_POWER },
1529 { 0x1b, KEY_AUDIO }, /* Audio Source */
1530 { 0x02, KEY_TUNER }, /* TV/FM, not on Y0400052 */
1531 { 0x1e, KEY_VIDEO }, /* Video Source */
1532 { 0x16, KEY_INFO }, /* Display information */
1533 { 0x04, KEY_VOLUMEUP },
1534 { 0x08, KEY_VOLUMEDOWN },
1535 { 0x0c, KEY_CHANNELUP },
1536 { 0x10, KEY_CHANNELDOWN },
1537 { 0x03, KEY_ZOOM }, /* fullscreen */
1538 { 0x1f, KEY_TEXT }, /* closed caption/teletext */
1539 { 0x20, KEY_SLEEP },
1540 { 0x29, KEY_CLEAR }, /* boss key */
1541 { 0x14, KEY_MUTE },
1542 { 0x2b, KEY_RED },
1543 { 0x2c, KEY_GREEN },
1544 { 0x2d, KEY_YELLOW },
1545 { 0x2e, KEY_BLUE },
1546 { 0x18, KEY_KPPLUS }, /* fine tune + , not on Y040052 */
1547 { 0x19, KEY_KPMINUS }, /* fine tune - , not on Y040052 */
1548 { 0x2a, KEY_MEDIA }, /* PIP (Picture in picture */
1549 { 0x21, KEY_DOT },
1550 { 0x13, KEY_ENTER },
1551 { 0x11, KEY_LAST }, /* Recall (last channel */
1552 { 0x22, KEY_PREVIOUS },
1553 { 0x23, KEY_PLAYPAUSE },
1554 { 0x24, KEY_NEXT },
1555 { 0x25, KEY_TIME }, /* Time Shifting */
1556 { 0x26, KEY_STOP },
1557 { 0x27, KEY_RECORD },
1558 { 0x28, KEY_SAVE }, /* Screenshot */
1559 { 0x2f, KEY_MENU },
1560 { 0x30, KEY_CANCEL },
1561 { 0x31, KEY_CHANNEL }, /* Channel Surf */
1562 { 0x32, KEY_SUBTITLE },
1563 { 0x33, KEY_LANGUAGE },
1564 { 0x34, KEY_REWIND },
1565 { 0x35, KEY_FASTFORWARD },
1566 { 0x36, KEY_TV },
1567 { 0x37, KEY_RADIO }, /* FM */
1568 { 0x38, KEY_DVD },
1569
0700adec 1570 { 0x1a, KEY_MODE}, /* change to MCE mode on Y04G0051 */
715a2233
MCC
1571 { 0x3e, KEY_F21 }, /* MCE +VOL, on Y04G0033 */
1572 { 0x3a, KEY_F22 }, /* MCE -VOL, on Y04G0033 */
1573 { 0x3b, KEY_F23 }, /* MCE +CH, on Y04G0033 */
1574 { 0x3f, KEY_F24 } /* MCE -CH, on Y04G0033 */
1575};
2915e5ef 1576IR_TABLE(winfast, IR_TYPE_UNKNOWN, ir_codes_winfast);
715a2233
MCC
1577
1578static struct ir_scancode ir_codes_pinnacle_color[] = {
1579 { 0x59, KEY_MUTE },
1580 { 0x4a, KEY_POWER },
1581
1582 { 0x18, KEY_TEXT },
1583 { 0x26, KEY_TV },
1584 { 0x3d, KEY_PRINT },
1585
1586 { 0x48, KEY_RED },
1587 { 0x04, KEY_GREEN },
1588 { 0x11, KEY_YELLOW },
1589 { 0x00, KEY_BLUE },
1590
1591 { 0x2d, KEY_VOLUMEUP },
1592 { 0x1e, KEY_VOLUMEDOWN },
1593
1594 { 0x49, KEY_MENU },
1595
1596 { 0x16, KEY_CHANNELUP },
1597 { 0x17, KEY_CHANNELDOWN },
1598
1599 { 0x20, KEY_UP },
1600 { 0x21, KEY_DOWN },
1601 { 0x22, KEY_LEFT },
1602 { 0x23, KEY_RIGHT },
1603 { 0x0d, KEY_SELECT },
1604
1605 { 0x08, KEY_BACK },
1606 { 0x07, KEY_REFRESH },
1607
1608 { 0x2f, KEY_ZOOM },
1609 { 0x29, KEY_RECORD },
1610
1611 { 0x4b, KEY_PAUSE },
1612 { 0x4d, KEY_REWIND },
1613 { 0x2e, KEY_PLAY },
1614 { 0x4e, KEY_FORWARD },
1615 { 0x53, KEY_PREVIOUS },
1616 { 0x4c, KEY_STOP },
1617 { 0x54, KEY_NEXT },
1618
1619 { 0x69, KEY_0 },
1620 { 0x6a, KEY_1 },
1621 { 0x6b, KEY_2 },
1622 { 0x6c, KEY_3 },
1623 { 0x6d, KEY_4 },
1624 { 0x6e, KEY_5 },
1625 { 0x6f, KEY_6 },
1626 { 0x70, KEY_7 },
1627 { 0x71, KEY_8 },
1628 { 0x72, KEY_9 },
1629
1630 { 0x74, KEY_CHANNEL },
1631 { 0x0a, KEY_BACKSPACE },
1632};
2915e5ef 1633IR_TABLE(pinnacle_color, IR_TYPE_UNKNOWN, ir_codes_pinnacle_color);
4c0f631e
RC
1634
1635/* Hauppauge: the newer, gray remotes (seems there are multiple
1636 * slightly different versions), shipped with cx88+ivtv cards.
1637 * almost rc5 coding, but some non-standard keys */
715a2233 1638static struct ir_scancode ir_codes_hauppauge_new[] = {
4c0f631e 1639 /* Keys 0 to 9 */
715a2233
MCC
1640 { 0x00, KEY_0 },
1641 { 0x01, KEY_1 },
1642 { 0x02, KEY_2 },
1643 { 0x03, KEY_3 },
1644 { 0x04, KEY_4 },
1645 { 0x05, KEY_5 },
1646 { 0x06, KEY_6 },
1647 { 0x07, KEY_7 },
1648 { 0x08, KEY_8 },
1649 { 0x09, KEY_9 },
1650
1651 { 0x0a, KEY_TEXT }, /* keypad asterisk as well */
1652 { 0x0b, KEY_RED }, /* red button */
1653 { 0x0c, KEY_RADIO },
1654 { 0x0d, KEY_MENU },
1655 { 0x0e, KEY_SUBTITLE }, /* also the # key */
1656 { 0x0f, KEY_MUTE },
1657 { 0x10, KEY_VOLUMEUP },
1658 { 0x11, KEY_VOLUMEDOWN },
1659 { 0x12, KEY_PREVIOUS }, /* previous channel */
1660 { 0x14, KEY_UP },
1661 { 0x15, KEY_DOWN },
1662 { 0x16, KEY_LEFT },
1663 { 0x17, KEY_RIGHT },
1664 { 0x18, KEY_VIDEO }, /* Videos */
1665 { 0x19, KEY_AUDIO }, /* Music */
4c0f631e
RC
1666 /* 0x1a: Pictures - presume this means
1667 "Multimedia Home Platform" -
1668 no "PICTURES" key in input.h
1669 */
715a2233
MCC
1670 { 0x1a, KEY_MHP },
1671
1672 { 0x1b, KEY_EPG }, /* Guide */
1673 { 0x1c, KEY_TV },
1674 { 0x1e, KEY_NEXTSONG }, /* skip >| */
1675 { 0x1f, KEY_EXIT }, /* back/exit */
1676 { 0x20, KEY_CHANNELUP }, /* channel / program + */
1677 { 0x21, KEY_CHANNELDOWN }, /* channel / program - */
1678 { 0x22, KEY_CHANNEL }, /* source (old black remote) */
1679 { 0x24, KEY_PREVIOUSSONG }, /* replay |< */
1680 { 0x25, KEY_ENTER }, /* OK */
1681 { 0x26, KEY_SLEEP }, /* minimize (old black remote) */
1682 { 0x29, KEY_BLUE }, /* blue key */
1683 { 0x2e, KEY_GREEN }, /* green button */
1684 { 0x30, KEY_PAUSE }, /* pause */
1685 { 0x32, KEY_REWIND }, /* backward << */
1686 { 0x34, KEY_FASTFORWARD }, /* forward >> */
1687 { 0x35, KEY_PLAY },
1688 { 0x36, KEY_STOP },
1689 { 0x37, KEY_RECORD }, /* recording */
1690 { 0x38, KEY_YELLOW }, /* yellow key */
1691 { 0x3b, KEY_SELECT }, /* top right button */
1692 { 0x3c, KEY_ZOOM }, /* full */
1693 { 0x3d, KEY_POWER }, /* system power (green button) */
1694};
2915e5ef 1695IR_TABLE(hauppauge_new, IR_TYPE_UNKNOWN, ir_codes_hauppauge_new);
715a2233
MCC
1696
1697static struct ir_scancode ir_codes_npgtech[] = {
1698 { 0x1d, KEY_SWITCHVIDEOMODE }, /* switch inputs */
1699 { 0x2a, KEY_FRONT },
1700
1701 { 0x3e, KEY_1 },
1702 { 0x02, KEY_2 },
1703 { 0x06, KEY_3 },
1704 { 0x0a, KEY_4 },
1705 { 0x0e, KEY_5 },
1706 { 0x12, KEY_6 },
1707 { 0x16, KEY_7 },
1708 { 0x1a, KEY_8 },
1709 { 0x1e, KEY_9 },
1710 { 0x3a, KEY_0 },
1711 { 0x22, KEY_NUMLOCK }, /* -/-- */
1712 { 0x20, KEY_REFRESH },
1713
1714 { 0x03, KEY_BRIGHTNESSDOWN },
1715 { 0x28, KEY_AUDIO },
1716 { 0x3c, KEY_CHANNELUP },
1717 { 0x3f, KEY_VOLUMEDOWN },
1718 { 0x2e, KEY_MUTE },
1719 { 0x3b, KEY_VOLUMEUP },
1720 { 0x00, KEY_CHANNELDOWN },
1721 { 0x07, KEY_BRIGHTNESSUP },
1722 { 0x2c, KEY_TEXT },
1723
1724 { 0x37, KEY_RECORD },
1725 { 0x17, KEY_PLAY },
1726 { 0x13, KEY_PAUSE },
1727 { 0x26, KEY_STOP },
1728 { 0x18, KEY_FASTFORWARD },
1729 { 0x14, KEY_REWIND },
1730 { 0x33, KEY_ZOOM },
1731 { 0x32, KEY_KEYBOARD },
1732 { 0x30, KEY_GOTO }, /* Pointing arrow */
1733 { 0x36, KEY_MACRO }, /* Maximize/Minimize (yellow) */
1734 { 0x0b, KEY_RADIO },
1735 { 0x10, KEY_POWER },
1736
1737};
2915e5ef 1738IR_TABLE(npgtech, IR_TYPE_UNKNOWN, ir_codes_npgtech);
d1009bd7
PN
1739
1740/* Norwood Micro (non-Pro) TV Tuner
1741 By Peter Naulls <peter@chocky.org>
1742 Key comments are the functions given in the manual */
715a2233 1743static struct ir_scancode ir_codes_norwood[] = {
d1009bd7 1744 /* Keys 0 to 9 */
715a2233
MCC
1745 { 0x20, KEY_0 },
1746 { 0x21, KEY_1 },
1747 { 0x22, KEY_2 },
1748 { 0x23, KEY_3 },
1749 { 0x24, KEY_4 },
1750 { 0x25, KEY_5 },
1751 { 0x26, KEY_6 },
1752 { 0x27, KEY_7 },
1753 { 0x28, KEY_8 },
1754 { 0x29, KEY_9 },
1755
1756 { 0x78, KEY_TUNER }, /* Video Source */
1757 { 0x2c, KEY_EXIT }, /* Open/Close software */
1758 { 0x2a, KEY_SELECT }, /* 2 Digit Select */
1759 { 0x69, KEY_AGAIN }, /* Recall */
1760
1761 { 0x32, KEY_BRIGHTNESSUP }, /* Brightness increase */
1762 { 0x33, KEY_BRIGHTNESSDOWN }, /* Brightness decrease */
1763 { 0x6b, KEY_KPPLUS }, /* (not named >>>>>) */
1764 { 0x6c, KEY_KPMINUS }, /* (not named <<<<<) */
1765
1766 { 0x2d, KEY_MUTE }, /* Mute */
1767 { 0x30, KEY_VOLUMEUP }, /* Volume up */
1768 { 0x31, KEY_VOLUMEDOWN }, /* Volume down */
1769 { 0x60, KEY_CHANNELUP }, /* Channel up */
1770 { 0x61, KEY_CHANNELDOWN }, /* Channel down */
1771
1772 { 0x3f, KEY_RECORD }, /* Record */
1773 { 0x37, KEY_PLAY }, /* Play */
1774 { 0x36, KEY_PAUSE }, /* Pause */
1775 { 0x2b, KEY_STOP }, /* Stop */
1776 { 0x67, KEY_FASTFORWARD }, /* Foward */
1777 { 0x66, KEY_REWIND }, /* Rewind */
1778 { 0x3e, KEY_SEARCH }, /* Auto Scan */
1779 { 0x2e, KEY_CAMERA }, /* Capture Video */
1780 { 0x6d, KEY_MENU }, /* Show/Hide Control */
1781 { 0x2f, KEY_ZOOM }, /* Full Screen */
1782 { 0x34, KEY_RADIO }, /* FM */
1783 { 0x65, KEY_POWER }, /* Computer power */
1784};
2915e5ef 1785IR_TABLE(norwood, IR_TYPE_UNKNOWN, ir_codes_norwood);
2520fffd
DH
1786
1787/* From reading the following remotes:
1788 * Zenith Universal 7 / TV Mode 807 / VCR Mode 837
1789 * Hauppauge (from NOVA-CI-s box product)
1790 * This is a "middle of the road" approach, differences are noted
1791 */
715a2233
MCC
1792static struct ir_scancode ir_codes_budget_ci_old[] = {
1793 { 0x00, KEY_0 },
1794 { 0x01, KEY_1 },
1795 { 0x02, KEY_2 },
1796 { 0x03, KEY_3 },
1797 { 0x04, KEY_4 },
1798 { 0x05, KEY_5 },
1799 { 0x06, KEY_6 },
1800 { 0x07, KEY_7 },
1801 { 0x08, KEY_8 },
1802 { 0x09, KEY_9 },
1803 { 0x0a, KEY_ENTER },
1804 { 0x0b, KEY_RED },
1805 { 0x0c, KEY_POWER }, /* RADIO on Hauppauge */
1806 { 0x0d, KEY_MUTE },
1807 { 0x0f, KEY_A }, /* TV on Hauppauge */
1808 { 0x10, KEY_VOLUMEUP },
1809 { 0x11, KEY_VOLUMEDOWN },
1810 { 0x14, KEY_B },
1811 { 0x1c, KEY_UP },
1812 { 0x1d, KEY_DOWN },
1813 { 0x1e, KEY_OPTION }, /* RESERVED on Hauppauge */
1814 { 0x1f, KEY_BREAK },
1815 { 0x20, KEY_CHANNELUP },
1816 { 0x21, KEY_CHANNELDOWN },
1817 { 0x22, KEY_PREVIOUS }, /* Prev Ch on Zenith, SOURCE on Hauppauge */
1818 { 0x24, KEY_RESTART },
1819 { 0x25, KEY_OK },
1820 { 0x26, KEY_CYCLEWINDOWS }, /* MINIMIZE on Hauppauge */
1821 { 0x28, KEY_ENTER }, /* VCR mode on Zenith */
1822 { 0x29, KEY_PAUSE },
1823 { 0x2b, KEY_RIGHT },
1824 { 0x2c, KEY_LEFT },
1825 { 0x2e, KEY_MENU }, /* FULL SCREEN on Hauppauge */
1826 { 0x30, KEY_SLOW },
1827 { 0x31, KEY_PREVIOUS }, /* VCR mode on Zenith */
1828 { 0x32, KEY_REWIND },
1829 { 0x34, KEY_FASTFORWARD },
1830 { 0x35, KEY_PLAY },
1831 { 0x36, KEY_STOP },
1832 { 0x37, KEY_RECORD },
1833 { 0x38, KEY_TUNER }, /* TV/VCR on Zenith */
1834 { 0x3a, KEY_C },
1835 { 0x3c, KEY_EXIT },
1836 { 0x3d, KEY_POWER2 },
1837 { 0x3e, KEY_TUNER },
1838};
2915e5ef 1839IR_TABLE(budget_ci_old, IR_TYPE_UNKNOWN, ir_codes_budget_ci_old);
9160723e
HP
1840
1841/*
1842 * Marc Fargas <telenieko@telenieko.com>
1843 * this is the remote control that comes with the asus p7131
1844 * which has a label saying is "Model PC-39"
1845 */
715a2233 1846static struct ir_scancode ir_codes_asus_pc39[] = {
9160723e 1847 /* Keys 0 to 9 */
715a2233
MCC
1848 { 0x15, KEY_0 },
1849 { 0x29, KEY_1 },
1850 { 0x2d, KEY_2 },
1851 { 0x2b, KEY_3 },
1852 { 0x09, KEY_4 },
1853 { 0x0d, KEY_5 },
1854 { 0x0b, KEY_6 },
1855 { 0x31, KEY_7 },
1856 { 0x35, KEY_8 },
1857 { 0x33, KEY_9 },
1858
1859 { 0x3e, KEY_RADIO }, /* radio */
1860 { 0x03, KEY_MENU }, /* dvd/menu */
1861 { 0x2a, KEY_VOLUMEUP },
1862 { 0x19, KEY_VOLUMEDOWN },
1863 { 0x37, KEY_UP },
1864 { 0x3b, KEY_DOWN },
1865 { 0x27, KEY_LEFT },
1866 { 0x2f, KEY_RIGHT },
1867 { 0x25, KEY_VIDEO }, /* video */
1868 { 0x39, KEY_AUDIO }, /* music */
1869
1870 { 0x21, KEY_TV }, /* tv */
1871 { 0x1d, KEY_EXIT }, /* back */
1872 { 0x0a, KEY_CHANNELUP }, /* channel / program + */
1873 { 0x1b, KEY_CHANNELDOWN }, /* channel / program - */
1874 { 0x1a, KEY_ENTER }, /* enter */
1875
1876 { 0x06, KEY_PAUSE }, /* play/pause */
1877 { 0x1e, KEY_PREVIOUS }, /* rew */
1878 { 0x26, KEY_NEXT }, /* forward */
1879 { 0x0e, KEY_REWIND }, /* backward << */
1880 { 0x3a, KEY_FASTFORWARD }, /* forward >> */
1881 { 0x36, KEY_STOP },
1882 { 0x2e, KEY_RECORD }, /* recording */
1883 { 0x16, KEY_POWER }, /* the button that reads "close" */
1884
1885 { 0x11, KEY_ZOOM }, /* full screen */
1886 { 0x13, KEY_MACRO }, /* recall */
1887 { 0x23, KEY_HOME }, /* home */
1888 { 0x05, KEY_PVR }, /* picture */
1889 { 0x3d, KEY_MUTE }, /* mute */
1890 { 0x01, KEY_DVD }, /* dvd */
1891};
2915e5ef 1892IR_TABLE(asus_pc39, IR_TYPE_UNKNOWN, ir_codes_asus_pc39);
c36c459a
JPS
1893
1894/* Encore ENLTV-FM - black plastic, white front cover with white glowing buttons
1895 Juan Pablo Sormani <sorman@gmail.com> */
715a2233 1896static struct ir_scancode ir_codes_encore_enltv[] = {
c36c459a
JPS
1897
1898 /* Power button does nothing, neither in Windows app,
1899 although it sends data (used for BIOS wakeup?) */
715a2233
MCC
1900 { 0x0d, KEY_MUTE },
1901
1902 { 0x1e, KEY_TV },
1903 { 0x00, KEY_VIDEO },
1904 { 0x01, KEY_AUDIO }, /* music */
1905 { 0x02, KEY_MHP }, /* picture */
1906
1907 { 0x1f, KEY_1 },
1908 { 0x03, KEY_2 },
1909 { 0x04, KEY_3 },
1910 { 0x05, KEY_4 },
1911 { 0x1c, KEY_5 },
1912 { 0x06, KEY_6 },
1913 { 0x07, KEY_7 },
1914 { 0x08, KEY_8 },
1915 { 0x1d, KEY_9 },
1916 { 0x0a, KEY_0 },
1917
1918 { 0x09, KEY_LIST }, /* -/-- */
1919 { 0x0b, KEY_LAST }, /* recall */
1920
1921 { 0x14, KEY_HOME }, /* win start menu */
1922 { 0x15, KEY_EXIT }, /* exit */
1923 { 0x16, KEY_CHANNELUP }, /* UP */
1924 { 0x12, KEY_CHANNELDOWN }, /* DOWN */
1925 { 0x0c, KEY_VOLUMEUP }, /* RIGHT */
1926 { 0x17, KEY_VOLUMEDOWN }, /* LEFT */
1927
1928 { 0x18, KEY_ENTER }, /* OK */
1929
1930 { 0x0e, KEY_ESC },
1931 { 0x13, KEY_CYCLEWINDOWS }, /* desktop */
1932 { 0x11, KEY_TAB },
1933 { 0x19, KEY_SWITCHVIDEOMODE }, /* switch */
1934
1935 { 0x1a, KEY_MENU },
1936 { 0x1b, KEY_ZOOM }, /* fullscreen */
1937 { 0x44, KEY_TIME }, /* time shift */
1938 { 0x40, KEY_MODE }, /* source */
1939
1940 { 0x5a, KEY_RECORD },
1941 { 0x42, KEY_PLAY }, /* play/pause */
1942 { 0x45, KEY_STOP },
1943 { 0x43, KEY_CAMERA }, /* camera icon */
1944
1945 { 0x48, KEY_REWIND },
1946 { 0x4a, KEY_FASTFORWARD },
1947 { 0x49, KEY_PREVIOUS },
1948 { 0x4b, KEY_NEXT },
1949
1950 { 0x4c, KEY_FAVORITES }, /* tv wall */
1951 { 0x4d, KEY_SOUND }, /* DVD sound */
1952 { 0x4e, KEY_LANGUAGE }, /* DVD lang */
1953 { 0x4f, KEY_TEXT }, /* DVD text */
1954
1955 { 0x50, KEY_SLEEP }, /* shutdown */
1956 { 0x51, KEY_MODE }, /* stereo > main */
1957 { 0x52, KEY_SELECT }, /* stereo > sap */
1958 { 0x53, KEY_PROG1 }, /* teletext */
1959
1960
1961 { 0x59, KEY_RED }, /* AP1 */
1962 { 0x41, KEY_GREEN }, /* AP2 */
1963 { 0x47, KEY_YELLOW }, /* AP3 */
1964 { 0x57, KEY_BLUE }, /* AP4 */
1965};
2915e5ef 1966IR_TABLE(encore_enltv, IR_TYPE_UNKNOWN, ir_codes_encore_enltv);
ae1942c5 1967
7d341a6a
MCC
1968/* Encore ENLTV2-FM - silver plastic - "Wand Media" written at the botton
1969 Mauro Carvalho Chehab <mchehab@infradead.org> */
715a2233
MCC
1970static struct ir_scancode ir_codes_encore_enltv2[] = {
1971 { 0x4c, KEY_POWER2 },
1972 { 0x4a, KEY_TUNER },
1973 { 0x40, KEY_1 },
1974 { 0x60, KEY_2 },
1975 { 0x50, KEY_3 },
1976 { 0x70, KEY_4 },
1977 { 0x48, KEY_5 },
1978 { 0x68, KEY_6 },
1979 { 0x58, KEY_7 },
1980 { 0x78, KEY_8 },
1981 { 0x44, KEY_9 },
1982 { 0x54, KEY_0 },
1983
1984 { 0x64, KEY_LAST }, /* +100 */
1985 { 0x4e, KEY_AGAIN }, /* Recall */
1986
1987 { 0x6c, KEY_SWITCHVIDEOMODE }, /* Video Source */
1988 { 0x5e, KEY_MENU },
1989 { 0x56, KEY_SCREEN },
1990 { 0x7a, KEY_SETUP },
1991
1992 { 0x46, KEY_MUTE },
1993 { 0x5c, KEY_MODE }, /* Stereo */
1994 { 0x74, KEY_INFO },
1995 { 0x7c, KEY_CLEAR },
1996
1997 { 0x55, KEY_UP },
1998 { 0x49, KEY_DOWN },
1999 { 0x7e, KEY_LEFT },
2000 { 0x59, KEY_RIGHT },
2001 { 0x6a, KEY_ENTER },
2002
2003 { 0x42, KEY_VOLUMEUP },
2004 { 0x62, KEY_VOLUMEDOWN },
2005 { 0x52, KEY_CHANNELUP },
2006 { 0x72, KEY_CHANNELDOWN },
2007
2008 { 0x41, KEY_RECORD },
2009 { 0x51, KEY_CAMERA }, /* Snapshot */
2010 { 0x75, KEY_TIME }, /* Timeshift */
2011 { 0x71, KEY_TV2 }, /* PIP */
2012
2013 { 0x45, KEY_REWIND },
2014 { 0x6f, KEY_PAUSE },
2015 { 0x7d, KEY_FORWARD },
2016 { 0x79, KEY_STOP },
2017};
2915e5ef 2018IR_TABLE(encore_enltv2, IR_TYPE_UNKNOWN, ir_codes_encore_enltv2);
7d341a6a 2019
28aedb8f 2020/* for the Technotrend 1500 bundled remotes (grey and black): */
715a2233
MCC
2021static struct ir_scancode ir_codes_tt_1500[] = {
2022 { 0x01, KEY_POWER },
2023 { 0x02, KEY_SHUFFLE }, /* ? double-arrow key */
2024 { 0x03, KEY_1 },
2025 { 0x04, KEY_2 },
2026 { 0x05, KEY_3 },
2027 { 0x06, KEY_4 },
2028 { 0x07, KEY_5 },
2029 { 0x08, KEY_6 },
2030 { 0x09, KEY_7 },
2031 { 0x0a, KEY_8 },
2032 { 0x0b, KEY_9 },
2033 { 0x0c, KEY_0 },
2034 { 0x0d, KEY_UP },
2035 { 0x0e, KEY_LEFT },
2036 { 0x0f, KEY_OK },
2037 { 0x10, KEY_RIGHT },
2038 { 0x11, KEY_DOWN },
2039 { 0x12, KEY_INFO },
2040 { 0x13, KEY_EXIT },
2041 { 0x14, KEY_RED },
2042 { 0x15, KEY_GREEN },
2043 { 0x16, KEY_YELLOW },
2044 { 0x17, KEY_BLUE },
2045 { 0x18, KEY_MUTE },
2046 { 0x19, KEY_TEXT },
2047 { 0x1a, KEY_MODE }, /* ? TV/Radio */
2048 { 0x21, KEY_OPTION },
2049 { 0x22, KEY_EPG },
2050 { 0x23, KEY_CHANNELUP },
2051 { 0x24, KEY_CHANNELDOWN },
2052 { 0x25, KEY_VOLUMEUP },
2053 { 0x26, KEY_VOLUMEDOWN },
2054 { 0x27, KEY_SETUP },
2055 { 0x3a, KEY_RECORD }, /* these keys are only in the black remote */
2056 { 0x3b, KEY_PLAY },
2057 { 0x3c, KEY_STOP },
2058 { 0x3d, KEY_REWIND },
2059 { 0x3e, KEY_PAUSE },
2060 { 0x3f, KEY_FORWARD },
2061};
2915e5ef 2062IR_TABLE(tt_1500, IR_TYPE_UNKNOWN, ir_codes_tt_1500);
d54d6980 2063
3c44358c 2064/* DViCO FUSION HDTV MCE remote */
715a2233
MCC
2065static struct ir_scancode ir_codes_fusionhdtv_mce[] = {
2066
2067 { 0x0b, KEY_1 },
2068 { 0x17, KEY_2 },
2069 { 0x1b, KEY_3 },
2070 { 0x07, KEY_4 },
2071 { 0x50, KEY_5 },
2072 { 0x54, KEY_6 },
2073 { 0x48, KEY_7 },
2074 { 0x4c, KEY_8 },
2075 { 0x58, KEY_9 },
2076 { 0x03, KEY_0 },
2077
2078 { 0x5e, KEY_OK },
2079 { 0x51, KEY_UP },
2080 { 0x53, KEY_DOWN },
2081 { 0x5b, KEY_LEFT },
2082 { 0x5f, KEY_RIGHT },
2083
2084 { 0x02, KEY_TV }, /* Labeled DTV on remote */
2085 { 0x0e, KEY_MP3 },
2086 { 0x1a, KEY_DVD },
2087 { 0x1e, KEY_FAVORITES }, /* Labeled CPF on remote */
2088 { 0x16, KEY_SETUP },
2089 { 0x46, KEY_POWER2 }, /* TV On/Off button on remote */
2090 { 0x0a, KEY_EPG }, /* Labeled Guide on remote */
2091
2092 { 0x49, KEY_BACK },
2093 { 0x59, KEY_INFO }, /* Labeled MORE on remote */
2094 { 0x4d, KEY_MENU }, /* Labeled DVDMENU on remote */
2095 { 0x55, KEY_CYCLEWINDOWS }, /* Labeled ALT-TAB on remote */
2096
2097 { 0x0f, KEY_PREVIOUSSONG }, /* Labeled |<< REPLAY on remote */
2098 { 0x12, KEY_NEXTSONG }, /* Labeled >>| SKIP on remote */
2099 { 0x42, KEY_ENTER }, /* Labeled START with a green
5d35364e 2100 MS windows logo on remote */
d54d6980 2101
715a2233
MCC
2102 { 0x15, KEY_VOLUMEUP },
2103 { 0x05, KEY_VOLUMEDOWN },
2104 { 0x11, KEY_CHANNELUP },
2105 { 0x09, KEY_CHANNELDOWN },
2106
2107 { 0x52, KEY_CAMERA },
2108 { 0x5a, KEY_TUNER },
2109 { 0x19, KEY_OPEN },
2110
2111 { 0x13, KEY_MODE }, /* 4:3 16:9 select */
2112 { 0x1f, KEY_ZOOM },
2113
2114 { 0x43, KEY_REWIND },
2115 { 0x47, KEY_PLAYPAUSE },
2116 { 0x4f, KEY_FASTFORWARD },
2117 { 0x57, KEY_MUTE },
2118 { 0x0d, KEY_STOP },
2119 { 0x01, KEY_RECORD },
2120 { 0x4e, KEY_POWER },
2121};
2915e5ef 2122IR_TABLE(fusionhdtv_mce, IR_TYPE_UNKNOWN, ir_codes_fusionhdtv_mce);
e8018c9e 2123
9121106a 2124/* Pinnacle PCTV HD 800i mini remote */
715a2233
MCC
2125static struct ir_scancode ir_codes_pinnacle_pctv_hd[] = {
2126
2127 { 0x0f, KEY_1 },
2128 { 0x15, KEY_2 },
2129 { 0x10, KEY_3 },
2130 { 0x18, KEY_4 },
2131 { 0x1b, KEY_5 },
2132 { 0x1e, KEY_6 },
2133 { 0x11, KEY_7 },
2134 { 0x21, KEY_8 },
2135 { 0x12, KEY_9 },
2136 { 0x27, KEY_0 },
2137
2138 { 0x24, KEY_ZOOM },
2139 { 0x2a, KEY_SUBTITLE },
2140
2141 { 0x00, KEY_MUTE },
2142 { 0x01, KEY_ENTER }, /* Pinnacle Logo */
2143 { 0x39, KEY_POWER },
2144
2145 { 0x03, KEY_VOLUMEUP },
2146 { 0x09, KEY_VOLUMEDOWN },
2147 { 0x06, KEY_CHANNELUP },
2148 { 0x0c, KEY_CHANNELDOWN },
2149
2150 { 0x2d, KEY_REWIND },
2151 { 0x30, KEY_PLAYPAUSE },
2152 { 0x33, KEY_FASTFORWARD },
2153 { 0x3c, KEY_STOP },
2154 { 0x36, KEY_RECORD },
2155 { 0x3f, KEY_EPG }, /* Labeled "?" */
2156};
2915e5ef 2157IR_TABLE(pinnacle_pctv_hd, IR_TYPE_UNKNOWN, ir_codes_pinnacle_pctv_hd);
9121106a 2158
e8018c9e
AMT
2159/*
2160 * Igor Kuznetsov <igk72@ya.ru>
2161 * Andrey J. Melnikov <temnota@kmv.ru>
2162 *
2163 * Keytable is used by BeholdTV 60x series, M6 series at
2164 * least, and probably other cards too.
2165 * The "ascii-art picture" below (in comments, first row
2166 * is the keycode in hex, and subsequent row(s) shows
2167 * the button labels (several variants when appropriate)
2168 * helps to descide which keycodes to assign to the buttons.
2169 */
715a2233 2170static struct ir_scancode ir_codes_behold[] = {
e8018c9e
AMT
2171
2172 /* 0x1c 0x12 *
2173 * TV/FM POWER *
2174 * */
715a2233
MCC
2175 { 0x1c, KEY_TUNER }, /* XXX KEY_TV / KEY_RADIO */
2176 { 0x12, KEY_POWER },
e8018c9e
AMT
2177
2178 /* 0x01 0x02 0x03 *
2179 * 1 2 3 *
2180 * *
2181 * 0x04 0x05 0x06 *
2182 * 4 5 6 *
2183 * *
2184 * 0x07 0x08 0x09 *
2185 * 7 8 9 *
2186 * */
715a2233
MCC
2187 { 0x01, KEY_1 },
2188 { 0x02, KEY_2 },
2189 { 0x03, KEY_3 },
2190 { 0x04, KEY_4 },
2191 { 0x05, KEY_5 },
2192 { 0x06, KEY_6 },
2193 { 0x07, KEY_7 },
2194 { 0x08, KEY_8 },
2195 { 0x09, KEY_9 },
e8018c9e
AMT
2196
2197 /* 0x0a 0x00 0x17 *
2198 * RECALL 0 MODE *
2199 * */
715a2233
MCC
2200 { 0x0a, KEY_AGAIN },
2201 { 0x00, KEY_0 },
2202 { 0x17, KEY_MODE },
e8018c9e
AMT
2203
2204 /* 0x14 0x10 *
2205 * ASPECT FULLSCREEN *
2206 * */
715a2233
MCC
2207 { 0x14, KEY_SCREEN },
2208 { 0x10, KEY_ZOOM },
e8018c9e
AMT
2209
2210 /* 0x0b *
2211 * Up *
2212 * *
2213 * 0x18 0x16 0x0c *
2214 * Left Ok Right *
2215 * *
2216 * 0x015 *
2217 * Down *
2218 * */
715a2233
MCC
2219 { 0x0b, KEY_CHANNELUP },
2220 { 0x18, KEY_VOLUMEDOWN },
2221 { 0x16, KEY_OK }, /* XXX KEY_ENTER */
2222 { 0x0c, KEY_VOLUMEUP },
2223 { 0x15, KEY_CHANNELDOWN },
e8018c9e
AMT
2224
2225 /* 0x11 0x0d *
2226 * MUTE INFO *
2227 * */
715a2233
MCC
2228 { 0x11, KEY_MUTE },
2229 { 0x0d, KEY_INFO },
e8018c9e
AMT
2230
2231 /* 0x0f 0x1b 0x1a *
2232 * RECORD PLAY/PAUSE STOP *
2233 * *
2234 * 0x0e 0x1f 0x1e *
2235 *TELETEXT AUDIO SOURCE *
2236 * RED YELLOW *
2237 * */
715a2233
MCC
2238 { 0x0f, KEY_RECORD },
2239 { 0x1b, KEY_PLAYPAUSE },
2240 { 0x1a, KEY_STOP },
2241 { 0x0e, KEY_TEXT },
2242 { 0x1f, KEY_RED }, /*XXX KEY_AUDIO */
2243 { 0x1e, KEY_YELLOW }, /*XXX KEY_SOURCE */
e8018c9e
AMT
2244
2245 /* 0x1d 0x13 0x19 *
2246 * SLEEP PREVIEW DVB *
2247 * GREEN BLUE *
2248 * */
715a2233
MCC
2249 { 0x1d, KEY_SLEEP },
2250 { 0x13, KEY_GREEN },
2251 { 0x19, KEY_BLUE }, /* XXX KEY_SAT */
e8018c9e
AMT
2252
2253 /* 0x58 0x5c *
2254 * FREEZE SNAPSHOT *
2255 * */
715a2233
MCC
2256 { 0x58, KEY_SLOW },
2257 { 0x5c, KEY_CAMERA },
e8018c9e
AMT
2258
2259};
2915e5ef 2260IR_TABLE(behold, IR_TYPE_UNKNOWN, ir_codes_behold);
f0ba356c 2261
b34dddbe
DB
2262/* Beholder Intl. Ltd. 2008
2263 * Dmitry Belimov d.belimov@google.com
2264 * Keytable is used by BeholdTV Columbus
2265 * The "ascii-art picture" below (in comments, first row
2266 * is the keycode in hex, and subsequent row(s) shows
2267 * the button labels (several variants when appropriate)
2268 * helps to descide which keycodes to assign to the buttons.
2269 */
715a2233 2270static struct ir_scancode ir_codes_behold_columbus[] = {
b34dddbe
DB
2271
2272 /* 0x13 0x11 0x1C 0x12 *
2273 * Mute Source TV/FM Power *
2274 * */
2275
715a2233
MCC
2276 { 0x13, KEY_MUTE },
2277 { 0x11, KEY_PROPS },
2278 { 0x1C, KEY_TUNER }, /* KEY_TV/KEY_RADIO */
2279 { 0x12, KEY_POWER },
b34dddbe
DB
2280
2281 /* 0x01 0x02 0x03 0x0D *
2282 * 1 2 3 Stereo *
2283 * *
2284 * 0x04 0x05 0x06 0x19 *
2285 * 4 5 6 Snapshot *
2286 * *
2287 * 0x07 0x08 0x09 0x10 *
2288 * 7 8 9 Zoom *
2289 * */
715a2233
MCC
2290 { 0x01, KEY_1 },
2291 { 0x02, KEY_2 },
2292 { 0x03, KEY_3 },
2293 { 0x0D, KEY_SETUP }, /* Setup key */
2294 { 0x04, KEY_4 },
2295 { 0x05, KEY_5 },
2296 { 0x06, KEY_6 },
2297 { 0x19, KEY_CAMERA }, /* Snapshot key */
2298 { 0x07, KEY_7 },
2299 { 0x08, KEY_8 },
2300 { 0x09, KEY_9 },
2301 { 0x10, KEY_ZOOM },
b34dddbe
DB
2302
2303 /* 0x0A 0x00 0x0B 0x0C *
2304 * RECALL 0 ChannelUp VolumeUp *
2305 * */
715a2233
MCC
2306 { 0x0A, KEY_AGAIN },
2307 { 0x00, KEY_0 },
2308 { 0x0B, KEY_CHANNELUP },
2309 { 0x0C, KEY_VOLUMEUP },
b34dddbe
DB
2310
2311 /* 0x1B 0x1D 0x15 0x18 *
2312 * Timeshift Record ChannelDown VolumeDown *
2313 * */
2314
715a2233
MCC
2315 { 0x1B, KEY_TIME },
2316 { 0x1D, KEY_RECORD },
2317 { 0x15, KEY_CHANNELDOWN },
2318 { 0x18, KEY_VOLUMEDOWN },
b34dddbe
DB
2319
2320 /* 0x0E 0x1E 0x0F 0x1A *
2321 * Stop Pause Previouse Next *
2322 * */
2323
715a2233
MCC
2324 { 0x0E, KEY_STOP },
2325 { 0x1E, KEY_PAUSE },
2326 { 0x0F, KEY_PREVIOUS },
2327 { 0x1A, KEY_NEXT },
2328
2329};
2915e5ef 2330IR_TABLE(behold_columbus, IR_TYPE_UNKNOWN, ir_codes_behold_columbus);
b34dddbe 2331
f0ba356c
AP
2332/*
2333 * Remote control for the Genius TVGO A11MCE
2334 * Adrian Pardini <pardo.bsso@gmail.com>
2335 */
715a2233 2336static struct ir_scancode ir_codes_genius_tvgo_a11mce[] = {
f0ba356c 2337 /* Keys 0 to 9 */
715a2233
MCC
2338 { 0x48, KEY_0 },
2339 { 0x09, KEY_1 },
2340 { 0x1d, KEY_2 },
2341 { 0x1f, KEY_3 },
2342 { 0x19, KEY_4 },
2343 { 0x1b, KEY_5 },
2344 { 0x11, KEY_6 },
2345 { 0x17, KEY_7 },
2346 { 0x12, KEY_8 },
2347 { 0x16, KEY_9 },
2348
2349 { 0x54, KEY_RECORD }, /* recording */
2350 { 0x06, KEY_MUTE }, /* mute */
2351 { 0x10, KEY_POWER },
2352 { 0x40, KEY_LAST }, /* recall */
2353 { 0x4c, KEY_CHANNELUP }, /* channel / program + */
2354 { 0x00, KEY_CHANNELDOWN }, /* channel / program - */
2355 { 0x0d, KEY_VOLUMEUP },
2356 { 0x15, KEY_VOLUMEDOWN },
2357 { 0x4d, KEY_OK }, /* also labeled as Pause */
2358 { 0x1c, KEY_ZOOM }, /* full screen and Stop*/
2359 { 0x02, KEY_MODE }, /* AV Source or Rewind*/
2360 { 0x04, KEY_LIST }, /* -/-- */
f0ba356c 2361 /* small arrows above numbers */
715a2233
MCC
2362 { 0x1a, KEY_NEXT }, /* also Fast Forward */
2363 { 0x0e, KEY_PREVIOUS }, /* also Rewind */
f0ba356c
AP
2364 /* these are in a rather non standard layout and have
2365 an alternate name written */
715a2233
MCC
2366 { 0x1e, KEY_UP }, /* Video Setting */
2367 { 0x0a, KEY_DOWN }, /* Video Default */
2368 { 0x05, KEY_CAMERA }, /* Snapshot */
2369 { 0x0c, KEY_RIGHT }, /* Hide Panel */
f0ba356c 2370 /* Four buttons without label */
715a2233
MCC
2371 { 0x49, KEY_RED },
2372 { 0x0b, KEY_GREEN },
2373 { 0x13, KEY_YELLOW },
2374 { 0x50, KEY_BLUE },
f0ba356c 2375};
2915e5ef 2376IR_TABLE(genius_tvgo_a11mce, IR_TYPE_UNKNOWN, ir_codes_genius_tvgo_a11mce);
ba928034
DF
2377
2378/*
2379 * Remote control for Powercolor Real Angel 330
2380 * Daniel Fraga <fragabr@gmail.com>
2381 */
715a2233
MCC
2382static struct ir_scancode ir_codes_powercolor_real_angel[] = {
2383 { 0x38, KEY_SWITCHVIDEOMODE }, /* switch inputs */
2384 { 0x0c, KEY_MEDIA }, /* Turn ON/OFF App */
2385 { 0x00, KEY_0 },
2386 { 0x01, KEY_1 },
2387 { 0x02, KEY_2 },
2388 { 0x03, KEY_3 },
2389 { 0x04, KEY_4 },
2390 { 0x05, KEY_5 },
2391 { 0x06, KEY_6 },
2392 { 0x07, KEY_7 },
2393 { 0x08, KEY_8 },
2394 { 0x09, KEY_9 },
2395 { 0x0a, KEY_DIGITS }, /* single, double, tripple digit */
2396 { 0x29, KEY_PREVIOUS }, /* previous channel */
2397 { 0x12, KEY_BRIGHTNESSUP },
2398 { 0x13, KEY_BRIGHTNESSDOWN },
2399 { 0x2b, KEY_MODE }, /* stereo/mono */
2400 { 0x2c, KEY_TEXT }, /* teletext */
2401 { 0x20, KEY_CHANNELUP }, /* channel up */
2402 { 0x21, KEY_CHANNELDOWN }, /* channel down */
2403 { 0x10, KEY_VOLUMEUP }, /* volume up */
2404 { 0x11, KEY_VOLUMEDOWN }, /* volume down */
2405 { 0x0d, KEY_MUTE },
2406 { 0x1f, KEY_RECORD },
2407 { 0x17, KEY_PLAY },
2408 { 0x16, KEY_PAUSE },
2409 { 0x0b, KEY_STOP },
2410 { 0x27, KEY_FASTFORWARD },
2411 { 0x26, KEY_REWIND },
2412 { 0x1e, KEY_SEARCH }, /* autoscan */
2413 { 0x0e, KEY_CAMERA }, /* snapshot */
2414 { 0x2d, KEY_SETUP },
2415 { 0x0f, KEY_SCREEN }, /* full screen */
2416 { 0x14, KEY_RADIO }, /* FM radio */
2417 { 0x25, KEY_POWER }, /* power */
2418};
2915e5ef 2419IR_TABLE(powercolor_real_angel, IR_TYPE_UNKNOWN, ir_codes_powercolor_real_angel);
6e501a3f 2420
26d5f3a3
MCC
2421/* Kworld Plus TV Analog Lite PCI IR
2422 Mauro Carvalho Chehab <mchehab@infradead.org>
2423 */
715a2233
MCC
2424static struct ir_scancode ir_codes_kworld_plus_tv_analog[] = {
2425 { 0x0c, KEY_PROG1 }, /* Kworld key */
2426 { 0x16, KEY_CLOSECD }, /* -> ) */
2427 { 0x1d, KEY_POWER2 },
2428
2429 { 0x00, KEY_1 },
2430 { 0x01, KEY_2 },
2431 { 0x02, KEY_3 }, /* Two keys have the same code: 3 and left */
2432 { 0x03, KEY_4 }, /* Two keys have the same code: 3 and right */
2433 { 0x04, KEY_5 },
2434 { 0x05, KEY_6 },
2435 { 0x06, KEY_7 },
2436 { 0x07, KEY_8 },
2437 { 0x08, KEY_9 },
2438 { 0x0a, KEY_0 },
2439
2440 { 0x09, KEY_AGAIN },
2441 { 0x14, KEY_MUTE },
2442
2443 { 0x20, KEY_UP },
2444 { 0x21, KEY_DOWN },
2445 { 0x0b, KEY_ENTER },
2446
2447 { 0x10, KEY_CHANNELUP },
2448 { 0x11, KEY_CHANNELDOWN },
26d5f3a3
MCC
2449
2450 /* Couldn't map key left/key right since those
2451 conflict with '3' and '4' scancodes
2452 I dunno what the original driver does
2453 */
2454
715a2233
MCC
2455 { 0x13, KEY_VOLUMEUP },
2456 { 0x12, KEY_VOLUMEDOWN },
26d5f3a3
MCC
2457
2458 /* The lower part of the IR
2459 There are several duplicated keycodes there.
2460 Most of them conflict with digits.
2461 Add mappings just to the unused scancodes.
2462 Somehow, the original driver has a way to know,
2463 but this doesn't seem to be on some GPIO.
2464 Also, it is not related to the time between keyup
2465 and keydown.
2466 */
715a2233
MCC
2467 { 0x19, KEY_TIME}, /* Timeshift */
2468 { 0x1a, KEY_STOP},
2469 { 0x1b, KEY_RECORD},
26d5f3a3 2470
715a2233 2471 { 0x22, KEY_TEXT},
26d5f3a3 2472
715a2233
MCC
2473 { 0x15, KEY_AUDIO}, /* ((*)) */
2474 { 0x0f, KEY_ZOOM},
2475 { 0x1c, KEY_CAMERA}, /* snapshot */
26d5f3a3 2476
715a2233
MCC
2477 { 0x18, KEY_RED}, /* B */
2478 { 0x23, KEY_GREEN}, /* C */
2479};
2915e5ef 2480IR_TABLE(kworld_plus_tv_analog, IR_TYPE_UNKNOWN, ir_codes_kworld_plus_tv_analog);
26d5f3a3 2481
9fc2c5ee
MCC
2482/* Kaiomy TVnPC U2
2483 Mauro Carvalho Chehab <mchehab@infradead.org>
2484 */
715a2233
MCC
2485static struct ir_scancode ir_codes_kaiomy[] = {
2486 { 0x43, KEY_POWER2},
2487 { 0x01, KEY_LIST},
2488 { 0x0b, KEY_ZOOM},
2489 { 0x03, KEY_POWER},
bf1ece6a 2490
715a2233
MCC
2491 { 0x04, KEY_1},
2492 { 0x08, KEY_2},
2493 { 0x02, KEY_3},
9b000191 2494
715a2233
MCC
2495 { 0x0f, KEY_4},
2496 { 0x05, KEY_5},
2497 { 0x06, KEY_6},
2498
2499 { 0x0c, KEY_7},
2500 { 0x0d, KEY_8},
2501 { 0x0a, KEY_9},
2502
2503 { 0x11, KEY_0},
2504
2505 { 0x09, KEY_CHANNELUP},
2506 { 0x07, KEY_CHANNELDOWN},
9b000191 2507
715a2233
MCC
2508 { 0x0e, KEY_VOLUMEUP},
2509 { 0x13, KEY_VOLUMEDOWN},
9b000191 2510
715a2233
MCC
2511 { 0x10, KEY_HOME},
2512 { 0x12, KEY_ENTER},
9b000191 2513
715a2233
MCC
2514 { 0x14, KEY_RECORD},
2515 { 0x15, KEY_STOP},
2516 { 0x16, KEY_PLAY},
2517 { 0x17, KEY_MUTE},
9b000191 2518
715a2233
MCC
2519 { 0x18, KEY_UP},
2520 { 0x19, KEY_DOWN},
2521 { 0x1a, KEY_LEFT},
2522 { 0x1b, KEY_RIGHT},
2523
2524 { 0x1c, KEY_RED},
2525 { 0x1d, KEY_GREEN},
2526 { 0x1e, KEY_YELLOW},
2527 { 0x1f, KEY_BLUE},
2528};
2915e5ef 2529IR_TABLE(kaiomy, IR_TYPE_UNKNOWN, ir_codes_kaiomy);
715a2233
MCC
2530
2531static struct ir_scancode ir_codes_avermedia_a16d[] = {
2532 { 0x20, KEY_LIST},
2533 { 0x00, KEY_POWER},
2534 { 0x28, KEY_1},
2535 { 0x18, KEY_2},
2536 { 0x38, KEY_3},
2537 { 0x24, KEY_4},
2538 { 0x14, KEY_5},
2539 { 0x34, KEY_6},
2540 { 0x2c, KEY_7},
2541 { 0x1c, KEY_8},
2542 { 0x3c, KEY_9},
2543 { 0x12, KEY_SUBTITLE},
2544 { 0x22, KEY_0},
2545 { 0x32, KEY_REWIND},
2546 { 0x3a, KEY_SHUFFLE},
2547 { 0x02, KEY_PRINT},
2548 { 0x11, KEY_CHANNELDOWN},
2549 { 0x31, KEY_CHANNELUP},
2550 { 0x0c, KEY_ZOOM},
2551 { 0x1e, KEY_VOLUMEDOWN},
2552 { 0x3e, KEY_VOLUMEUP},
2553 { 0x0a, KEY_MUTE},
2554 { 0x04, KEY_AUDIO},
2555 { 0x26, KEY_RECORD},
2556 { 0x06, KEY_PLAY},
2557 { 0x36, KEY_STOP},
2558 { 0x16, KEY_PAUSE},
2559 { 0x2e, KEY_REWIND},
2560 { 0x0e, KEY_FASTFORWARD},
2561 { 0x30, KEY_TEXT},
2562 { 0x21, KEY_GREEN},
2563 { 0x01, KEY_BLUE},
2564 { 0x08, KEY_EPG},
2565 { 0x2a, KEY_MENU},
2566};
2915e5ef 2567IR_TABLE(avermedia_a16d, IR_TYPE_UNKNOWN, ir_codes_avermedia_a16d);
9b000191 2568
715a2233
MCC
2569/* Encore ENLTV-FM v5.3
2570 Mauro Carvalho Chehab <mchehab@infradead.org>
2571 */
2572static struct ir_scancode ir_codes_encore_enltv_fm53[] = {
2573 { 0x10, KEY_POWER2},
2574 { 0x06, KEY_MUTE},
2575
2576 { 0x09, KEY_1},
2577 { 0x1d, KEY_2},
2578 { 0x1f, KEY_3},
2579 { 0x19, KEY_4},
2580 { 0x1b, KEY_5},
2581 { 0x11, KEY_6},
2582 { 0x17, KEY_7},
2583 { 0x12, KEY_8},
2584 { 0x16, KEY_9},
2585 { 0x48, KEY_0},
2586
2587 { 0x04, KEY_LIST}, /* -/-- */
2588 { 0x40, KEY_LAST}, /* recall */
2589
2590 { 0x02, KEY_MODE}, /* TV/AV */
2591 { 0x05, KEY_CAMERA}, /* SNAPSHOT */
2592
2593 { 0x4c, KEY_CHANNELUP}, /* UP */
2594 { 0x00, KEY_CHANNELDOWN}, /* DOWN */
2595 { 0x0d, KEY_VOLUMEUP}, /* RIGHT */
2596 { 0x15, KEY_VOLUMEDOWN}, /* LEFT */
2597 { 0x49, KEY_ENTER}, /* OK */
2598
2599 { 0x54, KEY_RECORD},
2600 { 0x4d, KEY_PLAY}, /* pause */
2601
2602 { 0x1e, KEY_MENU}, /* video setting */
2603 { 0x0e, KEY_RIGHT}, /* <- */
2604 { 0x1a, KEY_LEFT}, /* -> */
2605
2606 { 0x0a, KEY_CLEAR}, /* video default */
2607 { 0x0c, KEY_ZOOM}, /* hide pannel */
2608 { 0x47, KEY_SLEEP}, /* shutdown */
2609};
2915e5ef 2610IR_TABLE(encore_enltv_fm53, IR_TYPE_UNKNOWN, ir_codes_encore_enltv_fm53);
9b000191 2611
715a2233
MCC
2612/* Zogis Real Audio 220 - 32 keys IR */
2613static struct ir_scancode ir_codes_real_audio_220_32_keys[] = {
2614 { 0x1c, KEY_RADIO},
2615 { 0x12, KEY_POWER2},
2616
2617 { 0x01, KEY_1},
2618 { 0x02, KEY_2},
2619 { 0x03, KEY_3},
2620 { 0x04, KEY_4},
2621 { 0x05, KEY_5},
2622 { 0x06, KEY_6},
2623 { 0x07, KEY_7},
2624 { 0x08, KEY_8},
2625 { 0x09, KEY_9},
2626 { 0x00, KEY_0},
2627
2628 { 0x0c, KEY_VOLUMEUP},
2629 { 0x18, KEY_VOLUMEDOWN},
2630 { 0x0b, KEY_CHANNELUP},
2631 { 0x15, KEY_CHANNELDOWN},
2632 { 0x16, KEY_ENTER},
2633
2634 { 0x11, KEY_LIST}, /* Source */
2635 { 0x0d, KEY_AUDIO}, /* stereo */
2636
2637 { 0x0f, KEY_PREVIOUS}, /* Prev */
2638 { 0x1b, KEY_TIME}, /* Timeshift */
2639 { 0x1a, KEY_NEXT}, /* Next */
2640
2641 { 0x0e, KEY_STOP},
2642 { 0x1f, KEY_PLAY},
2643 { 0x1e, KEY_PLAYPAUSE}, /* Pause */
2644
2645 { 0x1d, KEY_RECORD},
2646 { 0x13, KEY_MUTE},
2647 { 0x19, KEY_CAMERA}, /* Snapshot */
9b000191
MCC
2648
2649};
2915e5ef 2650IR_TABLE(real_audio_220_32_keys, IR_TYPE_UNKNOWN, ir_codes_real_audio_220_32_keys);
60245e85
DH
2651
2652/* ATI TV Wonder HD 600 USB
2653 Devin Heitmueller <devin.heitmueller@gmail.com>
2654 */
715a2233
MCC
2655static struct ir_scancode ir_codes_ati_tv_wonder_hd_600[] = {
2656 { 0x00, KEY_RECORD}, /* Row 1 */
2657 { 0x01, KEY_PLAYPAUSE},
2658 { 0x02, KEY_STOP},
2659 { 0x03, KEY_POWER},
2660 { 0x04, KEY_PREVIOUS}, /* Row 2 */
2661 { 0x05, KEY_REWIND},
2662 { 0x06, KEY_FORWARD},
2663 { 0x07, KEY_NEXT},
2664 { 0x08, KEY_EPG}, /* Row 3 */
2665 { 0x09, KEY_HOME},
2666 { 0x0a, KEY_MENU},
2667 { 0x0b, KEY_CHANNELUP},
2668 { 0x0c, KEY_BACK}, /* Row 4 */
2669 { 0x0d, KEY_UP},
2670 { 0x0e, KEY_INFO},
2671 { 0x0f, KEY_CHANNELDOWN},
2672 { 0x10, KEY_LEFT}, /* Row 5 */
2673 { 0x11, KEY_SELECT},
2674 { 0x12, KEY_RIGHT},
2675 { 0x13, KEY_VOLUMEUP},
2676 { 0x14, KEY_LAST}, /* Row 6 */
2677 { 0x15, KEY_DOWN},
2678 { 0x16, KEY_MUTE},
2679 { 0x17, KEY_VOLUMEDOWN},
2680};
2915e5ef 2681IR_TABLE(ati_tv_wonder_hd_600, IR_TYPE_UNKNOWN, ir_codes_ati_tv_wonder_hd_600);
b72857dd
IL
2682
2683/* DVBWorld remotes
2684 Igor M. Liplianin <liplianin@me.by>
2685 */
715a2233
MCC
2686static struct ir_scancode ir_codes_dm1105_nec[] = {
2687 { 0x0a, KEY_POWER2}, /* power */
2688 { 0x0c, KEY_MUTE}, /* mute */
2689 { 0x11, KEY_1},
2690 { 0x12, KEY_2},
2691 { 0x13, KEY_3},
2692 { 0x14, KEY_4},
2693 { 0x15, KEY_5},
2694 { 0x16, KEY_6},
2695 { 0x17, KEY_7},
2696 { 0x18, KEY_8},
2697 { 0x19, KEY_9},
2698 { 0x10, KEY_0},
2699 { 0x1c, KEY_CHANNELUP}, /* ch+ */
2700 { 0x0f, KEY_CHANNELDOWN}, /* ch- */
2701 { 0x1a, KEY_VOLUMEUP}, /* vol+ */
2702 { 0x0e, KEY_VOLUMEDOWN}, /* vol- */
2703 { 0x04, KEY_RECORD}, /* rec */
2704 { 0x09, KEY_CHANNEL}, /* fav */
2705 { 0x08, KEY_BACKSPACE}, /* rewind */
2706 { 0x07, KEY_FASTFORWARD}, /* fast */
2707 { 0x0b, KEY_PAUSE}, /* pause */
2708 { 0x02, KEY_ESC}, /* cancel */
2709 { 0x03, KEY_TAB}, /* tab */
2710 { 0x00, KEY_UP}, /* up */
2711 { 0x1f, KEY_ENTER}, /* ok */
2712 { 0x01, KEY_DOWN}, /* down */
2713 { 0x05, KEY_RECORD}, /* cap */
2714 { 0x06, KEY_STOP}, /* stop */
2715 { 0x40, KEY_ZOOM}, /* full */
2716 { 0x1e, KEY_TV}, /* tvmode */
2717 { 0x1b, KEY_B}, /* recall */
2718};
2915e5ef 2719IR_TABLE(dm1105_nec, IR_TYPE_UNKNOWN, ir_codes_dm1105_nec);
8cd9aaef 2720
9d2ba7ad
IL
2721static struct ir_scancode ir_codes_tevii_nec[] = {
2722 { 0x0a, KEY_POWER2},
2723 { 0x0c, KEY_MUTE},
2724 { 0x11, KEY_1},
2725 { 0x12, KEY_2},
2726 { 0x13, KEY_3},
2727 { 0x14, KEY_4},
2728 { 0x15, KEY_5},
2729 { 0x16, KEY_6},
2730 { 0x17, KEY_7},
2731 { 0x18, KEY_8},
2732 { 0x19, KEY_9},
2733 { 0x10, KEY_0},
2734 { 0x1c, KEY_MENU},
2735 { 0x0f, KEY_VOLUMEDOWN},
2736 { 0x1a, KEY_LAST},
2737 { 0x0e, KEY_OPEN},
2738 { 0x04, KEY_RECORD},
2739 { 0x09, KEY_VOLUMEUP},
2740 { 0x08, KEY_CHANNELUP},
2741 { 0x07, KEY_PVR},
2742 { 0x0b, KEY_TIME},
2743 { 0x02, KEY_RIGHT},
2744 { 0x03, KEY_LEFT},
2745 { 0x00, KEY_UP},
2746 { 0x1f, KEY_OK},
2747 { 0x01, KEY_DOWN},
2748 { 0x05, KEY_TUNER},
2749 { 0x06, KEY_CHANNELDOWN},
2750 { 0x40, KEY_PLAYPAUSE},
2751 { 0x1e, KEY_REWIND},
2752 { 0x1b, KEY_FAVORITES},
2753 { 0x1d, KEY_BACK},
2754 { 0x4d, KEY_FASTFORWARD},
2755 { 0x44, KEY_EPG},
2756 { 0x4c, KEY_INFO},
2757 { 0x41, KEY_AB},
2758 { 0x43, KEY_AUDIO},
2759 { 0x45, KEY_SUBTITLE},
2760 { 0x4a, KEY_LIST},
2761 { 0x46, KEY_F1},
2762 { 0x47, KEY_F2},
2763 { 0x5e, KEY_F3},
2764 { 0x5c, KEY_F4},
2765 { 0x52, KEY_F5},
2766 { 0x5a, KEY_F6},
2767 { 0x56, KEY_MODE},
2768 { 0x58, KEY_SWITCHVIDEOMODE},
2769};
2915e5ef 2770IR_TABLE(tevii_nec, IR_TYPE_UNKNOWN, ir_codes_tevii_nec);
9d2ba7ad 2771
d8d86225
IL
2772static struct ir_scancode ir_codes_tbs_nec[] = {
2773 { 0x04, KEY_POWER2}, /*power*/
2774 { 0x14, KEY_MUTE}, /*mute*/
2775 { 0x07, KEY_1},
2776 { 0x06, KEY_2},
2777 { 0x05, KEY_3},
2778 { 0x0b, KEY_4},
2779 { 0x0a, KEY_5},
2780 { 0x09, KEY_6},
2781 { 0x0f, KEY_7},
2782 { 0x0e, KEY_8},
2783 { 0x0d, KEY_9},
2784 { 0x12, KEY_0},
2785 { 0x16, KEY_CHANNELUP}, /*ch+*/
2786 { 0x11, KEY_CHANNELDOWN},/*ch-*/
2787 { 0x13, KEY_VOLUMEUP}, /*vol+*/
2788 { 0x0c, KEY_VOLUMEDOWN},/*vol-*/
2789 { 0x03, KEY_RECORD}, /*rec*/
2790 { 0x18, KEY_PAUSE}, /*pause*/
2791 { 0x19, KEY_OK}, /*ok*/
2792 { 0x1a, KEY_CAMERA}, /* snapshot */
2793 { 0x01, KEY_UP},
2794 { 0x10, KEY_LEFT},
2795 { 0x02, KEY_RIGHT},
2796 { 0x08, KEY_DOWN},
2797 { 0x15, KEY_FAVORITES},
2798 { 0x17, KEY_SUBTITLE},
2799 { 0x1d, KEY_ZOOM},
2800 { 0x1f, KEY_EXIT},
2801 { 0x1e, KEY_MENU},
2802 { 0x1c, KEY_EPG},
2803 { 0x00, KEY_PREVIOUS},
2804 { 0x1b, KEY_MODE},
2805};
2915e5ef 2806IR_TABLE(tbs_nec, IR_TYPE_UNKNOWN, ir_codes_tbs_nec);
d8d86225 2807
8cd9aaef
DH
2808/* Terratec Cinergy Hybrid T USB XS
2809 Devin Heitmueller <dheitmueller@linuxtv.org>
2810 */
715a2233
MCC
2811static struct ir_scancode ir_codes_terratec_cinergy_xs[] = {
2812 { 0x41, KEY_HOME},
2813 { 0x01, KEY_POWER},
2814 { 0x42, KEY_MENU},
2815 { 0x02, KEY_1},
2816 { 0x03, KEY_2},
2817 { 0x04, KEY_3},
2818 { 0x43, KEY_SUBTITLE},
2819 { 0x05, KEY_4},
2820 { 0x06, KEY_5},
2821 { 0x07, KEY_6},
2822 { 0x44, KEY_TEXT},
2823 { 0x08, KEY_7},
2824 { 0x09, KEY_8},
2825 { 0x0a, KEY_9},
2826 { 0x45, KEY_DELETE},
2827 { 0x0b, KEY_TUNER},
2828 { 0x0c, KEY_0},
2829 { 0x0d, KEY_MODE},
2830 { 0x46, KEY_TV},
2831 { 0x47, KEY_DVD},
2832 { 0x49, KEY_VIDEO},
2833 { 0x4b, KEY_AUX},
2834 { 0x10, KEY_UP},
2835 { 0x11, KEY_LEFT},
2836 { 0x12, KEY_OK},
2837 { 0x13, KEY_RIGHT},
2838 { 0x14, KEY_DOWN},
2839 { 0x0f, KEY_EPG},
2840 { 0x16, KEY_INFO},
2841 { 0x4d, KEY_BACKSPACE},
2842 { 0x1c, KEY_VOLUMEUP},
2843 { 0x4c, KEY_PLAY},
2844 { 0x1b, KEY_CHANNELUP},
2845 { 0x1e, KEY_VOLUMEDOWN},
2846 { 0x1d, KEY_MUTE},
2847 { 0x1f, KEY_CHANNELDOWN},
2848 { 0x17, KEY_RED},
2849 { 0x18, KEY_GREEN},
2850 { 0x19, KEY_YELLOW},
2851 { 0x1a, KEY_BLUE},
2852 { 0x58, KEY_RECORD},
2853 { 0x48, KEY_STOP},
2854 { 0x40, KEY_PAUSE},
2855 { 0x54, KEY_LAST},
2856 { 0x4e, KEY_REWIND},
2857 { 0x4f, KEY_FASTFORWARD},
2858 { 0x5c, KEY_NEXT},
2859};
2915e5ef 2860IR_TABLE(terratec_cinergy_xs, IR_TYPE_UNKNOWN, ir_codes_terratec_cinergy_xs);
8cd9aaef 2861
a4c47303
DH
2862/* EVGA inDtube
2863 Devin Heitmueller <devin.heitmueller@gmail.com>
2864 */
715a2233
MCC
2865static struct ir_scancode ir_codes_evga_indtube[] = {
2866 { 0x12, KEY_POWER},
2867 { 0x02, KEY_MODE}, /* TV */
2868 { 0x14, KEY_MUTE},
2869 { 0x1a, KEY_CHANNELUP},
2870 { 0x16, KEY_TV2}, /* PIP */
2871 { 0x1d, KEY_VOLUMEUP},
2872 { 0x05, KEY_CHANNELDOWN},
2873 { 0x0f, KEY_PLAYPAUSE},
2874 { 0x19, KEY_VOLUMEDOWN},
2875 { 0x1c, KEY_REWIND},
2876 { 0x0d, KEY_RECORD},
2877 { 0x18, KEY_FORWARD},
2878 { 0x1e, KEY_PREVIOUS},
2879 { 0x1b, KEY_STOP},
2880 { 0x1f, KEY_NEXT},
2881 { 0x13, KEY_CAMERA},
2882};
2915e5ef 2883IR_TABLE(evga_indtube, IR_TYPE_UNKNOWN, ir_codes_evga_indtube);
715a2233
MCC
2884
2885static struct ir_scancode ir_codes_videomate_s350[] = {
2886 { 0x00, KEY_TV},
2887 { 0x01, KEY_DVD},
2888 { 0x04, KEY_RECORD},
2889 { 0x05, KEY_VIDEO}, /* TV/Video */
2890 { 0x07, KEY_STOP},
2891 { 0x08, KEY_PLAYPAUSE},
2892 { 0x0a, KEY_REWIND},
2893 { 0x0f, KEY_FASTFORWARD},
2894 { 0x10, KEY_CHANNELUP},
2895 { 0x12, KEY_VOLUMEUP},
2896 { 0x13, KEY_CHANNELDOWN},
2897 { 0x14, KEY_MUTE},
2898 { 0x15, KEY_VOLUMEDOWN},
2899 { 0x16, KEY_1},
2900 { 0x17, KEY_2},
2901 { 0x18, KEY_3},
2902 { 0x19, KEY_4},
2903 { 0x1a, KEY_5},
2904 { 0x1b, KEY_6},
2905 { 0x1c, KEY_7},
2906 { 0x1d, KEY_8},
2907 { 0x1e, KEY_9},
2908 { 0x1f, KEY_0},
2909 { 0x21, KEY_SLEEP},
2910 { 0x24, KEY_ZOOM},
2911 { 0x25, KEY_LAST}, /* Recall */
2912 { 0x26, KEY_SUBTITLE}, /* CC */
2913 { 0x27, KEY_LANGUAGE}, /* MTS */
2914 { 0x29, KEY_CHANNEL}, /* SURF */
2915 { 0x2b, KEY_A},
2916 { 0x2c, KEY_B},
2917 { 0x2f, KEY_CAMERA}, /* Snapshot */
2918 { 0x23, KEY_RADIO},
2919 { 0x02, KEY_PREVIOUSSONG},
2920 { 0x06, KEY_NEXTSONG},
2921 { 0x03, KEY_EPG},
2922 { 0x09, KEY_SETUP},
2923 { 0x22, KEY_BACKSPACE},
2924 { 0x0c, KEY_UP},
2925 { 0x0e, KEY_DOWN},
2926 { 0x0b, KEY_LEFT},
2927 { 0x0d, KEY_RIGHT},
2928 { 0x11, KEY_ENTER},
2929 { 0x20, KEY_TEXT},
2930};
2915e5ef 2931IR_TABLE(videomate_s350, IR_TYPE_UNKNOWN, ir_codes_videomate_s350);
6d888a66
MCC
2932
2933/* GADMEI UTV330+ RM008Z remote
2934 Shine Liu <shinel@foxmail.com>
2935 */
715a2233
MCC
2936static struct ir_scancode ir_codes_gadmei_rm008z[] = {
2937 { 0x14, KEY_POWER2}, /* POWER OFF */
2938 { 0x0c, KEY_MUTE}, /* MUTE */
2939
2940 { 0x18, KEY_TV}, /* TV */
2941 { 0x0e, KEY_VIDEO}, /* AV */
2942 { 0x0b, KEY_AUDIO}, /* SV */
2943 { 0x0f, KEY_RADIO}, /* FM */
2944
2945 { 0x00, KEY_1},
2946 { 0x01, KEY_2},
2947 { 0x02, KEY_3},
2948 { 0x03, KEY_4},
2949 { 0x04, KEY_5},
2950 { 0x05, KEY_6},
2951 { 0x06, KEY_7},
2952 { 0x07, KEY_8},
2953 { 0x08, KEY_9},
2954 { 0x09, KEY_0},
2955 { 0x0a, KEY_INFO}, /* OSD */
2956 { 0x1c, KEY_BACKSPACE}, /* LAST */
2957
2958 { 0x0d, KEY_PLAY}, /* PLAY */
2959 { 0x1e, KEY_CAMERA}, /* SNAPSHOT */
2960 { 0x1a, KEY_RECORD}, /* RECORD */
2961 { 0x17, KEY_STOP}, /* STOP */
2962
2963 { 0x1f, KEY_UP}, /* UP */
2964 { 0x44, KEY_DOWN}, /* DOWN */
2965 { 0x46, KEY_TAB}, /* BACK */
2966 { 0x4a, KEY_ZOOM}, /* FULLSECREEN */
2967
2968 { 0x10, KEY_VOLUMEUP}, /* VOLUMEUP */
2969 { 0x11, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
2970 { 0x12, KEY_CHANNELUP}, /* CHANNELUP */
2971 { 0x13, KEY_CHANNELDOWN}, /* CHANNELDOWN */
2972 { 0x15, KEY_ENTER}, /* OK */
2973};
2915e5ef 2974IR_TABLE(gadmei_rm008z, IR_TYPE_UNKNOWN, ir_codes_gadmei_rm008z);
35d1988c 2975
4039ff28
MCC
2976/*************************************************************
2977 * COMPLETE SCANCODE TABLES
2978 * Instead of just a partial scancode, the tables bellow
2979 * contains the complete scancode and the receiver protocol
2980 *************************************************************/
2981
2982/*
2983 * Hauppauge:the newer, gray remotes (seems there are multiple
2984 * slightly different versions), shipped with cx88+ivtv cards.
2985 *
2986 * This table contains the complete RC5 code, instead of just the data part
2987 */
2988static struct ir_scancode ir_codes_rc5_hauppauge_new[] = {
2989 /* Keys 0 to 9 */
2990 { 0x1e00, KEY_0 },
2991 { 0x1e01, KEY_1 },
2992 { 0x1e02, KEY_2 },
2993 { 0x1e03, KEY_3 },
2994 { 0x1e04, KEY_4 },
2995 { 0x1e05, KEY_5 },
2996 { 0x1e06, KEY_6 },
2997 { 0x1e07, KEY_7 },
2998 { 0x1e08, KEY_8 },
2999 { 0x1e09, KEY_9 },
3000
3001 { 0x1e0a, KEY_TEXT }, /* keypad asterisk as well */
3002 { 0x1e0b, KEY_RED }, /* red button */
3003 { 0x1e0c, KEY_RADIO },
3004 { 0x1e0d, KEY_MENU },
3005 { 0x1e0e, KEY_SUBTITLE }, /* also the # key */
3006 { 0x1e0f, KEY_MUTE },
3007 { 0x1e10, KEY_VOLUMEUP },
3008 { 0x1e11, KEY_VOLUMEDOWN },
3009 { 0x1e12, KEY_PREVIOUS }, /* previous channel */
3010 { 0x1e14, KEY_UP },
3011 { 0x1e15, KEY_DOWN },
3012 { 0x1e16, KEY_LEFT },
3013 { 0x1e17, KEY_RIGHT },
3014 { 0x1e18, KEY_VIDEO }, /* Videos */
3015 { 0x1e19, KEY_AUDIO }, /* Music */
3016 /* 0x1e1a: Pictures - presume this means
3017 "Multimedia Home Platform" -
3018 no "PICTURES" key in input.h
3019 */
3020 { 0x1e1a, KEY_MHP },
3021
3022 { 0x1e1b, KEY_EPG }, /* Guide */
3023 { 0x1e1c, KEY_TV },
3024 { 0x1e1e, KEY_NEXTSONG }, /* skip >| */
3025 { 0x1e1f, KEY_EXIT }, /* back/exit */
3026 { 0x1e20, KEY_CHANNELUP }, /* channel / program + */
3027 { 0x1e21, KEY_CHANNELDOWN }, /* channel / program - */
3028 { 0x1e22, KEY_CHANNEL }, /* source (old black remote) */
3029 { 0x1e24, KEY_PREVIOUSSONG }, /* replay |< */
3030 { 0x1e25, KEY_ENTER }, /* OK */
3031 { 0x1e26, KEY_SLEEP }, /* minimize (old black remote) */
3032 { 0x1e29, KEY_BLUE }, /* blue key */
3033 { 0x1e2e, KEY_GREEN }, /* green button */
3034 { 0x1e30, KEY_PAUSE }, /* pause */
3035 { 0x1e32, KEY_REWIND }, /* backward << */
3036 { 0x1e34, KEY_FASTFORWARD }, /* forward >> */
3037 { 0x1e35, KEY_PLAY },
3038 { 0x1e36, KEY_STOP },
3039 { 0x1e37, KEY_RECORD }, /* recording */
3040 { 0x1e38, KEY_YELLOW }, /* yellow key */
3041 { 0x1e3b, KEY_SELECT }, /* top right button */
3042 { 0x1e3c, KEY_ZOOM }, /* full */
3043 { 0x1e3d, KEY_POWER }, /* system power (green button) */
3044};
2915e5ef 3045IR_TABLE(rc5_hauppauge_new, IR_TYPE_RC5, ir_codes_rc5_hauppauge_new);
cda4303f
MCC
3046
3047/* Terratec Cinergy Hybrid T USB XS FM
3048 Mauro Carvalho Chehab <mchehab@redhat.com>
3049 */
3050static struct ir_scancode ir_codes_nec_terratec_cinergy_xs[] = {
3051 { 0x1441, KEY_HOME},
3052 { 0x1401, KEY_POWER2},
3053
3054 { 0x1442, KEY_MENU}, /* DVD menu */
3055 { 0x1443, KEY_SUBTITLE},
3056 { 0x1444, KEY_TEXT}, /* Teletext */
3057 { 0x1445, KEY_DELETE},
3058
3059 { 0x1402, KEY_1},
3060 { 0x1403, KEY_2},
3061 { 0x1404, KEY_3},
3062 { 0x1405, KEY_4},
3063 { 0x1406, KEY_5},
3064 { 0x1407, KEY_6},
3065 { 0x1408, KEY_7},
3066 { 0x1409, KEY_8},
3067 { 0x140a, KEY_9},
3068 { 0x140c, KEY_0},
3069
3070 { 0x140b, KEY_TUNER}, /* AV */
3071 { 0x140d, KEY_MODE}, /* A.B */
3072
3073 { 0x1446, KEY_TV},
3074 { 0x1447, KEY_DVD},
3075 { 0x1449, KEY_VIDEO},
3076 { 0x144a, KEY_RADIO}, /* Music */
3077 { 0x144b, KEY_CAMERA}, /* PIC */
3078
3079 { 0x1410, KEY_UP},
3080 { 0x1411, KEY_LEFT},
3081 { 0x1412, KEY_OK},
3082 { 0x1413, KEY_RIGHT},
3083 { 0x1414, KEY_DOWN},
3084
3085 { 0x140f, KEY_EPG},
3086 { 0x1416, KEY_INFO},
3087 { 0x144d, KEY_BACKSPACE},
3088
3089 { 0x141c, KEY_VOLUMEUP},
3090 { 0x141e, KEY_VOLUMEDOWN},
3091
3092 { 0x144c, KEY_PLAY},
3093 { 0x141d, KEY_MUTE},
3094
3095 { 0x141b, KEY_CHANNELUP},
3096 { 0x141f, KEY_CHANNELDOWN},
3097
3098 { 0x1417, KEY_RED},
3099 { 0x1418, KEY_GREEN},
3100 { 0x1419, KEY_YELLOW},
3101 { 0x141a, KEY_BLUE},
3102
3103 { 0x1458, KEY_RECORD},
3104 { 0x1448, KEY_STOP},
3105 { 0x1440, KEY_PAUSE},
3106
3107 { 0x1454, KEY_LAST},
3108 { 0x144e, KEY_REWIND},
3109 { 0x144f, KEY_FASTFORWARD},
3110 { 0x145c, KEY_NEXT},
3111};
2915e5ef 3112IR_TABLE(nec_terratec_cinergy_xs, IR_TYPE_NEC, ir_codes_nec_terratec_cinergy_xs);
ca39d84d
MA
3113
3114/* Leadtek Winfast TV USB II Deluxe remote
3115 Magnus Alm <magnus.alm@gmail.com>
3116 */
3117static struct ir_scancode ir_codes_winfast_usbii_deluxe[] = {
3118 { 0x62, KEY_0},
3119 { 0x75, KEY_1},
3120 { 0x76, KEY_2},
3121 { 0x77, KEY_3},
3122 { 0x79, KEY_4},
3123 { 0x7a, KEY_5},
3124 { 0x7b, KEY_6},
3125 { 0x7d, KEY_7},
3126 { 0x7e, KEY_8},
3127 { 0x7f, KEY_9},
3128
3129 { 0x38, KEY_CAMERA}, /* SNAPSHOT */
3130 { 0x37, KEY_RECORD}, /* RECORD */
3131 { 0x35, KEY_TIME}, /* TIMESHIFT */
3132
3133 { 0x74, KEY_VOLUMEUP}, /* VOLUMEUP */
3134 { 0x78, KEY_VOLUMEDOWN}, /* VOLUMEDOWN */
3135 { 0x64, KEY_MUTE}, /* MUTE */
3136
3137 { 0x21, KEY_CHANNEL}, /* SURF */
3138 { 0x7c, KEY_CHANNELUP}, /* CHANNELUP */
3139 { 0x60, KEY_CHANNELDOWN}, /* CHANNELDOWN */
3140 { 0x61, KEY_LAST}, /* LAST CHANNEL (RECALL) */
3141
3142 { 0x72, KEY_VIDEO}, /* INPUT MODES (TV/FM) */
3143
3144 { 0x70, KEY_POWER2}, /* TV ON/OFF */
3145
3146 { 0x39, KEY_CYCLEWINDOWS}, /* MINIMIZE (BOSS) */
3147 { 0x3a, KEY_NEW}, /* PIP */
3148 { 0x73, KEY_ZOOM}, /* FULLSECREEN */
3149
3150 { 0x66, KEY_INFO}, /* OSD (DISPLAY) */
3151
3152 { 0x31, KEY_DOT}, /* '.' */
3153 { 0x63, KEY_ENTER}, /* ENTER */
3154
3155};
2915e5ef 3156IR_TABLE(winfast_usbii_deluxe, IR_TYPE_UNKNOWN, ir_codes_winfast_usbii_deluxe);
433763fa
FM
3157
3158/* Kworld 315U
3159 */
3160static struct ir_scancode ir_codes_kworld_315u[] = {
3161 { 0x6143, KEY_POWER },
3162 { 0x6101, KEY_TUNER }, /* source */
3163 { 0x610b, KEY_ZOOM },
3164 { 0x6103, KEY_POWER2 }, /* shutdown */
3165
3166 { 0x6104, KEY_1 },
3167 { 0x6108, KEY_2 },
3168 { 0x6102, KEY_3 },
3169 { 0x6109, KEY_CHANNELUP },
3170
3171 { 0x610f, KEY_4 },
3172 { 0x6105, KEY_5 },
3173 { 0x6106, KEY_6 },
3174 { 0x6107, KEY_CHANNELDOWN },
3175
3176 { 0x610c, KEY_7 },
3177 { 0x610d, KEY_8 },
3178 { 0x610a, KEY_9 },
3179 { 0x610e, KEY_VOLUMEUP },
3180
3181 { 0x6110, KEY_LAST },
3182 { 0x6111, KEY_0 },
3183 { 0x6112, KEY_ENTER },
3184 { 0x6113, KEY_VOLUMEDOWN },
3185
3186 { 0x6114, KEY_RECORD },
3187 { 0x6115, KEY_STOP },
3188 { 0x6116, KEY_PLAY },
3189 { 0x6117, KEY_MUTE },
3190
3191 { 0x6118, KEY_UP },
3192 { 0x6119, KEY_DOWN },
3193 { 0x611a, KEY_LEFT },
3194 { 0x611b, KEY_RIGHT },
3195
3196 { 0x611c, KEY_RED },
3197 { 0x611d, KEY_GREEN },
3198 { 0x611e, KEY_YELLOW },
3199 { 0x611f, KEY_BLUE },
3200};
2915e5ef 3201IR_TABLE(kworld_315u, IR_TYPE_NEC, ir_codes_kworld_315u);