Index: sys/dev/vt/vt.h =================================================================== --- sys/dev/vt/vt.h (revision 259868) +++ sys/dev/vt/vt.h (working copy) @@ -135,6 +135,7 @@ #define VDF_DEAD 0x10 /* Early probing found nothing. */ #define VDF_INITIALIZED 0x20 /* vtterm_cnprobe already done. */ #define VDF_MOUSECURSOR 0x40 /* Mouse cursor visible. */ +#define VDF_QUIET_BELL 0x80 /* Disable bell. */ int vd_keyboard; /* (G) Keyboard index. */ unsigned int vd_kbstate; /* (?) Device unit. */ unsigned int vd_unit; /* (c) Device unit. */ Index: sys/dev/vt/vt_core.c =================================================================== --- sys/dev/vt/vt_core.c (revision 259868) +++ sys/dev/vt/vt_core.c (working copy) @@ -589,7 +589,12 @@ static void vtterm_bell(struct terminal *tm) { + struct vt_window *vw = tm->tm_softc; + struct vt_device *vd = vw->vw_device; + if (vd->vd_flags & VDF_QUIET_BELL) + return; + sysbeep(1193182 / VT_BELLPITCH, VT_BELLDURATION); } @@ -1505,6 +1510,12 @@ /* XXX */ *(int *)data = M_CG640x480; return (0); + case CONS_BELLTYPE: /* set bell type sound */ + if ((*(int *)data) & CONS_QUIET_BELL) + vd->vd_flags |= VDF_QUIET_BELL; + else + vd->vd_flags &= ~VDF_QUIET_BELL; + return (0); case CONS_GETINFO: { vid_info_t *vi = (vid_info_t *)data;