Re: Toshiba kbd patch

Simon Kirby (sim@stormix.com)
Mon, 6 Dec 1999 20:15:33 -0500


--azLHFNyN32YCQGCU
Content-Type: text/plain; charset=us-ascii

On Tue, Dec 07, 1999 at 12:56:36AM +0100, Vojtech Pavlik wrote:

> On Mon, Dec 06, 1999 at 03:37:00PM -0800, Linus Torvalds wrote:
>
> > > Here is my latest version of the patch for fixing bad Toshiba notebook
> > > keyboards - making sure the PC keyboard delay is at least 250ms, which
> > > seems to be a good thing for others with broken keyboards.
> >
> > Well, it looks reasonable, but at the very least the magic constant "25"
> > would need to be something readable like "HZ/2" so that it would actually
> > work on correctly other architectures than x86 too.
> >
> > Also, I'm really rather nervous about 250ms being too long. Are there any
> > really good touch-typists out there? I can easily see somebody pressing
> > the same key more than four times a second, and I'd hate to lose
> > keystrokes for good typists. Please convince me this is safe..
>
> It should be fine - if someone is typing fast, he's also generating
> key releases and thus the condition won't be met. It guards against
> consecutive presses only, which only happens with autorepeat.

While I agree this is a good workaround, I'd like to note that my
keyboard will miss the first repeat as a result of this patch, because
when my keyboard is set to a 250 ms delay before the first repeat, it
actually only takes about 242 ms. There is then a 33 ms before the next
repeat, which I may throw off my judgement enough to make things annoying
for me.

I am sure that there are other keyboards with even less of a delay that
people are used to, and perhaps some that can be set to even less for the
initial delay. This patch doesn't have any option to support these, but
I don't see any easy alternative (easiest thing is probably a config
option, which is pretty silly).

Attached is a happy delay test program, enter key only. You may wish to
clear the screen first (especially in an X terminal or framebuffer), to
reduce console overhead.

Output from my keyboard:

0.242143

0.033059

0.033039

0.033066

Simon-

[ Stormix Technologies Inc. ][ NetNation Communcations Inc. ]
[ sim@stormix.com ][ sim@netnation.com ]
[ Opinions expressed are not necessarily those of my employers. ]

--azLHFNyN32YCQGCU
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="testkb.c"

#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>

int main(){
struct timeval tv[3];
struct timeval *current = &tv[0];
struct timeval *last = &tv[1];
struct timeval *difference = &tv[2];
struct timeval *swapper;
int tsnap = 0;
char c;

gettimeofday(last,NULL);

fprintf(stderr,"Press and hold [ENTER] until key repeats and times are printed.\n");

for (;;){
if (read(fileno(stdin),&c,1) != 1)
break;
gettimeofday(current,NULL);
if (current->tv_usec > last->tv_usec){
difference->tv_usec = current->tv_usec - last->tv_usec;
difference->tv_sec = current->tv_sec - last->tv_sec;
} else {
difference->tv_usec = current->tv_usec + 1000000 - last->tv_usec;
difference->tv_sec = current->tv_sec - last->tv_sec - 1;
}
fprintf(stderr,"%u.%06u\n",difference->tv_sec,difference->tv_usec);

swapper = last; last = current; current = swapper;
}

exit(0);
}

--azLHFNyN32YCQGCU--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/