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