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