> Index: wskbd.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
> retrieving revision 1.83
> diff -u -p -r1.83 wskbd.c
> --- wskbd.c   12 Dec 2015 12:30:18 -0000      1.83
> +++ wskbd.c   13 May 2016 09:20:05 -0000
> @@ -1037,6 +1037,7 @@ wskbd_displayioctl(struct device *dev, u
>       case WSKBDIO_COMPLEXBELL:
>               ubdp = (struct wskbd_bell_data *)data;
>               SETBELL(ubdp, ubdp, &sc->sc_bell_data);
> +             ubp->volume = (ubp->volume * sc->sc_bell_data->volume) / 100;
>               return ((*sc->sc_accessops->ioctl)(sc->sc_accesscookie,
>                   WSKBDIO_COMPLEXBELL, (caddr_t)ubdp, flag, p));
>  
> 

This doesn't compile because sc_bell_data is a struct, not a pointer.
With that fixed, I confirm that I can no longer get my T420 to beep with

wsconsctl keyboard.bell.volume=0

Index: wskbd.c
===================================================================
RCS file: /var/cvs/src/sys/dev/wscons/wskbd.c,v
retrieving revision 1.83
diff -u -p -r1.83 wskbd.c
--- wskbd.c     12 Dec 2015 12:30:18 -0000      1.83
+++ wskbd.c     13 May 2016 10:17:51 -0000
@@ -1037,6 +1037,7 @@ wskbd_displayioctl(struct device *dev, u
        case WSKBDIO_COMPLEXBELL:
                ubdp = (struct wskbd_bell_data *)data;
                SETBELL(ubdp, ubdp, &sc->sc_bell_data);
+               ubdp->volume = (ubdp->volume * sc->sc_bell_data.volume) / 100;
                return ((*sc->sc_accessops->ioctl)(sc->sc_accesscookie,
                    WSKBDIO_COMPLEXBELL, (caddr_t)ubdp, flag, p));
 

Reply via email to