> After getting an USB keyboard, I noticed no beep when hitting the escape 
> key in Vi.  Plugged in the PS/2 keyboard and I get the beep back!
>
> After doing some googling, it appears that USB keyboards may not support 
> ascii 0x07 (bel).

Most keyboards those days do not have built-in beeper devices,
especially in the PC world; however in the OpenBSD kernels, the console
beep is still routed through the keyboard driver, for the old platforms
where the only noise-capable device is the beeper in the keyboard
itself.

When your console keyboard is an USB keyboard, the software glue to have
the beep request sent to the PC speaker is currently missing, so there
is currently no way to work around this situation.

The following diff should fix that.

Miod

Index: dev/isa/pcppi.c
===================================================================
RCS file: /cvs/src/sys/dev/isa/pcppi.c,v
retrieving revision 1.7
diff -N -u -p dev/isa/pcppi.c
--- dev/isa/pcppi.c     12 Feb 2006 20:04:16 -0000      1.7
+++ dev/isa/pcppi.c     29 Sep 2009 04:35:50 -0000
@@ -45,11 +45,12 @@
 #include <dev/ic/i8253reg.h>
 
 #include "pckbd.h"
-#if NPCKBD > 0
+#include "ukbd.h"
+#if NPCKBD > 0 || NUKBD > 0
 #include <dev/ic/pckbcvar.h>
 #include <dev/pckbc/pckbdvar.h>
-
-void   pcppi_pckbd_bell(void *, u_int, u_int, u_int, int);
+#include <dev/usb/ukbdvar.h>
+void   pcppi_kbd_bell(void *, u_int, u_int, u_int, int);
 #endif
 
 struct pcppi_softc {
@@ -169,10 +170,13 @@ pcppi_attach(parent, self, aux)
 
        sc->sc_bellactive = sc->sc_bellpitch = sc->sc_slp = 0;
 
+       /* Provide a beeper for the keyboard, if there isn't one already. */
 #if NPCKBD > 0
-       /* Provide a beeper for the PC Keyboard, if there isn't one already. */
-       pckbd_hookup_bell(pcppi_pckbd_bell, sc);
+       pckbd_hookup_bell(pcppi_kbd_bell, sc);
 #endif
+#if NUKBD > 0
+       ukbd_hookup_bell(pcppi_kbd_bell, sc);
+#endif
 
        pa.pa_cookie = sc;
        while (config_found(self, &pa, 0));
@@ -255,9 +259,9 @@ pcppi_bell_stop(arg)
        splx(s);
 }
 
-#if NPCKBD > 0
+#if NPCKBD > 0 || NUKBD > 0
 void
-pcppi_pckbd_bell(arg, pitch, period, volume, poll)
+pcppi_kbd_bell(arg, pitch, period, volume, poll)
        void *arg;
        u_int pitch, period, volume;
        int poll;
@@ -268,4 +272,4 @@ pcppi_pckbd_bell(arg, pitch, period, volume, poll)
        pcppi_bell(arg, volume ? pitch : 0, (period * hz) / 1000,
            poll ? PCPPI_BELL_POLL : 0);
 }
-#endif /* NPCKBD > 0 */
+#endif /* NPCKBD > 0 || NUKBD > 0 */

Reply via email to