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