[PATCH weston v3] compositor: add a way to change the keyboard locks

Pekka Paalanen ppaalanen at gmail.com
Thu Aug 28 04:23:38 PDT 2014


On Thu, 28 Aug 2014 12:12:59 +0300
Pekka Paalanen <ppaalanen at gmail.com> wrote:

> On Fri, 22 Aug 2014 13:22:27 +0300
> Giulio Camuffo <giuliocamuffo at gmail.com> wrote:
> 
> > This adds a function weston_keyboard_set_locks() which can be used to
> > change the state of the num lock and the caps locks, changing the leds too.
> > Only the evdev and libinput backends supports this, since it doesn't make
> > sense for embedded sessions.
> > ---
> > 
> > v3: forgot semicolon
> > 
> >  src/compositor.h | 10 ++++++++++
> >  src/input.c      | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 65 insertions(+)
> > 
> > diff --git a/src/compositor.h b/src/compositor.h
> > index c0fc0a6..d80b05e 100644
> > --- a/src/compositor.h
> > +++ b/src/compositor.h
> > @@ -68,6 +68,12 @@ enum weston_keyboard_modifier {
> >  	MODIFIER_SHIFT = (1 << 3),
> >  };
> >  
> > +enum weston_keyboard_locks {
> > +	NUM_LOCK = (1 << 0),
> > +	CAPS_LOCK = (1 << 1),
> > +	SCROLL_LOCK = (1 << 2),
> > +};
> 
> Hmm, this is compositor.h which is exported/installed and used by third
> party things, so I think these should have a prefix to avoid name
> clashes.

I noticed only later, that there is also other stuff unprefixed. I
wouldn't change the existing things now, but adding prefixes to them
too later would be nice IMHO.

So, at least not a blocker this one.

> > +
> >  enum weston_led {
> >  	LED_NUM_LOCK = (1 << 0),
> >  	LED_CAPS_LOCK = (1 << 1),
> > @@ -393,6 +399,10 @@ weston_keyboard_start_grab(struct weston_keyboard *device,
> >  			   struct weston_keyboard_grab *grab);
> >  void
> >  weston_keyboard_end_grab(struct weston_keyboard *keyboard);
> > +int
> > +weston_keyboard_set_locks(struct weston_keyboard *keyboard,
> > +			  enum weston_keyboard_locks maks,
> 
> Typo 'maks'.
> 
> > +			  enum weston_keyboard_locks value);
> 
> Is this to be used only with a single lock at a time?
> If you meant one can 'or' together several locks, you shouldn't use enum
> type in the function arguments but uint32_t + documentation.
> 
> >  
> >  struct weston_touch *
> >  weston_touch_create(void);
> > diff --git a/src/input.c b/src/input.c
> > index 975cd77..195deb3 100644
> > --- a/src/input.c
> > +++ b/src/input.c
> > @@ -1062,6 +1062,61 @@ notify_axis(struct weston_seat *seat, uint32_t time, uint32_t axis,
> >  				     value);
> >  }
> >  
> > +WL_EXPORT int
> > +weston_keyboard_set_locks(struct weston_keyboard *keyboard,
> > +			  enum weston_keyboard_locks mask,
> > +			  enum weston_keyboard_locks value)
> > +{
> > +#ifdef ENABLE_XKBCOMMON
> > +	uint32_t mods_depressed, mods_latched, mods_locked, group;
> > +	uint32_t serial;
> > +	int num, caps;
> 
> Shouldn't these be uint32_t too?

Ah, Daniel says all these should be xkb_mod_mask_t, actually.


Thanks,
pq


More information about the wayland-devel mailing list