On 11 December 2015 at 10:36, Joerg Jung <[email protected]> wrote:

> Ping. Anyone?
>
> > On 07 Dec 2015, at 23:39, Joerg Jung <[email protected]> wrote:
> >
> > Hi,
> >
> > here comes a series of small diffs which add generic support for
> > keyboard backlights.
> >
> > Please find below the first diff, which adds new ioctls to wskbd(4) to
> > control keyboard backlights.
> >
> > In contrast to an earlier diff from jcs, I have chosen to use a struct
> > in favor of a simple (unsigned) int as depending on the vendor
> > (Thinkpad, Apple, ...) different min/max values for the brightness of
> > the keyboard backlight are possible.
> >
> > Comments, OK?
> >
> > Thanks,
> > Regards,
> > Joerg
> >
> >
> >
> > Index: wsconsio.h
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/wscons/wsconsio.h,v
> > retrieving revision 1.72
> > diff -u -p -r1.72 wsconsio.h
> > --- wsconsio.h        30 Aug 2015 10:05:09 -0000      1.72
> > +++ wsconsio.h        7 Dec 2015 21:03:45 -0000
> > @@ -180,6 +180,13 @@ struct wskbd_map_data {
> > #define WSKBDIO_GETENCODING   _IOR('W', 15, kbd_t)
> > #define WSKBDIO_SETENCODING   _IOW('W', 16, kbd_t)
> >
> > +/* Get/set keyboard backlight.  Not applicable to all keyboard types. */
> > +struct wskbd_backlight {
> > +     unsigned int min, max, curval;
> > +};
> > +#define      WSKBDIO_GETBACKLIGHT    _IOR('W', 17, struct
> wskbd_backlight)
> > +#define      WSKBDIO_SETBACKLIGHT    _IOW('W', 18, struct
> wskbd_backlight)
> > +
> > /* internal use only */
> > #define WSKBDIO_SETMODE               _IOW('W', 19, int)
> > #define WSKBDIO_GETMODE               _IOR('W', 20, int)
> > Index: wskbd.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
> > retrieving revision 1.82
> > diff -u -p -r1.82 wskbd.c
> > --- wskbd.c   10 Sep 2015 18:14:52 -0000      1.82
> > +++ wskbd.c   7 Dec 2015 21:03:45 -0000
> > @@ -230,6 +230,9 @@ int       wskbd_mux_close(struct wsevsrc *);
> > int   wskbd_do_open(struct wskbd_softc *, struct wseventvar *);
> > int   wskbd_do_ioctl(struct device *, u_long, caddr_t, int, struct proc
> *);
> >
> > +int  (*wskbd_get_backlight)(struct wskbd_backlight *);
> > +int  (*wskbd_set_backlight)(struct wskbd_backlight *);
> > +
> > struct cfdriver wskbd_cd = {
> >       NULL, "wskbd", DV_TTY
> > };
> > @@ -1010,6 +1013,7 @@ wskbd_displayioctl(struct device *dev, u
> >       case WSKBDIO_SETDEFAULTKEYREPEAT:
> >       case WSKBDIO_SETMAP:
> >       case WSKBDIO_SETENCODING:
> > +     case WSKBDIO_SETBACKLIGHT:
> >               if ((flag & FWRITE) == 0)
> >                       return (EACCES);
> >       }
> > @@ -1155,6 +1159,18 @@ getkeyrepeat:
> >                       wsmux_set_layout(sc->sc_base.me_parent, enc);
> > #endif
> >               return (0);
> > +
> > +     case WSKBDIO_GETBACKLIGHT:
> > +             if (wskbd_get_backlight != NULL)
> > +                     return (*wskbd_get_backlight)((struct
> wskbd_backlight *)data);
> > +             error = ENOTTY;
> > +             break;
> > +
> > +     case WSKBDIO_SETBACKLIGHT:
> > +             if (wskbd_set_backlight != NULL)
> > +                     return (*wskbd_set_backlight)((struct
> wskbd_backlight *)data);
> > +             error = ENOTTY;
> > +             break;
> >       }
> >
> >       /*
> >
>

Hello Joerg,

not sure if this diff has been applied in the snapshots but lately
brightness keys started to work on Lenovo X250. Could be completely
unrelated, though.

--
Regards,
Ville Valkonen

Reply via email to