diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-09-30 22:15:13 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-09-30 22:16:10 +0100 |
commit | c0c657bd92911788b96d9670620eabf024453752 (patch) | |
tree | 774a5e2d966d6ee87da17cd063580d5970564d00 /meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch | |
parent | e71a306f9cac8e30e689d607e2092e11a756ef5d (diff) | |
download | poky-c0c657bd92911788b96d9670620eabf024453752.tar.gz |
Split meta-extras and meta-moblin out of the main repository
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch')
-rw-r--r-- | meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch | 503 |
1 files changed, 0 insertions, 503 deletions
diff --git a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch b/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch deleted file mode 100644 index 06eab817bd..0000000000 --- a/meta-extras/packages/xorg-xserver/xserver-kdrive-xomap/kdrive-evdev.patch +++ /dev/null | |||
@@ -1,503 +0,0 @@ | |||
1 | # Kdrive evdev support patch, posted by Ander Conselvan de Oliveira at | ||
2 | # http://lists.freedesktop.org/archives/xorg/2005-December/011635.html | ||
3 | --- | ||
4 | # hw/kdrive/linux/evdev.c | 385 ++++++++++++++++++++++++++++++++++++++++++++++-- | ||
5 | # hw/kdrive/src/kdrive.c | 9 + | ||
6 | # hw/kdrive/src/kdrive.h | 4 | ||
7 | # 3 files changed, 386 insertions(+), 12 deletions(-) | ||
8 | # | ||
9 | Index: xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c | ||
10 | =================================================================== | ||
11 | --- xorg-server-1.1.99.3.orig/hw/kdrive/linux/evdev.c 2006-11-03 14:49:05.000000000 +0000 | ||
12 | +++ xorg-server-1.1.99.3/hw/kdrive/linux/evdev.c 2007-01-25 22:05:48.000000000 +0000 | ||
13 | @@ -31,9 +31,11 @@ | ||
14 | #include <X11/X.h> | ||
15 | #include <X11/Xproto.h> | ||
16 | #include <X11/Xpoll.h> | ||
17 | +#include <X11/keysym.h> | ||
18 | #include "inputstr.h" | ||
19 | #include "scrnintstr.h" | ||
20 | #include "kdrive.h" | ||
21 | +#include "kkeymap.h" | ||
22 | |||
23 | #define NUM_EVENTS 128 | ||
24 | #define ABS_UNSET -65535 | ||
25 | @@ -107,9 +109,10 @@ EvdevRead (int evdevPort, void *closure) | ||
26 | { | ||
27 | KdPointerInfo *pi = closure; | ||
28 | Kevdev *ke = pi->driverPrivate; | ||
29 | - int i; | ||
30 | + int i, j; | ||
31 | struct input_event events[NUM_EVENTS]; | ||
32 | int n; | ||
33 | + int flags; | ||
34 | |||
35 | n = read (evdevPort, &events, NUM_EVENTS * sizeof (struct input_event)); | ||
36 | if (n <= 0) | ||
37 | @@ -117,22 +120,64 @@ EvdevRead (int evdevPort, void *closure) | ||
38 | n /= sizeof (struct input_event); | ||
39 | for (i = 0; i < n; i++) | ||
40 | { | ||
41 | + flags = KD_MOUSE_DELTA | kdPointerInfo->buttonState; | ||
42 | switch (events[i].type) { | ||
43 | case EV_SYN: | ||
44 | break; | ||
45 | case EV_KEY: | ||
46 | - EvdevMotion (pi); | ||
47 | - ASSIGNBIT(ke->key,events[i].code, events[i].value); | ||
48 | - if (events[i].code < 0x100) | ||
49 | - ErrorF ("key %d %d\n", events[i].code, events[i].value); | ||
50 | - else | ||
51 | - ErrorF ("key 0x%x %d\n", events[i].code, events[i].value); | ||
52 | + if (events[i].code >= BTN_MOUSE && events[i].code < BTN_JOYSTICK) { | ||
53 | + switch (events[i].code) { | ||
54 | + case BTN_LEFT: | ||
55 | + if (events[i].value == 1) | ||
56 | + flags |= KD_BUTTON_1; | ||
57 | + else | ||
58 | + flags &= ~KD_BUTTON_1; | ||
59 | + break; | ||
60 | + case BTN_MIDDLE: | ||
61 | + if (events[i].value == 1) | ||
62 | + flags |= KD_BUTTON_2; | ||
63 | + else | ||
64 | + flags &= ~KD_BUTTON_2; | ||
65 | + break; | ||
66 | + case BTN_RIGHT: | ||
67 | + if (events[i].value == 1) | ||
68 | + flags |= KD_BUTTON_3; | ||
69 | + else | ||
70 | + flags &= ~KD_BUTTON_3; | ||
71 | + break; | ||
72 | + default: | ||
73 | + /* Unknow button */ | ||
74 | + break; | ||
75 | + } | ||
76 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
77 | + } | ||
78 | break; | ||
79 | case EV_REL: | ||
80 | - ke->rel[events[i].code] += events[i].value; | ||
81 | + if (events[i].code == REL_X) { | ||
82 | + KdEnqueueMouseEvent (kdMouseInfo, flags, events[i].value, 0); | ||
83 | + } | ||
84 | + else if (events[i].code == REL_Y) { | ||
85 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, events[i].value); | ||
86 | + } | ||
87 | + else if (events[i].code == REL_WHEEL) { | ||
88 | + for (j = 0; j < abs (events[i].value); j++) { | ||
89 | + if (events[i].value > 0) | ||
90 | + flags |= KD_BUTTON_4; | ||
91 | + else | ||
92 | + flags |= KD_BUTTON_5; | ||
93 | + | ||
94 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
95 | + | ||
96 | + if (events[i].value > 0) | ||
97 | + flags &= ~KD_BUTTON_4; | ||
98 | + else | ||
99 | + flags &= ~KD_BUTTON_5; | ||
100 | + | ||
101 | + KdEnqueueMouseEvent (kdMouseInfo, flags, 0, 0); | ||
102 | + } /* events[i].code == REL_WHEEL */ | ||
103 | + } | ||
104 | break; | ||
105 | case EV_ABS: | ||
106 | - ke->abs[events[i].code] = events[i].value; | ||
107 | break; | ||
108 | } | ||
109 | } | ||
110 | @@ -162,6 +207,12 @@ EvdevInit (KdPointerInfo *pi) | ||
111 | for (i = 0; i < NUM_DEFAULT_EVDEV; i++) { | ||
112 | fd = open (kdefaultEvdev[i], 2); | ||
113 | if (fd >= 0) { | ||
114 | + if (ioctl (fd, EVIOCGRAB, 1) < 0) | ||
115 | + { | ||
116 | + close (fd); | ||
117 | + continue; | ||
118 | + } | ||
119 | + | ||
120 | pi->path = KdSaveString (kdefaultEvdev[i]); | ||
121 | break; | ||
122 | } | ||
123 | @@ -300,7 +351,319 @@ KdPointerDriver LinuxEvdevMouseDriver = | ||
124 | NULL, | ||
125 | }; | ||
126 | |||
127 | -#if 0 | ||
128 | +/* Keyboard */ | ||
129 | + | ||
130 | +int kbd_fd = -1; | ||
131 | +int EvdevInputType = 0; | ||
132 | + | ||
133 | +KeySym evdevKeymap[(194 - 1 + 1) * 2] = { | ||
134 | +/* These are directly mapped from DOS scanset 0 */ | ||
135 | +/* 1 8 */ XK_Escape, NoSymbol, | ||
136 | +/* 2 9 */ XK_1, XK_exclam, | ||
137 | +/* 3 10 */ XK_2, XK_at, | ||
138 | +/* 4 11 */ XK_3, XK_numbersign, | ||
139 | +/* 5 12 */ XK_4, XK_dollar, | ||
140 | +/* 6 13 */ XK_5, XK_percent, | ||
141 | +/* 7 14 */ XK_6, XK_asciicircum, | ||
142 | +/* 8 15 */ XK_7, XK_ampersand, | ||
143 | +/* 9 16 */ XK_8, XK_asterisk, | ||
144 | +/* 10 17 */ XK_9, XK_parenleft, | ||
145 | +/* 11 18 */ XK_0, XK_parenright, | ||
146 | +/* 12 19 */ XK_minus, XK_underscore, | ||
147 | +/* 13 20 */ XK_equal, XK_plus, | ||
148 | +/* 14 21 */ XK_BackSpace, NoSymbol, | ||
149 | +/* 15 22 */ XK_Tab, NoSymbol, | ||
150 | +/* 16 23 */ XK_Q, NoSymbol, | ||
151 | +/* 17 24 */ XK_W, NoSymbol, | ||
152 | +/* 18 25 */ XK_E, NoSymbol, | ||
153 | +/* 19 26 */ XK_R, NoSymbol, | ||
154 | +/* 20 27 */ XK_T, NoSymbol, | ||
155 | +/* 21 28 */ XK_Y, NoSymbol, | ||
156 | +/* 22 29 */ XK_U, NoSymbol, | ||
157 | +/* 23 30 */ XK_I, NoSymbol, | ||
158 | +/* 24 31 */ XK_O, NoSymbol, | ||
159 | +/* 25 32 */ XK_P, NoSymbol, | ||
160 | +/* 26 33 */ XK_bracketleft, XK_braceleft, | ||
161 | +/* 27 34 */ XK_bracketright, XK_braceright, | ||
162 | +/* 28 35 */ XK_Return, NoSymbol, | ||
163 | +/* 29 36 */ XK_Control_L, NoSymbol, | ||
164 | +/* 30 37 */ XK_A, NoSymbol, | ||
165 | +/* 31 38 */ XK_S, NoSymbol, | ||
166 | +/* 32 39 */ XK_D, NoSymbol, | ||
167 | +/* 33 40 */ XK_F, NoSymbol, | ||
168 | +/* 34 41 */ XK_G, NoSymbol, | ||
169 | +/* 35 42 */ XK_H, NoSymbol, | ||
170 | +/* 36 43 */ XK_J, NoSymbol, | ||
171 | +/* 37 44 */ XK_K, NoSymbol, | ||
172 | +/* 38 45 */ XK_L, NoSymbol, | ||
173 | +/* 39 46 */ XK_semicolon, XK_colon, | ||
174 | +/* 40 47 */ XK_apostrophe, XK_quotedbl, | ||
175 | +/* 41 48 */ XK_grave, XK_asciitilde, | ||
176 | +/* 42 49 */ XK_Shift_L, NoSymbol, | ||
177 | +/* 43 50 */ XK_backslash, XK_bar, | ||
178 | +/* 44 51 */ XK_Z, NoSymbol, | ||
179 | +/* 45 52 */ XK_X, NoSymbol, | ||
180 | +/* 46 53 */ XK_C, NoSymbol, | ||
181 | +/* 47 54 */ XK_V, NoSymbol, | ||
182 | +/* 48 55 */ XK_B, NoSymbol, | ||
183 | +/* 49 56 */ XK_N, NoSymbol, | ||
184 | +/* 50 57 */ XK_M, NoSymbol, | ||
185 | +/* 51 58 */ XK_comma, XK_less, | ||
186 | +/* 52 59 */ XK_period, XK_greater, | ||
187 | +/* 53 60 */ XK_slash, XK_question, | ||
188 | +/* 54 61 */ XK_Shift_R, NoSymbol, | ||
189 | +/* 55 62 */ XK_KP_Multiply, NoSymbol, | ||
190 | +/* 56 63 */ XK_Alt_L, XK_Meta_L, | ||
191 | +/* 57 64 */ XK_space, NoSymbol, | ||
192 | +/* 58 65 */ XK_Caps_Lock, NoSymbol, | ||
193 | +/* 59 66 */ XK_F1, NoSymbol, | ||
194 | +/* 60 67 */ XK_F2, NoSymbol, | ||
195 | +/* 61 68 */ XK_F3, NoSymbol, | ||
196 | +/* 62 69 */ XK_F4, NoSymbol, | ||
197 | +/* 63 70 */ XK_F5, NoSymbol, | ||
198 | +/* 64 71 */ XK_F6, NoSymbol, | ||
199 | +/* 65 72 */ XK_F7, NoSymbol, | ||
200 | +/* 66 73 */ XK_F8, NoSymbol, | ||
201 | +/* 67 74 */ XK_F9, NoSymbol, | ||
202 | +/* 68 75 */ XK_F10, NoSymbol, | ||
203 | +/* 69 76 */ XK_Break, XK_Pause, | ||
204 | +/* 70 77 */ XK_Scroll_Lock, NoSymbol, | ||
205 | +/* 71 78 */ XK_KP_Home, XK_KP_7, | ||
206 | +/* 72 79 */ XK_KP_Up, XK_KP_8, | ||
207 | +/* 73 80 */ XK_KP_Page_Up, XK_KP_9, | ||
208 | +/* 74 81 */ XK_KP_Subtract, NoSymbol, | ||
209 | +/* 75 82 */ XK_KP_Left, XK_KP_4, | ||
210 | +/* 76 83 */ XK_KP_5, NoSymbol, | ||
211 | +/* 77 84 */ XK_KP_Right, XK_KP_6, | ||
212 | +/* 78 85 */ XK_KP_Add, NoSymbol, | ||
213 | +/* 79 86 */ XK_KP_End, XK_KP_1, | ||
214 | +/* 80 87 */ XK_KP_Down, XK_KP_2, | ||
215 | +/* 81 88 */ XK_KP_Page_Down, XK_KP_3, | ||
216 | +/* 82 89 */ XK_KP_Insert, XK_KP_0, | ||
217 | +/* 83 90 */ XK_KP_Delete, XK_KP_Decimal, | ||
218 | +/* 84 91 */ NoSymbol, NoSymbol, | ||
219 | +/* 85 92 */ NoSymbol, NoSymbol, | ||
220 | +/* 86 93 */ NoSymbol, NoSymbol, | ||
221 | +/* 87 94 */ XK_F11, NoSymbol, | ||
222 | +/* 88 95 */ XK_F12, NoSymbol, | ||
223 | + | ||
224 | +/* These are remapped from the extended set (using ExtendMap) */ | ||
225 | + | ||
226 | +/* 89 96 */ XK_Control_R, NoSymbol, | ||
227 | +/* 90 97 */ XK_KP_Enter, NoSymbol, | ||
228 | +/* 91 98 */ XK_KP_Divide, NoSymbol, | ||
229 | +/* 92 99 */ XK_Sys_Req, XK_Print, | ||
230 | +/* 93 100 */ XK_Alt_R, XK_Meta_R, | ||
231 | +/* 94 101 */ XK_Num_Lock, NoSymbol, | ||
232 | +/* 95 102 */ XK_Home, NoSymbol, | ||
233 | +/* 96 103 */ XK_Up, NoSymbol, | ||
234 | +/* 97 104 */ XK_Page_Up, NoSymbol, | ||
235 | +/* 98 105 */ XK_Left, NoSymbol, | ||
236 | +/* 99 106 */ XK_Right, NoSymbol, | ||
237 | +/* 100 107 */ XK_End, NoSymbol, | ||
238 | +/* 101 108 */ XK_Down, NoSymbol, | ||
239 | +/* 102 109 */ XK_Page_Down, NoSymbol, | ||
240 | +/* 103 110 */ XK_Insert, NoSymbol, | ||
241 | +/* 104 111 */ XK_Delete, NoSymbol, | ||
242 | +/* 105 112 */ XK_Super_L, NoSymbol, | ||
243 | +/* 106 113 */ XK_Super_R, NoSymbol, | ||
244 | +/* 107 114 */ XK_Menu, NoSymbol, | ||
245 | +/* 108 115 */ NoSymbol, NoSymbol, | ||
246 | +/* 109 116 */ NoSymbol, NoSymbol, | ||
247 | +/* 110 117 */ NoSymbol, NoSymbol, | ||
248 | +/* 111 118 */ NoSymbol, NoSymbol, | ||
249 | +/* 112 119 */ NoSymbol, NoSymbol, | ||
250 | + | ||
251 | +/* 113 120 */ NoSymbol, NoSymbol, | ||
252 | +/* 114 121 */ NoSymbol, NoSymbol, | ||
253 | +/* 115 122 */ NoSymbol, NoSymbol, | ||
254 | +/* 116 123 */ NoSymbol, NoSymbol, | ||
255 | +/* 117 124 */ NoSymbol, NoSymbol, | ||
256 | +/* 118 125 */ NoSymbol, NoSymbol, | ||
257 | +/* 119 126 */ NoSymbol, NoSymbol, | ||
258 | +/* 120 127 */ NoSymbol, NoSymbol, | ||
259 | +/* 121 128 */ NoSymbol, NoSymbol, | ||
260 | +/* 122 129 */ NoSymbol, NoSymbol, | ||
261 | +/* 123 130 */ NoSymbol, NoSymbol, | ||
262 | +/* 124 131 */ NoSymbol, NoSymbol, | ||
263 | +/* 125 132 */ NoSymbol, NoSymbol, | ||
264 | +/* 126 133 */ NoSymbol, NoSymbol, | ||
265 | +/* 127 134 */ NoSymbol, NoSymbol, | ||
266 | +/* 128 135 */ NoSymbol, NoSymbol, | ||
267 | +/* 129 136 */ NoSymbol, NoSymbol, | ||
268 | +/* 130 137 */ NoSymbol, NoSymbol, | ||
269 | +/* 131 138 */ NoSymbol, NoSymbol, | ||
270 | +/* 132 139 */ NoSymbol, NoSymbol, | ||
271 | +/* 133 140 */ NoSymbol, NoSymbol, | ||
272 | +/* 134 141 */ NoSymbol, NoSymbol, | ||
273 | +/* 135 142 */ NoSymbol, NoSymbol, | ||
274 | +/* 136 143 */ NoSymbol, NoSymbol, | ||
275 | +/* 137 144 */ NoSymbol, NoSymbol, | ||
276 | +/* 138 145 */ NoSymbol, NoSymbol, | ||
277 | +/* 139 146 */ NoSymbol, NoSymbol, | ||
278 | +/* 140 147 */ NoSymbol, NoSymbol, | ||
279 | +/* 141 148 */ NoSymbol, NoSymbol, | ||
280 | +/* 142 149 */ NoSymbol, NoSymbol, | ||
281 | +/* 143 150 */ NoSymbol, NoSymbol, | ||
282 | +/* 144 151 */ NoSymbol, NoSymbol, | ||
283 | +/* 145 152 */ NoSymbol, NoSymbol, | ||
284 | +/* 146 153 */ NoSymbol, NoSymbol, | ||
285 | +/* 147 154 */ NoSymbol, NoSymbol, | ||
286 | +/* 148 155 */ NoSymbol, NoSymbol, | ||
287 | +/* 149 156 */ NoSymbol, NoSymbol, | ||
288 | +/* 150 157 */ NoSymbol, NoSymbol, | ||
289 | +/* 151 158 */ NoSymbol, NoSymbol, | ||
290 | +/* 152 159 */ NoSymbol, NoSymbol, | ||
291 | +/* 153 160 */ NoSymbol, NoSymbol, | ||
292 | +/* 154 161 */ NoSymbol, NoSymbol, | ||
293 | +/* 155 162 */ NoSymbol, NoSymbol, | ||
294 | +/* 156 163 */ NoSymbol, NoSymbol, | ||
295 | +/* 157 164 */ NoSymbol, NoSymbol, | ||
296 | +/* 158 165 */ NoSymbol, NoSymbol, | ||
297 | +/* 159 166 */ NoSymbol, NoSymbol, | ||
298 | +/* 160 167 */ NoSymbol, NoSymbol, | ||
299 | +/* 161 168 */ NoSymbol, NoSymbol, | ||
300 | +/* 162 169 */ NoSymbol, NoSymbol, | ||
301 | +/* 163 170 */ NoSymbol, NoSymbol, | ||
302 | +/* 164 171 */ NoSymbol, NoSymbol, | ||
303 | +/* 165 172 */ NoSymbol, NoSymbol, | ||
304 | +/* 166 173 */ NoSymbol, NoSymbol, | ||
305 | +/* 167 174 */ NoSymbol, NoSymbol, | ||
306 | +/* 168 175 */ NoSymbol, NoSymbol, | ||
307 | +/* 169 176 */ NoSymbol, NoSymbol, | ||
308 | +/* 170 177 */ NoSymbol, NoSymbol, | ||
309 | +/* 171 178 */ NoSymbol, NoSymbol, | ||
310 | +/* 172 179 */ NoSymbol, NoSymbol, | ||
311 | +/* 173 180 */ NoSymbol, NoSymbol, | ||
312 | +/* 174 181 */ NoSymbol, NoSymbol, | ||
313 | +/* 175 182 */ NoSymbol, NoSymbol, | ||
314 | +/* 176 183 */ NoSymbol, NoSymbol, | ||
315 | +/* 177 184 */ NoSymbol, NoSymbol, | ||
316 | +/* 178 185 */ NoSymbol, NoSymbol, | ||
317 | +/* 179 186 */ NoSymbol, NoSymbol, | ||
318 | +/* 180 187 */ NoSymbol, NoSymbol, | ||
319 | +/* 181 188 */ NoSymbol, NoSymbol, | ||
320 | +/* 182 189 */ NoSymbol, NoSymbol, | ||
321 | +/* 183 190 */ NoSymbol, NoSymbol, | ||
322 | +/* 184 191 */ NoSymbol, NoSymbol, | ||
323 | +/* 185 192 */ NoSymbol, NoSymbol, | ||
324 | +/* 186 193 */ NoSymbol, NoSymbol, | ||
325 | +/* 187 194 */ NoSymbol, NoSymbol, | ||
326 | +/* 188 195 */ NoSymbol, NoSymbol, | ||
327 | +/* 189 196 */ NoSymbol, NoSymbol, | ||
328 | +/* 190 197 */ NoSymbol, NoSymbol, | ||
329 | +/* 191 198 */ NoSymbol, NoSymbol, | ||
330 | +/* 192 199 */ NoSymbol, NoSymbol, | ||
331 | +/* 193 200 */ NoSymbol, NoSymbol, | ||
332 | +/* 194 201 */ NoSymbol, NoSymbol, | ||
333 | +}; | ||
334 | + | ||
335 | +static void | ||
336 | +EvdevKbdRead (int fd, void *closure) | ||
337 | +{ | ||
338 | + int i, n; | ||
339 | + struct input_event events[NUM_EVENTS]; | ||
340 | + | ||
341 | + n = read (fd, &events, NUM_EVENTS * sizeof (struct input_event)); | ||
342 | + if (n <= 0) | ||
343 | + return; | ||
344 | + | ||
345 | + n /= sizeof (struct input_event); | ||
346 | + | ||
347 | + for (i = 0; i < n; i++) | ||
348 | + { | ||
349 | + if (events[i].type == EV_KEY) | ||
350 | + KdEnqueueKeyboardEvent (events[i].code, !events[i].value); | ||
351 | + } | ||
352 | +} | ||
353 | + | ||
354 | +static void | ||
355 | +EvdevKbdLoad (void) | ||
356 | +{ | ||
357 | + kdMinScanCode = 0; | ||
358 | + kdMaxScanCode = 193; | ||
359 | + kdKeymapWidth = 2; | ||
360 | + memcpy (kdKeymap, evdevKeymap, sizeof (evdevKeymap)); | ||
361 | +} | ||
362 | + | ||
363 | +static int | ||
364 | +EvdevKbdInit (void) | ||
365 | +{ | ||
366 | + int fd, i; | ||
367 | + | ||
368 | + if (!EvdevInputType) | ||
369 | + EvdevInputType = KdAllocInputType (); | ||
370 | + | ||
371 | + if (!kdKeyboard) | ||
372 | + { | ||
373 | + for (i = 0; i < NUM_DEFAULT_EVDEV; i++) | ||
374 | + { | ||
375 | + fd = open (kdefaultEvdev[i], 2); | ||
376 | + if (fd >= 0) | ||
377 | + { | ||
378 | + kdKeyboard = KdSaveString (kdefaultEvdev[i]); | ||
379 | + break; | ||
380 | + } | ||
381 | + } | ||
382 | + } | ||
383 | + else | ||
384 | + { | ||
385 | + fd = open (kdKeyboard, O_RDWR); | ||
386 | + if (fd < 0) | ||
387 | + return FALSE; | ||
388 | + } | ||
389 | + | ||
390 | + if (ioctl (fd, EVIOCGRAB, 1) < 0) | ||
391 | + { | ||
392 | + close (fd); | ||
393 | + return FALSE; | ||
394 | + } | ||
395 | + | ||
396 | + if (!KdRegisterFd (EvdevInputType, fd, EvdevKbdRead, NULL)) | ||
397 | + return FALSE; | ||
398 | + | ||
399 | + kbd_fd = fd; | ||
400 | + return TRUE; | ||
401 | +} | ||
402 | + | ||
403 | +static void | ||
404 | +EvdevKbdFini (void) | ||
405 | +{ | ||
406 | +} | ||
407 | + | ||
408 | +static void | ||
409 | +EvdevKbdLeds (int leds) | ||
410 | +{ | ||
411 | + struct input_event event; | ||
412 | + | ||
413 | + memset(&event, 0, sizeof(event)); | ||
414 | + | ||
415 | + event.type = EV_LED; | ||
416 | + event.code = LED_CAPSL; | ||
417 | + event.value = leds & (1 << 0) ? 1 : 0; | ||
418 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
419 | + | ||
420 | + event.type = EV_LED; | ||
421 | + event.code = LED_NUML; | ||
422 | + event.value = leds & (1 << 1) ? 1 : 0; | ||
423 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
424 | + | ||
425 | + event.type = EV_LED; | ||
426 | + event.code = LED_SCROLLL; | ||
427 | + event.value = leds & (1 << 2) ? 1 : 0; | ||
428 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
429 | + | ||
430 | + event.type = EV_LED; | ||
431 | + event.code = LED_COMPOSE; | ||
432 | + event.value = leds & (1 << 3) ? 1 : 0; | ||
433 | + write(kbd_fd, (char *) &event, sizeof(event)); | ||
434 | +} | ||
435 | + | ||
436 | +static void | ||
437 | +EvdevKbdBell (int volume, int frequency, int duration) | ||
438 | +{ | ||
439 | +} | ||
440 | + | ||
441 | KdKeyboardFuncs LinuxEvdevKeyboardFuncs = { | ||
442 | EvdevKbdLoad, | ||
443 | EvdevKbdInit, | ||
444 | @@ -309,4 +672,4 @@ KdKeyboardFuncs LinuxEvdevKeyboardFuncs | ||
445 | EvdevKbdFini, | ||
446 | 0, | ||
447 | }; | ||
448 | -#endif | ||
449 | + | ||
450 | Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c | ||
451 | =================================================================== | ||
452 | --- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.c 2006-11-03 14:49:05.000000000 +0000 | ||
453 | +++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.c 2007-01-25 21:56:32.000000000 +0000 | ||
454 | @@ -80,6 +80,7 @@ Bool kdDontZap; | ||
455 | Bool kdEnabled; | ||
456 | int kdSubpixelOrder; | ||
457 | int kdVirtualTerminal = -1; | ||
458 | +char *kdKeyboard = 0; | ||
459 | Bool kdSwitchPending; | ||
460 | char *kdSwitchCmd; | ||
461 | DDXPointRec kdOrigin; | ||
462 | @@ -707,6 +708,14 @@ KdProcessArgument (int argc, char **argv | ||
463 | UseMsg (); | ||
464 | return 2; | ||
465 | } | ||
466 | + if (!strcmp (argv[i], "-keyboard")) | ||
467 | + { | ||
468 | + if ((i+1) < argc) | ||
469 | + kdKeyboard = argv[i+1]; | ||
470 | + else | ||
471 | + UseMsg (); | ||
472 | + return 2; | ||
473 | + } | ||
474 | if (!strcmp (argv[i], "-rgba")) | ||
475 | { | ||
476 | if ((i+1) < argc) | ||
477 | Index: xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h | ||
478 | =================================================================== | ||
479 | --- xorg-server-1.1.99.3.orig/hw/kdrive/src/kdrive.h 2006-11-03 14:49:05.000000000 +0000 | ||
480 | +++ xorg-server-1.1.99.3/hw/kdrive/src/kdrive.h 2007-01-25 21:58:26.000000000 +0000 | ||
481 | @@ -512,6 +512,7 @@ extern Bool kdEmulateMiddleButton; | ||
482 | extern Bool kdDisableZaphod; | ||
483 | extern Bool kdDontZap; | ||
484 | extern int kdVirtualTerminal; | ||
485 | +extern char *kdKeyboard; | ||
486 | extern char *kdSwitchCmd; | ||
487 | extern KdOsFuncs *kdOsFuncs; | ||
488 | |||
489 | @@ -875,12 +876,13 @@ void | ||
490 | ProcessInputEvents (void); | ||
491 | |||
492 | extern KdPointerDriver LinuxMouseDriver; | ||
493 | -extern KdPointerDriver LinuxEvdevDriver; | ||
494 | +extern KdPointerDriver LinuxEvdevMouseFuncs; | ||
495 | extern KdPointerDriver Ps2MouseDriver; | ||
496 | extern KdPointerDriver BusMouseDriver; | ||
497 | extern KdPointerDriver MsMouseDriver; | ||
498 | extern KdPointerDriver TsDriver; | ||
499 | extern KdKeyboardDriver LinuxKeyboardDriver; | ||
500 | +extern KdKeyboardFuncs LinuxEvdevKeyboardFuncs; | ||
501 | extern KdOsFuncs LinuxFuncs; | ||
502 | |||
503 | extern KdPointerDriver VxWorksMouseDriver; | ||