Ping. Anyone?

> On 07 Dec 2015, at 23:39, Joerg Jung <m...@umaxx.net> 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;
>       }
> 
>       /*
> 

Reply via email to