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
