Subject: pccons reset problems
To: None <current-users@sun-lamp.cs.berkeley.edu, port-i386@sun-lamp.cs.berkeley.edu>
From: None <mycroft@gnu.ai.mit.edu>
List: current-users
Date: 03/01/1994 23:47:25
I just looked into why this causes problems.  Below is an abbreviated
explanation.

The keyboard (or the i8042; it's not clear which) has this strange idea
of `scancode translation tables'.  Each keyboard/i8042 has a set of such
translation tables, a command to select one, and a default, which
determine what scancodes are queued in the keyboard buffer when a key is
pressed or released.

Normally, the BIOS magically divines which table number has the old XT
codes in it and selects that, to avoid compatibility problems with old
software.  How it figures this out is a mystery to me; my Vectra docs
seem to think it's table 1, but my Superwave 386 seems to think it's
table 0.

pccons, and I think all of the various *BSD console drivers, require the
old XT codes.  They haven't the foggiest idea how to translate the new
codes, or even recognize an AT-style break code.  But some keyboards
when reset default to a different translation table.

Now here's the catch.  We could set the translation table after the
reset, except that there's no good algorithm that I can think of for
determining which table we should select!

So, basically, the code is screwed.

I've added the appropriate code to select table 0 in pccons, but turned
off the entire section of code by default.  If you feel daring, try
removing the `#if 0' around the reset code and let me know what happens
on your machine!  It works on mine, but that's doesn't mean much.


------------------------------------------------------------------------------