tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Sun keyboard on i386?
On Wed, 13 Jul 2011, Mouse wrote:
> 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....
On sparc64 the console attach stuff is based on properties it gets from
OBP. On x86 that's done in a completely different manner. You will have
to do a lot of cnattach hacking.
I'd recommend getting a newer Type 4 or Type 5 USB keyboard instead of
trying to kluge a serial keyboard. Those work great on x86.
Eduardo
Home |
Main Index |
Thread Index |
Old Index