Lines 65-71
Link Here
|
65 |
|
65 |
|
66 |
/* kbd rate stuff based on kbdrate.c from Rik Faith <faith@cs.unc.edu> et.al. |
66 |
/* kbd rate stuff based on kbdrate.c from Rik Faith <faith@cs.unc.edu> et.al. |
67 |
* from util-linux-2.9t package */ |
67 |
* from util-linux-2.9t package */ |
68 |
|
68 |
/* Linux 2.5 and Linux 2.6 use 'period' instead of 'rate' |
|
|
69 |
* Nico Schottelius <nico-linux-xfree86@schottelius.org> */ |
69 |
#include <linux/kd.h> |
70 |
#include <linux/kd.h> |
70 |
#ifdef __sparc__ |
71 |
#ifdef __sparc__ |
71 |
#include <asm/param.h> |
72 |
#include <asm/param.h> |
Lines 87-93
Link Here
|
87 |
struct kbd_repeat kbdrep_s; |
88 |
struct kbd_repeat kbdrep_s; |
88 |
|
89 |
|
89 |
/* don't change, just test */ |
90 |
/* don't change, just test */ |
90 |
kbdrep_s.rate = -1; |
91 |
kbdrep_s.period = -1; |
91 |
kbdrep_s.delay = -1; |
92 |
kbdrep_s.delay = -1; |
92 |
if (ioctl( 0, KDKBDREP, &kbdrep_s )) { |
93 |
if (ioctl( 0, KDKBDREP, &kbdrep_s )) { |
93 |
return 0; |
94 |
return 0; |
Lines 95-105
Link Here
|
95 |
|
96 |
|
96 |
/* do the change */ |
97 |
/* do the change */ |
97 |
if (rate == 0) /* switch repeat off */ |
98 |
if (rate == 0) /* switch repeat off */ |
98 |
kbdrep_s.rate = 0; |
99 |
kbdrep_s.period = 0; |
99 |
else |
100 |
else |
100 |
kbdrep_s.rate = 10000 / rate; /* convert cps to msec */ |
101 |
kbdrep_s.period = 10000 / rate; /* convert cps to msec */ |
101 |
if (kbdrep_s.rate < 1) |
102 |
if (kbdrep_s.period < 1) |
102 |
kbdrep_s.rate = 1; |
103 |
kbdrep_s.period = 1; |
103 |
kbdrep_s.delay = delay; |
104 |
kbdrep_s.delay = delay; |
104 |
if (kbdrep_s.delay < 1) |
105 |
if (kbdrep_s.delay < 1) |
105 |
kbdrep_s.delay = 1; |
106 |
kbdrep_s.delay = 1; |
Lines 124-133
Link Here
|
124 |
if (fd == -1) |
125 |
if (fd == -1) |
125 |
return 0; |
126 |
return 0; |
126 |
|
127 |
|
127 |
kbdrate_s.rate = (rate + 5) / 10; /* must be integer, so round up */ |
128 |
kbdrate_s.period = (rate + 5) / 10; /* must be integer, so round up */ |
128 |
kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */ |
129 |
kbdrate_s.delay = delay * HZ / 1000; /* convert ms to Hz */ |
129 |
if (kbdrate_s.rate > 50) |
130 |
if (kbdrate_s.period > 50) |
130 |
kbdrate_s.rate = 50; |
131 |
kbdrate_s.period = 50; |
131 |
|
132 |
|
132 |
if (ioctl( fd, KIOCSRATE, &kbdrate_s )) |
133 |
if (ioctl( fd, KIOCSRATE, &kbdrate_s )) |
133 |
return 0; |
134 |
return 0; |