tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Sun keyboard on i386?



I have a desk on which (for reasons not immediately relevant) the main
head is an i386 machine (4.0.1).  But this has meant I'm stuck using a
crappy peecee keyboard.

Today, I put together the interface electronics to put one of my good
(Sun type 3) keyboards on one of the serial ports.  It works, in that a
program that talks to the serial port can speak the keyboard's protocol
and get keystrokes and suchlike.

I can, if I have to, bludgeon X into being such a program.  But I
thought I would first try to use the existing kernel code for Sun
keyboards (which would, I would expect, have the additional advantage
of working in the text console).  Looking at the kernel configs, I see
that on sparc64 (and on sparc, though the comments say it's just for
test building) kbd can attach at com, which is convenient because it's
exactly what I want to do.  So I appended a handful of lines to my i386
machine's kernel config, mostly lifted from sparc64:

define firm_events
file dev/sun/event.c            firm_events needs-flag
device kbd: firm_events, wskbddev
file dev/sun/kbd.c              kbd needs-flag
file dev/sun/kbd_tables.c       kbd
file dev/sun/wskbdmap_sun.c     kbd & wskbd
attach kbd at com with kbd_tty
file dev/sun/sunkbd.c           kbd_tty
file dev/sun/kbdsun.c           kbd_tty
kbd0 at com0

I had to change an #include and remove another to get the kernel to
compile, and rip a little code out of kbd.c and sunkbd.c to get it to
link, but surprisingly little.  Less than I was expecting.
(Specifically: in sunkbd.c, <machine/kbd.h> -> <sys/dev/kbd_reg.h>,
remove <machine/vuid_event.h>, and rip out both arms of the
if (args->kmta_consdev) test in sunkbd_attach(); in kbd.c, remove
sunkbd_wskbd_cn{getc,pollc,bell} and sunkbd_bell_off, remove
sunkbd_wskbd_consops and the code in kbd_enable that conditionally uses
it.  Exact diffs available if anyone wants.)

But it doesn't work.  I added a printf to sunkbd_match, and it's never
even getting called.  Is there some kind person here who has any idea
why not and can point me in a useful direction?  I daresay it's
something that will be blindingly obvious once I see it....

/~\ The ASCII                             Mouse
\ / Ribbon Campaign
 X  Against HTML                mouse%rodents-montreal.org@localhost
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index