public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vojtech Pavlik <vojtech@suse.cz>
To: Jurriaan <thunder7@xs4all.nl>
Cc: linux-kernel@vger.kernel.org, vojtech@suse.cz
Subject: Re: keyboard repeat speed went nuts since 2.6.0-test5, even in 2.6.0-test6-mm4
Date: Tue, 7 Oct 2003 22:40:56 +0200	[thread overview]
Message-ID: <20031007204056.GB20844@ucw.cz> (raw)
In-Reply-To: <20031007203316.GA1719@middle.of.nowhere>

[-- Attachment #1: Type: text/plain, Size: 1071 bytes --]

On Tue, Oct 07, 2003 at 10:33:16PM +0200, Jurriaan wrote:
> 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.

> 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.

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR

[-- Attachment #2: kbdrate-fix --]
[-- Type: text/plain, Size: 1933 bytes --]

You can pull this changeset from:
	bk://kernel.bkbits.net/vojtech/input

===================================================================

ChangeSet@1.1386, 2003-09-29 17:00:25+02:00, vojtech@suse.cz
  input: Fix AT keyboard repeat rate setting, also make rate selection
         in finer steps.


 atkbd.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

===================================================================

diff -Nru a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
--- a/drivers/input/keyboard/atkbd.c	Mon Sep 29 17:16:17 2003
+++ b/drivers/input/keyboard/atkbd.c	Mon Sep 29 17:16:17 2003
@@ -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;

  reply	other threads:[~2003-10-07 20:41 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-10-07 20:33 keyboard repeat speed went nuts since 2.6.0-test5, even in 2.6.0-test6-mm4 Jurriaan
2003-10-07 20:40 ` Vojtech Pavlik [this message]
2003-10-08  8:23   ` Jurriaan
2003-10-08  8:28     ` Vojtech Pavlik
2003-10-13  3:54       ` Andrew Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20031007204056.GB20844@ucw.cz \
    --to=vojtech@suse.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=thunder7@xs4all.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox