On Fri, Jul 14, 2023 at 09:17:20PM +0200, Tobias Heider wrote:
> On Fri, Jul 14, 2023 at 05:53:41PM +0000, jon@elytron.openbsd.amsterdam wrote:
> > Hello everyone. After a tobhe@'s recent patch [1] to add suspend
> > keysyms for other mac laptops, and a brief consultation with him,
> > I am reposting an updated version of my keyboard backlight
> > patch [2], which you can find below:
> > 
> > [1] https://marc.info/?l=openbsd-tech&m=168884670208963&w=2
> > 
> > [2] https://marc.info/?l=openbsd-tech&m=167755750511636&w=2
> 
> Hi,
> 
> the diff looks good to me except for maybe the numlock bit in hidkbd
> which seems unrelated to the rest of the changes, but we can drop that
> before committing.
> One thing I am never quite sure about is the keycode to internal key 
> translation,
> I am assuming you just picked 234 - 236 incrementally. Maybe miod@ (cc) knows 
> if
> there are better ones to use here.
> 
> I have also tested it and verified it works on my PowerBook G4.
> 
> ok anyone?

No one interested in working keyboard backlight shortcuts?
Don't get scared by the powerbook part, a lot of this is reusable for other 
laptop models.

> 
> > 
> > Index: arch/macppc/dev/adb.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/macppc/dev/adb.c,v
> > retrieving revision 1.50
> > diff -u -p -r1.50 adb.c
> > --- arch/macppc/dev/adb.c   11 Apr 2023 00:45:07 -0000      1.50
> > +++ arch/macppc/dev/adb.c   13 Jul 2023 21:17:17 -0000
> > @@ -102,6 +102,8 @@
> >  #include <macppc/dev/pm_direct.h>
> >  #include <macppc/dev/viareg.h>
> >  
> > +#include <dev/wscons/wsconsio.h>
> > +
> >  #include "apm.h"
> >  
> >  #define printf_intr printf
> > @@ -242,6 +244,12 @@ void   setsoftadb(void);
> >  int        adb_intr(void *arg);
> >  void       adb_cuda_autopoll(void);
> >  void       adb_cuda_fileserver_mode(void);
> > +uint8_t     pmu_backlight; /* keyboard backlight value */
> > +int        pmu_get_backlight(struct wskbd_backlight *);
> > +int        pmu_set_backlight(struct wskbd_backlight *);
> > +extern int (*wskbd_get_backlight)(struct wskbd_backlight *);
> > +extern int (*wskbd_set_backlight)(struct wskbd_backlight *);
> > +
> >  
> >  #ifndef SMALL_KERNEL
> >  void       adb_shutdown(void *);
> > @@ -1730,8 +1738,11 @@ adbattach(struct device *parent, struct 
> >  
> >     if (adbHardware == ADB_HW_CUDA)
> >             adb_cuda_fileserver_mode();
> > -   if (adbHardware == ADB_HW_PMU)
> > +   if (adbHardware == ADB_HW_PMU) {
> > +           wskbd_get_backlight = pmu_get_backlight;
> > +           wskbd_set_backlight = pmu_set_backlight;
> >             pmu_fileserver_mode(1);
> > +   }
> >  
> >     /*
> >      * XXX If the machine doesn't have an ADB bus (PowerBook5,6+)
> > @@ -1757,4 +1768,20 @@ adbattach(struct device *parent, struct 
> >     if (adbHardware == ADB_HW_CUDA)
> >             adb_cuda_autopoll();
> >     adb_polling = 0;
> > +}
> > +
> > +int
> > +pmu_get_backlight(struct wskbd_backlight *kbl)
> > +{
> > +   kbl->min = 0;
> > +   kbl->max = 0xff;
> > +   kbl->curval = pmu_backlight;
> > +   return 0;
> > +}
> > +
> > +int
> > +pmu_set_backlight(struct wskbd_backlight *kbl)
> > +{
> > +   pmu_backlight = kbl->curval;
> > +   return pmu_set_kbl(pmu_backlight);
> >  }
> > Index: arch/macppc/dev/pm_direct.c
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/macppc/dev/pm_direct.c,v
> > retrieving revision 1.34
> > diff -u -p -r1.34 pm_direct.c
> > --- arch/macppc/dev/pm_direct.c     28 Dec 2022 07:40:23 -0000      1.34
> > +++ arch/macppc/dev/pm_direct.c     13 Jul 2023 21:17:24 -0000
> > @@ -853,3 +853,22 @@ pmu_fileserver_mode(int on)
> >     }
> >     pmgrop(&p);
> >  }
> > +
> > +int
> > +pmu_set_kbl(unsigned int level)
> > +{
> > +   if (level > 0xff)
> > +           return (EINVAL);
> > +
> > +   PMData p;
> > +
> > +   p.command = 0x4F;
> > +   p.num_data = 3;
> > +   p.s_buf = p.r_buf = p.data;
> > +   p.data[0] = 0;
> > +   p.data[1] = 0;
> > +   p.data[2] = level;
> > +   pmgrop(&p);
> > +   return (0);
> > +}
> > +
> > Index: arch/macppc/dev/pm_direct.h
> > ===================================================================
> > RCS file: /cvs/src/sys/arch/macppc/dev/pm_direct.h,v
> > retrieving revision 1.15
> > diff -u -p -r1.15 pm_direct.h
> > --- arch/macppc/dev/pm_direct.h     21 Oct 2022 22:42:36 -0000      1.15
> > +++ arch/macppc/dev/pm_direct.h     13 Jul 2023 21:17:24 -0000
> > @@ -67,6 +67,7 @@ struct pmu_battery_info
> >  };
> >  
> >  int pm_battery_info(int, struct pmu_battery_info *);
> > +int pmu_set_kbl(unsigned int);
> >  
> >  void pm_eject_pcmcia(int);
> >  void pmu_fileserver_mode(int);
> > Index: dev/hid/hidkbd.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/hid/hidkbd.c,v
> > retrieving revision 1.9
> > diff -u -p -r1.9 hidkbd.c
> > --- dev/hid/hidkbd.c        9 Jul 2023 08:02:13 -0000       1.9
> > +++ dev/hid/hidkbd.c        13 Jul 2023 21:17:42 -0000
> > @@ -143,6 +143,10 @@ static const struct hidkbd_translation a
> >     { 60, 127 },    /* F3 -> audio mute */
> >     { 61, 129 },    /* F4 -> audio lower */
> >     { 62, 128 },    /* F5 -> audio raise */
> > +   { 63, 83 },     /* F6 -> num lock */
> > +   { 65, 234 },    /* F8 -> backlight toggle*/
> > +   { 66, 236 },    /* F9 -> backlight lower */
> > +   { 67, 235 },    /* F10 -> backlight raise*/
> >  #else
> >     { 63, 102 },    /* F6 -> sleep */
> >     { 67, 127 },    /* F10 -> audio mute */
> > @@ -569,6 +573,9 @@ hidkbd_decode(struct hidkbd *kbd, struct
> >                     case 129:
> >                     case 232:
> >                     case 233:
> > +                   case 234:
> > +                   case 235:
> > +                   case 236:
> >                             wskbd_input(kbd->sc_wskbddev,
> >                                 key & RELEASE ?  WSCONS_EVENT_KEY_UP :
> >                                   WSCONS_EVENT_KEY_DOWN, key & CODEMASK);
> > Index: dev/usb/makemap.awk
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/usb/makemap.awk,v
> > retrieving revision 1.16
> > diff -u -p -r1.16 makemap.awk
> > --- dev/usb/makemap.awk     9 Jul 2023 08:02:13 -0000       1.16
> > +++ dev/usb/makemap.awk     13 Jul 2023 21:18:24 -0000
> > @@ -343,6 +343,9 @@ $1 == "#define" || $1 == "#undef" {
> >                     lines[126] = "    KC(126),\tKS_Find,"
> >                     lines[232] = "    KC(232),\tKS_Cmd_BrightnessUp,"
> >                     lines[233] = "    KC(233),\tKS_Cmd_BrightnessDown,"
> > +                   lines[234] = "    KC(234),\tKS_Cmd_KbdBacklightToggle,"
> > +                   lines[235] = "    KC(235),\tKS_Cmd_KbdBacklightDown,"
> > +                   lines[236] = "    KC(236),\tKS_Cmd_KbdBacklightUp,"
> >             }
> >  
> >             for (i = 0; i < 256; i++)
> > Index: dev/usb/ukbdmap.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/usb/ukbdmap.c,v
> > retrieving revision 1.48
> > diff -u -p -r1.48 ukbdmap.c
> > --- dev/usb/ukbdmap.c       9 Jul 2023 08:04:09 -0000       1.48
> > +++ dev/usb/ukbdmap.c       13 Jul 2023 21:18:38 -0000
> > @@ -187,6 +187,9 @@ static const keysym_t ukbd_keydesc_us[] 
> >      KC(231),       KS_Meta_R,
> >      KC(232),       KS_Cmd_BrightnessUp,
> >      KC(233),       KS_Cmd_BrightnessDown,
> > +           KC(234),        KS_Cmd_KbdBacklightToggle,
> > +           KC(235),        KS_Cmd_KbdBacklightUp,
> > +           KC(236),        KS_Cmd_KbdBacklightDown,
> >  };
> >  
> >  #if !defined(WSKBD_NO_INTL_LAYOUTS)
> > Index: dev/wscons/wskbd.c
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/wscons/wskbd.c,v
> > retrieving revision 1.115
> > diff -u -p -r1.115 wskbd.c
> > --- dev/wscons/wskbd.c      9 Jul 2023 08:02:14 -0000       1.115
> > +++ dev/wscons/wskbd.c      13 Jul 2023 21:19:54 -0000
> > @@ -1544,6 +1544,22 @@ internal_command(struct wskbd_softc *sc,
> >  #endif
> >  #endif
> >  
> > +   switch (ksym) {
> > +   case KS_Cmd_KbdBacklightToggle:
> > +   case KS_Cmd_KbdBacklightDown:
> > +   case KS_Cmd_KbdBacklightUp:{
> > +           struct wskbd_backlight data;
> > +           (*wskbd_get_backlight)(&data);
> > +           int step = (data.max - data.min + 1) / 8;
> > +           int val = (ksym == KS_Cmd_KbdBacklightUp) ? data.curval + step 
> > +                   : (ksym == KS_Cmd_KbdBacklightDown) ? data.curval - step
> > +                   : (data.curval) ? 0 : (data.max - data.min + 1) / 2;
> > +           data.curval = (val > 0xff) ? 0xff : (val < 0) ? 0 : val;
> > +           (*wskbd_set_backlight)(&data);
> > +           return (1);
> > +   }
> > +   }
> > +
> >  #if NWSDISPLAY > 0
> >     switch(ksym) {
> >     case KS_Cmd_BrightnessUp:
> > Index: dev/wscons/wsksymdef.h
> > ===================================================================
> > RCS file: /cvs/src/sys/dev/wscons/wsksymdef.h,v
> > retrieving revision 1.41
> > diff -u -p -r1.41 wsksymdef.h
> > --- dev/wscons/wsksymdef.h  9 Jul 2023 08:02:14 -0000       1.41
> > +++ dev/wscons/wsksymdef.h  13 Jul 2023 21:19:59 -0000
> > @@ -668,6 +676,9 @@
> >  #define KS_Cmd_ScrollFwd   0xf42d
> >  #define KS_Cmd_KbdReset            0xf42e
> >  #define KS_Cmd_Sleep               0xf42f
> > +#define KS_Cmd_KbdBacklightToggle          0xf430
> > +#define KS_Cmd_KbdBacklightUp              0xf431
> > +#define KS_Cmd_KbdBacklightDown            0xf432
> >  
> >  /*
> >   * Group 5 (internal)
> > 
> 

Reply via email to