66 lines
2.2 KiB
Diff
66 lines
2.2 KiB
Diff
|
diff -up kbd-2.0.4/docs/man/man8/kbdrate.8.orig kbd-2.0.4/docs/man/man8/kbdrate.8
|
||
|
--- kbd-2.0.4/docs/man/man8/kbdrate.8.orig 2017-01-11 11:04:50.114831348 +0100
|
||
|
+++ kbd-2.0.4/docs/man/man8/kbdrate.8 2017-01-11 11:05:35.619851252 +0100
|
||
|
@@ -22,7 +22,7 @@ Using
|
||
|
without any options will reset the repeat rate to 10.9 characters per second (cps)
|
||
|
and the delay to 250 milliseconds (ms) for Intel- and M68K-based systems.
|
||
|
These are the IBM defaults. On SPARC-based systems it will reset the repeat rate
|
||
|
-to 5 cps and the delay to 200 ms.
|
||
|
+to 20 cps and the delay to 200 ms.
|
||
|
|
||
|
.SH OPTIONS
|
||
|
.TP
|
||
|
diff -up kbd-2.0.4/src/kbdrate.c.orig kbd-2.0.4/src/kbdrate.c
|
||
|
--- kbd-2.0.4/src/kbdrate.c.orig 2017-01-11 11:05:10.226840148 +0100
|
||
|
+++ kbd-2.0.4/src/kbdrate.c 2017-01-11 11:05:56.832860537 +0100
|
||
|
@@ -111,9 +111,12 @@ static int valid_delays[] = { 250, 500,
|
||
|
static int
|
||
|
KDKBDREP_ioctl_ok(double rate, int delay, int silent)
|
||
|
{
|
||
|
+#if defined(KDKBDREP) && !defined(__sparc__)
|
||
|
/*
|
||
|
* This ioctl is defined in <linux/kd.h> but is not
|
||
|
* implemented anywhere - must be in some m68k patches.
|
||
|
+ * We cannot blindly try unimplemented ioctls on sparc64 -
|
||
|
+ * the 32<->64bit transition layer does not like it.
|
||
|
* Since 2.4.9 also on i386.
|
||
|
*/
|
||
|
struct my_kbd_repeat kbdrep_s;
|
||
|
@@ -176,6 +179,9 @@ KDKBDREP_ioctl_ok(double rate, int delay
|
||
|
rate, kbdrep_s.delay);
|
||
|
|
||
|
return 1; /* success! */
|
||
|
+#else /* no KDKBDREP or __sparc__ */
|
||
|
+ return 0;
|
||
|
+#endif /* KDKBDREP */
|
||
|
}
|
||
|
|
||
|
#ifndef KIOCSRATE
|
||
|
@@ -226,7 +232,7 @@ sigalrmhandler(int sig __attribute__((un
|
||
|
int main(int argc, char **argv)
|
||
|
{
|
||
|
#ifdef __sparc__
|
||
|
- double rate = 5.0; /* Default rate */
|
||
|
+ double rate = 20.0; /* Default rate */
|
||
|
int delay = 200; /* Default delay */
|
||
|
#else
|
||
|
double rate = 10.9; /* Default rate */
|
||
|
@@ -275,8 +281,9 @@ int main(int argc, char **argv)
|
||
|
if (KIOCSRATE_ioctl_ok(rate, delay, silent)) /* sparc? */
|
||
|
return 0;
|
||
|
|
||
|
- /* The ioport way */
|
||
|
+ /* The ioport way - will crash on sparc */
|
||
|
|
||
|
+#ifndef __sparc__
|
||
|
for (i = 0; i < RATE_COUNT; i++)
|
||
|
if (rate * 10 >= valid_rates[i]) {
|
||
|
value &= 0x60;
|
||
|
@@ -333,5 +340,6 @@ int main(int argc, char **argv)
|
||
|
valid_rates[value & 0x1f] / 10.0,
|
||
|
valid_delays[(value & 0x60) >> 5]);
|
||
|
|
||
|
+#endif
|
||
|
return EXIT_SUCCESS;
|
||
|
}
|