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