keyboard repeat speed went nuts since 2.6.0-test5, even in 2.6.0-test6-mm4
I like my keyboard fast (must be from playing a lot of angband).
In 2.6.0-test5, after '/sbin/kbdrate -r 30 -d 250', I get some 2000 characters in a minute (pressing n continuously, stopwatch in hand). In 2.6.0-test6 and 2.6.0-test6-mm4, after '/sbin/kbdrate -r 30 -d 250', I get some 820 characters in a minute.
30 cps != 800/60 s, that's more like half that rate.
Booting with or without atkbd_softrepeat=1 on the kernel commandline makes no difference at all.
It's not only the repeat-speed that has gone down, the delay before repeat kicks in is notably slower as well. This is perhaps even more frustrating, but harder to measure :-(
This is on a plain Chicony KB-7903 PS/2 keyboard. It is connected via a Vista Rose KVM to a VIA KT400 chipset motherboard.
Any patches to test are very welcome here.
Thanks,
Jurriaan
Signature · 5 lines
She'd put a lot of work and practice into that glare, and it had always served her well in the past. It suggested she was one hundred percent crazy, barely under control, and violent with it. Simon R Green - Guard against Dishonour Debian (Unstable) GNU/Linux 2.6.0-test5 4276 bogomips 0.33 0.14
Quoted 11 lines · Jurriaan
I like my keyboard fast (must be from playing a lot of angband).
In 2.6.0-test5, after '
/sbin/kbdrate-r 30 -d 250', I get some 2000 characters in a minute (pressing n continuously, stopwatch in hand). In 2.6.0-test6 and 2.6.0-test6-mm4, after '/sbin/kbdrate-r 30 -d 250', I get some 820 characters in a minute.30 cps != 800/60 s, that's more like half that rate.
Booting with or without atkbd_softrepeat=1 on the kernel commandline makes no difference at all.
It's a bug. I have a fix, it went through LKML already, but Linus didn't merge it yet. I'll be resending it.
Quoted 8 lines
It's not only the repeat-speed that has gone down, the delay before repeat kicks in is notably slower as well. This is perhaps even more frustrating, but harder to measure :-(
This is on a plain Chicony KB-7903 PS/2 keyboard. It is connected via a Vista Rose KVM to a VIA KT400 chipset motherboard.
Any patches to test are very welcome here.
Fix attached.
Signature · 2 lines
Vojtech Pavlik SuSE Labs, SuSE CR
You can pull this changeset from:
bk://kernel.bkbits.net/vojtech/input
===================================================================
[email protected], 2003-09-29 17:00:25+02:00, [email protected]
input: Fix AT keyboard repeat rate setting, also make rate selection
in finer steps.
atkbd.c | 19 ++++++++++--------- 1 files changed, 10 insertions(+), 9 deletions(-)
===================================================================
drivers/input/keyboard/atkbd.c +10 -9
@@ -370,10 +370,11 @@static int atkbd_event (struct input_dev *dev,unsigned int type,unsigned int code,int value) {struct atkbd *atkbd = dev->private; -struct {int p;u8 v; } period[] = - { {30 ,0x00 }, {25 ,0x02 }, {20 ,0x04 }, {15 ,0x08 }, {10 ,0x0c }, {7 ,0x10 }, {5 ,0x14 }, {0 ,0x14 } }; -struct {int d;u8 v; } delay[] = - { {1000 ,0x60 }, {750 ,0x40 }, {500 ,0x20 }, {250 ,0x00 }, {0 ,0x00 } }; +const short period[32 ] = + {33 ,37 ,42 ,46 ,50 ,54 ,58 ,63 ,67 ,75 ,83 ,92 ,100 ,109 ,116 ,125 , +133 ,149 ,167 ,182 ,200 ,217 ,232 ,250 ,270 ,303 ,333 ,370 ,400 ,435 ,470 ,500 }; +const short delay[4 ] = + {250 ,500 ,750 ,1000 };char param[2 ];int i, j;
@@ -407,11 +408,11 @@if (atkbd_softrepeat)return 0 ; i = j =0 ; -while (period[i].p > dev->rep[REP_PERIOD ]) i++; -while (delay[j].d > dev->rep[REP_DELAY ]) j++; - dev->rep[REP_PERIOD ] = period[i].p; - dev->rep[REP_DELAY ] = delay[j].d; - param[0 ] = period[i].v | delay[j].v; +while (i <32 && period[i] < dev->rep[REP_PERIOD ]) i++; +while (j <4 && delay[j] < dev->rep[REP_DELAY ]) j++; + dev->rep[REP_PERIOD ] = period[i]; + dev->rep[REP_DELAY ] = delay[j]; + param[0 ] = i | (j <<5 );atkbd_command (atkbd, param,ATKBD_CMD_SETREP );return 0 ;
From: Vojtech Pavlik <[email protected]>
Date: Tue, Oct 07, 2003 at 10:40:56PM +0200
Quoted 20 lines · Jurriaan
Quoted 11 lines
I like my keyboard fast (must be from playing a lot of angband).
In 2.6.0-test5, after '
/sbin/kbdrate-r 30 -d 250', I get some 2000 characters in a minute (pressing n continuously, stopwatch in hand). In 2.6.0-test6 and 2.6.0-test6-mm4, after '/sbin/kbdrate-r 30 -d 250', I get some 820 characters in a minute.30 cps != 800/60 s, that's more like half that rate.
Booting with or without atkbd_softrepeat=1 on the kernel commandline makes no difference at all.
It's a bug. I have a fix, it went through LKML already, but Linus didn't merge it yet. I'll be resending it.
Quoted 4 lines
It's not only the repeat-speed that has gone down, the delay before repeat kicks in is notably slower as well. This is perhaps even more frustrating, but harder to measure :-(
Quoted 7 lines
Quoted 4 lines
This is on a plain Chicony KB-7903 PS/2 keyboard. It is connected via a Vista Rose KVM to a VIA KT400 chipset motherboard.
Any patches to test are very welcome here.
Fix attached.
Sorry, but that fix is already in 2.6.0-test6-mm4; that's why I tested that version...
Anyway, I added some printk's like this:
case EV_REP:
printk( KERN_INFO "atkbd: atkbd_softrepeat %d\n", atkbd_softrepeat);
if (atkbd_softrepeat) return 0;
i = j = 0;
while (i < 32 && period[i] < dev->rep[REP_PERIOD]) i++;
while (j < 4 && delay[j] < dev->rep[REP_DELAY]) j++;
dev->rep[REP_PERIOD] = period[i];
dev->rep[REP_DELAY] = delay[j];
printk( KERN_INFO "atkbd: period %d delay %d\n", period[i], delay[j]);
param[0] = i | (j << 5);
atkbd_command(atkbd, param, ATKBD_CMD_SETREP);
return 0;And even if my command-line for the kernel looks like this:
Kernel command line: root=/dev/md3 video=matroxfb:xres:1600,yres:1360,depth:16,pixclock:4116,left:304,right:64,upper:46,lower:1,hslen :192,vslen:3,fv:90,hwcursor=off hdb=scsi apm=power-off atkbd_softrepeat=1
I still see this:
:kbdrate -r 50 -d 100
atkbd: atkbd_softrepeat 0
atkbd: period 33 delay 250
atkbd: atkbd_softrepeat 0
atkbd: period 33 delay 250
Typematic Rate set to 30.3 cps (delay = 250 ms)
and I still get only 800 cpm, which means 14 cps or so. Why it atkbd_softrepeat still 0 with this command-line?
Kind regards,
Jurriaan
Signature · 4 lines
How should I know if it works? That's what beta testers are for. I only coded it. Attributed to Linus Torvalds, somewhere in a posting Debian (Unstable) GNU/Linux 2.6.0-test6-mm4 4276 bogomips 0.27 0.14
Quoted 25 lines · Jurriaan
From: Vojtech Pavlik <[email protected]>
Date: Tue, Oct 07, 2003 at 10:40:56PM +0200Quoted 23 lines · Jurriaan
Quoted 11 lines
I like my keyboard fast (must be from playing a lot of angband).
In 2.6.0-test5, after '
/sbin/kbdrate-r 30 -d 250', I get some 2000 characters in a minute (pressing n continuously, stopwatch in hand). In 2.6.0-test6 and 2.6.0-test6-mm4, after '/sbin/kbdrate-r 30 -d 250', I get some 820 characters in a minute.30 cps != 800/60 s, that's more like half that rate.
Booting with or without atkbd_softrepeat=1 on the kernel commandline makes no difference at all.
It's a bug. I have a fix, it went through LKML already, but Linus didn't merge it yet. I'll be resending it.
Quoted 7 lines
It's not only the repeat-speed that has gone down, the delay before repeat kicks in is notably slower as well. This is perhaps even more frustrating, but harder to measure :-(
This is on a plain Chicony KB-7903 PS/2 keyboard. It is connected via a Vista Rose KVM to a VIA KT400 chipset motherboard.
Quoted 6 lines
Quoted 4 lines
Quoted 1 line
Any patches to test are very welcome here.
Fix attached.
Sorry, but that fix is already in 2.6.0-test6-mm4; that's why I tested that version...
Yet another bug. Fix attached, too.
Signature · 2 lines
Vojtech Pavlik SuSE Labs, SuSE CR
You can pull this changeset from:
bk://kernel.bkbits.net/vojtech/input
===================================================================
[email protected], 2003-09-28 18:48:05+02:00, [email protected]
input: Fix atkbd_softrepeat kernel command line parameter.
atkbd.c | 8 ++++++++ 1 files changed, 8 insertions(+)
===================================================================
drivers/input/keyboard/atkbd.c +8 -0
@@ -707,9 +707,17 @@if (ints[0 ] >0 ) atkbd_reset = ints[1 ]; return 1; } +static int __init atkbd_setup_softrepeat (char *str) +{ +int ints[4 ]; + str =get_options (str,ARRAY_SIZE (ints), ints); +if (ints[0 ] >0 ) atkbd_softrepeat = ints[1 ]; +return 1 ; +}__setup ("atkbd_set=" , atkbd_setup_set);__setup ("atkbd_reset" , atkbd_setup_reset); +__setup ("atkbd_softrepeat=" , atkbd_setup_softrepeat);#endif int __init atkbd_init (void )
Quoted 7 lines · Vojtech Pavlik
+static int
__initatkbd_setup_softrepeat(char *str)
+{+ int ints[4]; + str = get_options(str, ARRAY_SIZE(ints), ints); + if (ints[0] > 0) atkbd_softrepeat = ints[1]; + return 1;
Quoted 5 lines
+}
__setup("atkbd_set=", atkbd_setup_set);__setup("atkbd_reset", atkbd_setup_reset);
+__setup("atkbd_softrepeat=",atkbd_setup_softrepeat);
Could we please try to keep Documentation/kernel-parameters.txt in sync with the code?
Thanks.