[PATCH 4/5] xkb: Repurpose XkbCopyDeviceKeymap to apply a given keymap to a device

Peter Hutterer peter.hutterer at who-t.net
Tue Mar 11 23:43:16 PDT 2014


On Fri, Mar 07, 2014 at 02:32:27PM -0800, Kristian Høgsberg wrote:
> From: Rui Matos <tiagomatos at gmail.com>
> 
> This will also make it useful for cases when we have a new keymap to
> apply to a device but don't have a source device.
> 
> Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>

merged, thanks.

Cheers,
   Peter

> ---
>  Xi/exevents.c    |  2 +-
>  include/xkbsrv.h |  4 ++--
>  xkb/xkb.c        |  2 +-
>  xkb/xkbUtils.c   | 14 +++++++-------
>  4 files changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/Xi/exevents.c b/Xi/exevents.c
> index e9f670e..9c207eb 100644
> --- a/Xi/exevents.c
> +++ b/Xi/exevents.c
> @@ -230,7 +230,7 @@ CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master)
>  
>      mk->sourceid = device->id;
>  
> -    if (!XkbCopyDeviceKeymap(master, device))
> +    if (!XkbDeviceApplyKeymap(master, device->key->xkbInfo->desc))
>          FatalError("Couldn't pivot keymap from device to core!\n");
>  }
>  
> diff --git a/include/xkbsrv.h b/include/xkbsrv.h
> index 253612e..5d8e409 100644
> --- a/include/xkbsrv.h
> +++ b/include/xkbsrv.h
> @@ -820,8 +820,8 @@ extern _X_EXPORT void XkbSendNewKeyboardNotify(DeviceIntPtr /* kbd */ ,
>  extern Bool XkbCopyKeymap(XkbDescPtr /* dst */ ,
>                            XkbDescPtr /* src */ );
>  
> -extern _X_EXPORT Bool XkbCopyDeviceKeymap(DeviceIntPtr /* dst */ ,
> -                                          DeviceIntPtr /* src */ );
> +extern _X_EXPORT Bool XkbDeviceApplyKeymap(DeviceIntPtr /* dst */ ,
> +                                           XkbDescPtr /* src */ );
>  
>  extern void XkbFilterEvents(ClientPtr /* pClient */ ,
>                              int /* nEvents */ ,
> diff --git a/xkb/xkb.c b/xkb/xkb.c
> index 31bb8d3..6196a17 100644
> --- a/xkb/xkb.c
> +++ b/xkb/xkb.c
> @@ -5991,7 +5991,7 @@ ProcXkbGetKbdByName(ClientPtr client)
>                  continue;
>  
>              if (tmpd != dev)
> -                XkbCopyDeviceKeymap(tmpd, dev);
> +                XkbDeviceApplyKeymap(tmpd, xkb);
>  
>              if (tmpd->kbdfeed && tmpd->kbdfeed->xkb_sli) {
>                  old_sli = tmpd->kbdfeed->xkb_sli;
> diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
> index 6c6af60..1f8a839 100644
> --- a/xkb/xkbUtils.c
> +++ b/xkb/xkbUtils.c
> @@ -1999,28 +1999,28 @@ XkbCopyKeymap(XkbDescPtr dst, XkbDescPtr src)
>  }
>  
>  Bool
> -XkbCopyDeviceKeymap(DeviceIntPtr dst, DeviceIntPtr src)
> +XkbDeviceApplyKeymap(DeviceIntPtr dst, XkbDescPtr desc)
>  {
>      xkbNewKeyboardNotify nkn;
>      Bool ret;
>  
> -    if (!dst->key || !src->key)
> +    if (!dst->key || !desc)
>          return FALSE;
>  
>      memset(&nkn, 0, sizeof(xkbNewKeyboardNotify));
>      nkn.oldMinKeyCode = dst->key->xkbInfo->desc->min_key_code;
>      nkn.oldMaxKeyCode = dst->key->xkbInfo->desc->max_key_code;
>      nkn.deviceID = dst->id;
> -    nkn.oldDeviceID = dst->id;  /* maybe src->id? */
> -    nkn.minKeyCode = src->key->xkbInfo->desc->min_key_code;
> -    nkn.maxKeyCode = src->key->xkbInfo->desc->max_key_code;
> +    nkn.oldDeviceID = dst->id;
> +    nkn.minKeyCode = desc->min_key_code;
> +    nkn.maxKeyCode = desc->max_key_code;
>      nkn.requestMajor = XkbReqCode;
>      nkn.requestMinor = X_kbSetMap;      /* Near enough's good enough. */
>      nkn.changed = XkbNKN_KeycodesMask;
> -    if (src->key->xkbInfo->desc->geom)
> +    if (desc->geom)
>          nkn.changed |= XkbNKN_GeometryMask;
>  
> -    ret = XkbCopyKeymap(dst->key->xkbInfo->desc, src->key->xkbInfo->desc);
> +    ret = XkbCopyKeymap(dst->key->xkbInfo->desc, desc);
>      if (ret)
>          XkbSendNewKeyboardNotify(dst, &nkn);
>  
> -- 
> 1.9.0
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list