--- /dev/null
+--- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c.orig 2004-02-16 18:25:42.000000000 +0100
++++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c 2004-02-16 18:29:53.875110184 +0100
+@@ -108,7 +108,7 @@
+ #endif
+
+ static int
+-KDKBDREP_ioctl_ok(int rate, int delay) {
++KDKBDREP_ioctl_ok(int fd, int rate, int delay) {
+ #if defined(KDKBDREP) && !defined(__sparc__)
+ /* This ioctl is defined in <linux/kd.h> but is not
+ implemented anywhere - must be in some m68k patches. */
+@@ -117,7 +117,7 @@
+ /* don't change, just test */
+ kbdrep_s.rate = -1;
+ kbdrep_s.delay = -1;
+- if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
++ if (ioctl( fd, KDKBDREP, &kbdrep_s )) {
+ return 0;
+ }
+
+@@ -132,7 +132,7 @@
+ if (kbdrep_s.delay < 1)
+ kbdrep_s.delay = 1;
+
+- if (ioctl( 0, KDKBDREP, &kbdrep_s )) {
++ if (ioctl( fd, KDKBDREP, &kbdrep_s )) {
+ return 0;
+ }
+
+@@ -200,7 +200,7 @@
+ if (pKbd->delay >= 0)
+ delay = pKbd->delay;
+
+- if(KDKBDREP_ioctl_ok(rate, delay)) /* m68k? */
++ if(KDKBDREP_ioctl_ok(pInfo->fd, rate, delay)) /* m68k? */
+ return;
+
+ if(KIOCSRATE_ioctl_ok(rate, delay)) /* sparc? */