Drop valuator mask argument from GetKeyboardEvents

Submitted by Peter Hutterer on Dec. 16, 2014, 4:43 a.m.

Details

Message ID 20141216044329.GA9056@jelly.redhat.com
State Accepted
Commit f485a1af64bb00c696ea9f79961786bd791eaec1
Headers show

Not browsing as part of any series.

Commit Message

Peter Hutterer Dec. 16, 2014, 4:43 a.m.
Nothing was using it and if anyone had they would've gotten a warning and
noticed that it doesn't actually work. Drop this, it has been unused for years.

Input ABI 22

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
---
Jeremy, Jon, can you please build-test this? thanks


 Xext/xtest.c                   |  2 +-
 dix/devices.c                  |  2 +-
 dix/getevents.c                | 40 +++++-----------------------------------
 hw/dmx/input/dmxevents.c       |  7 ++-----
 hw/kdrive/src/kinput.c         |  2 +-
 hw/xfree86/common/xf86Events.c |  2 +-
 hw/xfree86/common/xf86Module.h |  2 +-
 hw/xfree86/common/xf86Xinput.c | 41 +++++++----------------------------------
 hw/xfree86/common/xf86Xinput.h | 13 +++----------
 hw/xnest/Events.c              |  2 +-
 hw/xquartz/darwinEvents.c      |  6 ++----
 hw/xwayland/xwayland-input.c   | 12 +++---------
 hw/xwin/winkeybd.c             |  2 +-
 include/input.h                |  5 ++---
 14 files changed, 31 insertions(+), 107 deletions(-)

Patch hide | download patch | download mbox

diff --git a/Xext/xtest.c b/Xext/xtest.c
index 88df443..2371a69 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -421,7 +421,7 @@  ProcXTestFakeInput(ClientPtr client)
     case KeyPress:
     case KeyRelease:
         nevents =
-            GetKeyboardEvents(xtest_evlist, dev, type, ev->u.u.detail, NULL);
+            GetKeyboardEvents(xtest_evlist, dev, type, ev->u.u.detail);
         break;
     }
 
diff --git a/dix/devices.c b/dix/devices.c
index c4fdbe1..d8e7f9c 100644
--- a/dix/devices.c
+++ b/dix/devices.c
@@ -2518,7 +2518,7 @@  ReleaseButtonsAndKeys(DeviceIntPtr dev)
     /* Release all keys */
     for (i = 0; k && i < MAP_LENGTH; i++) {
         if (BitIsOn(k->down, i)) {
-            nevents = GetKeyboardEvents(eventlist, dev, KeyRelease, i, NULL);
+            nevents = GetKeyboardEvents(eventlist, dev, KeyRelease, i);
             for (j = 0; j < nevents; j++)
                 mieqProcessDeviceEvent(dev, &eventlist[j], NULL);
         }
diff --git a/dix/getevents.c b/dix/getevents.c
index 6684ddc..6e3dc06 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1054,21 +1054,18 @@  event_set_root_coordinates(DeviceEvent *event, double x, double y)
  *
  * This function is not reentrant. Disable signals before calling.
  *
- * FIXME: flags for relative/abs motion?
- *
  * @param device The device to generate the event for
  * @param type Event type, one of KeyPress or KeyRelease
  * @param keycode Key code of the pressed/released key
- * @param mask Valuator mask for valuators present for this event.
  *
  */
 void
 QueueKeyboardEvents(DeviceIntPtr device, int type,
-                    int keycode, const ValuatorMask *mask)
+                    int keycode)
 {
     int nevents;
 
-    nevents = GetKeyboardEvents(InputEventList, device, type, keycode, mask);
+    nevents = GetKeyboardEvents(InputEventList, device, type, keycode);
     queueEventList(device, InputEventList, nevents);
 }
 
@@ -1083,20 +1080,17 @@  QueueKeyboardEvents(DeviceIntPtr device, int type,
  */
 int
 GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
-                  int key_code, const ValuatorMask *mask_in)
+                  int key_code)
 {
     int num_events = 0;
     CARD32 ms = 0;
     DeviceEvent *event;
     RawDeviceEvent *raw;
-    ValuatorMask mask;
 
 #if XSERVER_DTRACE
     if (XSERVER_INPUT_EVENT_ENABLED()) {
-        XSERVER_INPUT_EVENT(pDev->id, type, key_code, 0,
-                            mask_in ? mask_in->last_bit + 1 : 0,
-                            mask_in ? mask_in->mask : NULL,
-                            mask_in ? mask_in->valuators : NULL);
+        XSERVER_INPUT_EVENT(pDev->id, type, key_code, 0, 0,
+                            NULL, NULL);
     }
 #endif
 
@@ -1109,11 +1103,6 @@  GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
         (key_code < 8 || key_code > 255))
         return 0;
 
-    if (mask_in && valuator_mask_size(mask_in) > 1) {
-        ErrorF("[dix] the server does not handle valuator masks with "
-               "keyboard events. This is a bug. You may fix it.\n");
-    }
-
     num_events = 1;
 
     events =
@@ -1135,14 +1124,7 @@  GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
     events++;
     num_events++;
 
-    valuator_mask_copy(&mask, mask_in);
-
     init_raw(pDev, raw, ms, type, key_code);
-    set_raw_valuators(raw, &mask, raw->valuators.data_raw);
-
-    clipValuators(pDev, &mask);
-
-    set_raw_valuators(raw, &mask, raw->valuators.data);
 
     event = &events->device_event;
     init_device_event(event, pDev, ms);
@@ -1157,18 +1139,6 @@  GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
         set_key_up(pDev, key_code, KEY_POSTED);
     }
 
-    clipValuators(pDev, &mask);
-
-    set_valuators(pDev, event, &mask);
-
-    if (!IsFloating(pDev)) {
-        DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
-
-        event_set_root_coordinates(event,
-                                   master->last.valuators[0],
-                                   master->last.valuators[1]);
-    }
-
     return num_events;
 }
 
diff --git a/hw/dmx/input/dmxevents.c b/hw/dmx/input/dmxevents.c
index 14ac05f..2b579ee 100644
--- a/hw/dmx/input/dmxevents.c
+++ b/hw/dmx/input/dmxevents.c
@@ -488,12 +488,9 @@  dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
     switch (type) {
     case XI_DeviceKeyPress:
     case XI_DeviceKeyRelease:
-        EXTRACT_VALUATORS(ke, valuators);
-        valuator_mask_set_range(&mask, ke->first_axis, ke->axes_count,
-                                valuators);
         if (block)
             OsBlockSIGIO();
-        QueueKeyboardEvents(pDevice, event, ke->keycode, &mask);
+        QueueKeyboardEvents(pDevice, event, ke->keycode);
         if (block)
             OsReleaseSIGIO();
         break;
@@ -718,7 +715,7 @@  dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
             detail = dmxFixup(pDev, detail, keySym);
 
         /*ErrorF("KEY %d  sym %d\n", detail, (int) keySym); */
-        QueueKeyboardEvents(p, type, detail, NULL);
+        QueueKeyboardEvents(p, type, detail);
         return;
 
     case ButtonPress:
diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
index a539ca5..057f53b 100644
--- a/hw/kdrive/src/kinput.c
+++ b/hw/kdrive/src/kinput.c
@@ -1831,7 +1831,7 @@  KdEnqueueKeyboardEvent(KdKeyboardInfo * ki,
         else
             type = KeyPress;
 
-        QueueKeyboardEvents(ki->dixdev, type, key_code, NULL);
+        QueueKeyboardEvents(ki->dixdev, type, key_code);
     }
     else {
         ErrorF("driver %s wanted to post scancode %d outside of [%d, %d]!\n",
diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
index 16b3e28..c06aaae 100644
--- a/hw/xfree86/common/xf86Events.c
+++ b/hw/xfree86/common/xf86Events.c
@@ -403,7 +403,7 @@  xf86ReleaseKeys(DeviceIntPtr pDev)
          i < keyc->xkbInfo->desc->max_key_code; i++) {
         if (key_is_down(pDev, i, KEY_POSTED)) {
             OsBlockSIGIO();
-            QueueKeyboardEvents(pDev, KeyRelease, i, NULL);
+            QueueKeyboardEvents(pDev, KeyRelease, i);
             OsReleaseSIGIO();
         }
     }
diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
index e68fe9c..25a8869 100644
--- a/hw/xfree86/common/xf86Module.h
+++ b/hw/xfree86/common/xf86Module.h
@@ -81,7 +81,7 @@  typedef enum {
  */
 #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
 #define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(19, 0)
-#define ABI_XINPUT_VERSION	SET_ABI_VERSION(21, 0)
+#define ABI_XINPUT_VERSION	SET_ABI_VERSION(22, 0)
 #define ABI_EXTENSION_VERSION	SET_ABI_VERSION(9, 0)
 #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
 
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index 1fb5b16..9fa3dc4 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1326,47 +1326,21 @@  xf86PostButtonEventM(DeviceIntPtr device,
 }
 
 void
-xf86PostKeyEvent(DeviceIntPtr device,
-                 unsigned int key_code,
-                 int is_down,
-                 int is_absolute, int first_valuator, int num_valuators, ...)
+xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down)
 {
-    va_list var;
-    int i = 0;
-    ValuatorMask mask;
-
-    XI_VERIFY_VALUATORS(num_valuators);
-
-    valuator_mask_zero(&mask);
-
-    va_start(var, num_valuators);
-    for (i = 0; i < num_valuators; i++)
-        valuator_mask_set(&mask, first_valuator + i, va_arg(var, int));
-
-    va_end(var);
-
-    xf86PostKeyEventM(device, key_code, is_down, is_absolute, &mask);
+    xf86PostKeyEventM(device, key_code, is_down);
 }
 
 void
 xf86PostKeyEventP(DeviceIntPtr device,
                   unsigned int key_code,
-                  int is_down,
-                  int is_absolute,
-                  int first_valuator, int num_valuators, const int *valuators)
+                  int is_down)
 {
-    ValuatorMask mask;
-
-    XI_VERIFY_VALUATORS(num_valuators);
-
-    valuator_mask_set_range(&mask, first_valuator, num_valuators, valuators);
-    xf86PostKeyEventM(device, key_code, is_down, is_absolute, &mask);
+    xf86PostKeyEventM(device, key_code, is_down);
 }
 
 void
-xf86PostKeyEventM(DeviceIntPtr device,
-                  unsigned int key_code,
-                  int is_down, int is_absolute, const ValuatorMask *mask)
+xf86PostKeyEventM(DeviceIntPtr device, unsigned int key_code, int is_down)
 {
 #if XFreeXDGA
     DeviceIntPtr pointer;
@@ -1382,8 +1356,7 @@  xf86PostKeyEventM(DeviceIntPtr device,
     }
 #endif
 
-    QueueKeyboardEvents(device,
-                        is_down ? KeyPress : KeyRelease, key_code, mask);
+    QueueKeyboardEvents(device, is_down ? KeyPress : KeyRelease, key_code);
 }
 
 void
@@ -1392,7 +1365,7 @@  xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code, int is_down)
     ValuatorMask mask;
 
     valuator_mask_zero(&mask);
-    xf86PostKeyEventM(device, key_code, is_down, 0, &mask);
+    xf86PostKeyEventM(device, key_code, is_down);
 }
 
 InputInfoPtr
diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
index 42d66d2..0024053 100644
--- a/hw/xfree86/common/xf86Xinput.h
+++ b/hw/xfree86/common/xf86Xinput.h
@@ -148,18 +148,11 @@  extern _X_EXPORT void xf86PostButtonEventM(DeviceIntPtr device, int is_absolute,
                                            int button, int is_down,
                                            const ValuatorMask *mask);
 extern _X_EXPORT void xf86PostKeyEvent(DeviceIntPtr device,
-                                       unsigned int key_code, int is_down,
-                                       int is_absolute, int first_valuator,
-                                       int num_valuators, ...);
+                                       unsigned int key_code, int is_down);
 extern _X_EXPORT void xf86PostKeyEventM(DeviceIntPtr device,
-                                        unsigned int key_code, int is_down,
-                                        int is_absolute,
-                                        const ValuatorMask *mask);
+                                        unsigned int key_code, int is_down);
 extern _X_EXPORT void xf86PostKeyEventP(DeviceIntPtr device,
-                                        unsigned int key_code, int is_down,
-                                        int is_absolute, int first_valuator,
-                                        int num_valuators,
-                                        const int *valuators);
+                                        unsigned int key_code, int is_down);
 extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device,
                                             unsigned int key_code, int is_down);
 extern _X_EXPORT void xf86PostTouchEvent(DeviceIntPtr dev, uint32_t touchid,
diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
index 3ff095b..f727557 100644
--- a/hw/xnest/Events.c
+++ b/hw/xnest/Events.c
@@ -103,7 +103,7 @@  void
 xnestQueueKeyEvent(int type, unsigned int keycode)
 {
     lastEventTime = GetTimeInMillis();
-    QueueKeyboardEvents(xnestKeyboardDevice, type, keycode, NULL);
+    QueueKeyboardEvents(xnestKeyboardDevice, type, keycode);
 }
 
 void
diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
index 5a5e4da..9bf2f14 100644
--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -456,8 +456,7 @@  DarwinInputReleaseButtonsAndKeys(DeviceIntPtr pDev)
         if (pDev->key) {
             for (i = 0; i < NUM_KEYCODES; i++) {
                 if (BitIsOn(pDev->key->down, i + MIN_KEYCODE)) {
-                    QueueKeyboardEvents(pDev, KeyRelease, i + MIN_KEYCODE,
-                                        NULL);
+                    QueueKeyboardEvents(pDev, KeyRelease, i + MIN_KEYCODE);
                 }
             }
         }
@@ -611,8 +610,7 @@  DarwinSendKeyboardEvents(int ev_type, int keycode)
 
     darwinEvents_lock();
     {
-        QueueKeyboardEvents(darwinKeyboard, ev_type, keycode + MIN_KEYCODE,
-                            NULL);
+        QueueKeyboardEvents(darwinKeyboard, ev_type, keycode + MIN_KEYCODE);
         DarwinPokeEQ();
     } darwinEvents_unlock();
 }
diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
index b8c543c..68826ff 100644
--- a/hw/xwayland/xwayland-input.c
+++ b/hw/xwayland/xwayland-input.c
@@ -318,7 +318,6 @@  keyboard_handle_key(void *data, struct wl_keyboard *keyboard, uint32_t serial,
 {
     struct xwl_seat *xwl_seat = data;
     uint32_t *k, *end;
-    ValuatorMask mask;
 
     xwl_seat->xwl_screen->serial = serial;
 
@@ -333,9 +332,8 @@  keyboard_handle_key(void *data, struct wl_keyboard *keyboard, uint32_t serial,
         *k = key;
     }
 
-    valuator_mask_zero(&mask);
     QueueKeyboardEvents(xwl_seat->keyboard,
-                        state ? KeyPress : KeyRelease, key + 8, &mask);
+                        state ? KeyPress : KeyRelease, key + 8);
 }
 
 static void
@@ -388,16 +386,14 @@  keyboard_handle_enter(void *data, struct wl_keyboard *keyboard,
                       struct wl_surface *surface, struct wl_array *keys)
 {
     struct xwl_seat *xwl_seat = data;
-    ValuatorMask mask;
     uint32_t *k;
 
     xwl_seat->xwl_screen->serial = serial;
     xwl_seat->keyboard_focus = surface;
 
     wl_array_copy(&xwl_seat->keys, keys);
-    valuator_mask_zero(&mask);
     wl_array_for_each(k, &xwl_seat->keys)
-        QueueKeyboardEvents(xwl_seat->keyboard, KeyPress, *k + 8, &mask);
+        QueueKeyboardEvents(xwl_seat->keyboard, KeyPress, *k + 8);
 }
 
 static void
@@ -405,14 +401,12 @@  keyboard_handle_leave(void *data, struct wl_keyboard *keyboard,
                       uint32_t serial, struct wl_surface *surface)
 {
     struct xwl_seat *xwl_seat = data;
-    ValuatorMask mask;
     uint32_t *k;
 
     xwl_seat->xwl_screen->serial = serial;
 
-    valuator_mask_zero(&mask);
     wl_array_for_each(k, &xwl_seat->keys)
-        QueueKeyboardEvents(xwl_seat->keyboard, KeyRelease, *k + 8, &mask);
+        QueueKeyboardEvents(xwl_seat->keyboard, KeyRelease, *k + 8);
 
     xwl_seat->keyboard_focus = NULL;
 }
diff --git a/hw/xwin/winkeybd.c b/hw/xwin/winkeybd.c
index 3a75ab2..e7202a6 100644
--- a/hw/xwin/winkeybd.c
+++ b/hw/xwin/winkeybd.c
@@ -502,7 +502,7 @@  winSendKeyEvent(DWORD dwKey, Bool fDown)
     g_winKeyState[dwKey] = fDown;
 
     QueueKeyboardEvents(g_pwinKeyboard, fDown ? KeyPress : KeyRelease,
-                        dwKey + MIN_KEYCODE, NULL);
+                        dwKey + MIN_KEYCODE);
 
     winDebug("winSendKeyEvent: dwKey: %d, fDown: %d\n", dwKey, fDown);
 }
diff --git a/include/input.h b/include/input.h
index bf22dc7..cb83cac 100644
--- a/include/input.h
+++ b/include/input.h
@@ -448,12 +448,11 @@  extern _X_EXPORT void QueuePointerEvents(DeviceIntPtr pDev,
 extern _X_EXPORT int GetKeyboardEvents(InternalEvent *events,
                                        DeviceIntPtr pDev,
                                        int type,
-                                       int key_code, const ValuatorMask *mask);
+                                       int key_code);
 
 extern _X_EXPORT void QueueKeyboardEvents(DeviceIntPtr pDev,
                                           int type,
-                                          int key_code,
-                                          const ValuatorMask *mask);
+                                          int key_code);
 
 extern int GetTouchEvents(InternalEvent *events,
                           DeviceIntPtr pDev,

Comments

Hi,

On 16 December 2014 at 04:43, Peter Hutterer <peter.hutterer@who-t.net>
wrote:
>
> @@ -1157,18 +1139,6 @@ GetKeyboardEvents(InternalEvent *events,
> DeviceIntPtr pDev, int type,
>          set_key_up(pDev, key_code, KEY_POSTED);
>      }
>
> -    clipValuators(pDev, &mask);
> -
> -    set_valuators(pDev, event, &mask);
> -
> -    if (!IsFloating(pDev)) {
> -        DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
> -
> -        event_set_root_coordinates(event,
> -                                   master->last.valuators[0],
> -                                   master->last.valuators[1]);
> -    }
> -
>      return num_events;
>  }
>

Are you sure this is right? Won't this change it from returning root_[xy]
with current MD pointer co-ordinates to nothing/rubbish?


> diff --git a/hw/xfree86/common/xf86Module.h
> b/hw/xfree86/common/xf86Module.h
> index e68fe9c..25a8869 100644
> --- a/hw/xfree86/common/xf86Module.h
> +++ b/hw/xfree86/common/xf86Module.h
> @@ -81,7 +81,7 @@ typedef enum {
>   */
>  #define ABI_ANSIC_VERSION      SET_ABI_VERSION(0, 4)
>  #define ABI_VIDEODRV_VERSION   SET_ABI_VERSION(19, 0)
> -#define ABI_XINPUT_VERSION     SET_ABI_VERSION(21, 0)
> +#define ABI_XINPUT_VERSION     SET_ABI_VERSION(22, 0)
>  #define ABI_EXTENSION_VERSION  SET_ABI_VERSION(9, 0)
>  #define ABI_FONT_VERSION       SET_ABI_VERSION(0, 6)
>
> diff --git a/hw/xfree86/common/xf86Xinput.c
> b/hw/xfree86/common/xf86Xinput.c
> index 1fb5b16..9fa3dc4 100644
> --- a/hw/xfree86/common/xf86Xinput.c
> +++ b/hw/xfree86/common/xf86Xinput.c
> @@ -1326,47 +1326,21 @@ xf86PostButtonEventM(DeviceIntPtr device,
>  }
>
>  void
> -xf86PostKeyEvent(DeviceIntPtr device,
> -                 unsigned int key_code,
> -                 int is_down,
> -                 int is_absolute, int first_valuator, int num_valuators,
> ...)
> +xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down)


I'd probably lean towards leaving the xf86 wrappers alone (with a BUG_ON if
you must); not sure the annoyance of an ABI break to essentially preserve
the status quo is worth it tbh.

Cheers,
Daniel
I should be able to take a look over the winter break next week.

--Jeremy

> On Dec 15, 2014, at 20:43, Peter Hutterer <peter.hutterer@who-t.net> wrote:
> 
> Nothing was using it and if anyone had they would've gotten a warning and
> noticed that it doesn't actually work. Drop this, it has been unused for years.
> 
> Input ABI 22
> 
> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
> ---
> Jeremy, Jon, can you please build-test this? thanks
> 
> 
> Xext/xtest.c                   |  2 +-
> dix/devices.c                  |  2 +-
> dix/getevents.c                | 40 +++++-----------------------------------
> hw/dmx/input/dmxevents.c       |  7 ++-----
> hw/kdrive/src/kinput.c         |  2 +-
> hw/xfree86/common/xf86Events.c |  2 +-
> hw/xfree86/common/xf86Module.h |  2 +-
> hw/xfree86/common/xf86Xinput.c | 41 +++++++----------------------------------
> hw/xfree86/common/xf86Xinput.h | 13 +++----------
> hw/xnest/Events.c              |  2 +-
> hw/xquartz/darwinEvents.c      |  6 ++----
> hw/xwayland/xwayland-input.c   | 12 +++---------
> hw/xwin/winkeybd.c             |  2 +-
> include/input.h                |  5 ++---
> 14 files changed, 31 insertions(+), 107 deletions(-)
> 
> diff --git a/Xext/xtest.c b/Xext/xtest.c
> index 88df443..2371a69 100644
> --- a/Xext/xtest.c
> +++ b/Xext/xtest.c
> @@ -421,7 +421,7 @@ ProcXTestFakeInput(ClientPtr client)
>     case KeyPress:
>     case KeyRelease:
>         nevents =
> -            GetKeyboardEvents(xtest_evlist, dev, type, ev->u.u.detail, NULL);
> +            GetKeyboardEvents(xtest_evlist, dev, type, ev->u.u.detail);
>         break;
>     }
> 
> diff --git a/dix/devices.c b/dix/devices.c
> index c4fdbe1..d8e7f9c 100644
> --- a/dix/devices.c
> +++ b/dix/devices.c
> @@ -2518,7 +2518,7 @@ ReleaseButtonsAndKeys(DeviceIntPtr dev)
>     /* Release all keys */
>     for (i = 0; k && i < MAP_LENGTH; i++) {
>         if (BitIsOn(k->down, i)) {
> -            nevents = GetKeyboardEvents(eventlist, dev, KeyRelease, i, NULL);
> +            nevents = GetKeyboardEvents(eventlist, dev, KeyRelease, i);
>             for (j = 0; j < nevents; j++)
>                 mieqProcessDeviceEvent(dev, &eventlist[j], NULL);
>         }
> diff --git a/dix/getevents.c b/dix/getevents.c
> index 6684ddc..6e3dc06 100644
> --- a/dix/getevents.c
> +++ b/dix/getevents.c
> @@ -1054,21 +1054,18 @@ event_set_root_coordinates(DeviceEvent *event, double x, double y)
>  *
>  * This function is not reentrant. Disable signals before calling.
>  *
> - * FIXME: flags for relative/abs motion?
> - *
>  * @param device The device to generate the event for
>  * @param type Event type, one of KeyPress or KeyRelease
>  * @param keycode Key code of the pressed/released key
> - * @param mask Valuator mask for valuators present for this event.
>  *
>  */
> void
> QueueKeyboardEvents(DeviceIntPtr device, int type,
> -                    int keycode, const ValuatorMask *mask)
> +                    int keycode)
> {
>     int nevents;
> 
> -    nevents = GetKeyboardEvents(InputEventList, device, type, keycode, mask);
> +    nevents = GetKeyboardEvents(InputEventList, device, type, keycode);
>     queueEventList(device, InputEventList, nevents);
> }
> 
> @@ -1083,20 +1080,17 @@ QueueKeyboardEvents(DeviceIntPtr device, int type,
>  */
> int
> GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
> -                  int key_code, const ValuatorMask *mask_in)
> +                  int key_code)
> {
>     int num_events = 0;
>     CARD32 ms = 0;
>     DeviceEvent *event;
>     RawDeviceEvent *raw;
> -    ValuatorMask mask;
> 
> #if XSERVER_DTRACE
>     if (XSERVER_INPUT_EVENT_ENABLED()) {
> -        XSERVER_INPUT_EVENT(pDev->id, type, key_code, 0,
> -                            mask_in ? mask_in->last_bit + 1 : 0,
> -                            mask_in ? mask_in->mask : NULL,
> -                            mask_in ? mask_in->valuators : NULL);
> +        XSERVER_INPUT_EVENT(pDev->id, type, key_code, 0, 0,
> +                            NULL, NULL);
>     }
> #endif
> 
> @@ -1109,11 +1103,6 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
>         (key_code < 8 || key_code > 255))
>         return 0;
> 
> -    if (mask_in && valuator_mask_size(mask_in) > 1) {
> -        ErrorF("[dix] the server does not handle valuator masks with "
> -               "keyboard events. This is a bug. You may fix it.\n");
> -    }
> -
>     num_events = 1;
> 
>     events =
> @@ -1135,14 +1124,7 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
>     events++;
>     num_events++;
> 
> -    valuator_mask_copy(&mask, mask_in);
> -
>     init_raw(pDev, raw, ms, type, key_code);
> -    set_raw_valuators(raw, &mask, raw->valuators.data_raw);
> -
> -    clipValuators(pDev, &mask);
> -
> -    set_raw_valuators(raw, &mask, raw->valuators.data);
> 
>     event = &events->device_event;
>     init_device_event(event, pDev, ms);
> @@ -1157,18 +1139,6 @@ GetKeyboardEvents(InternalEvent *events, DeviceIntPtr pDev, int type,
>         set_key_up(pDev, key_code, KEY_POSTED);
>     }
> 
> -    clipValuators(pDev, &mask);
> -
> -    set_valuators(pDev, event, &mask);
> -
> -    if (!IsFloating(pDev)) {
> -        DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
> -
> -        event_set_root_coordinates(event,
> -                                   master->last.valuators[0],
> -                                   master->last.valuators[1]);
> -    }
> -
>     return num_events;
> }
> 
> diff --git a/hw/dmx/input/dmxevents.c b/hw/dmx/input/dmxevents.c
> index 14ac05f..2b579ee 100644
> --- a/hw/dmx/input/dmxevents.c
> +++ b/hw/dmx/input/dmxevents.c
> @@ -488,12 +488,9 @@ dmxTranslateAndEnqueueExtEvent(DMXLocalInputInfoPtr dmxLocal,
>     switch (type) {
>     case XI_DeviceKeyPress:
>     case XI_DeviceKeyRelease:
> -        EXTRACT_VALUATORS(ke, valuators);
> -        valuator_mask_set_range(&mask, ke->first_axis, ke->axes_count,
> -                                valuators);
>         if (block)
>             OsBlockSIGIO();
> -        QueueKeyboardEvents(pDevice, event, ke->keycode, &mask);
> +        QueueKeyboardEvents(pDevice, event, ke->keycode);
>         if (block)
>             OsReleaseSIGIO();
>         break;
> @@ -718,7 +715,7 @@ dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
>             detail = dmxFixup(pDev, detail, keySym);
> 
>         /*ErrorF("KEY %d  sym %d\n", detail, (int) keySym); */
> -        QueueKeyboardEvents(p, type, detail, NULL);
> +        QueueKeyboardEvents(p, type, detail);
>         return;
> 
>     case ButtonPress:
> diff --git a/hw/kdrive/src/kinput.c b/hw/kdrive/src/kinput.c
> index a539ca5..057f53b 100644
> --- a/hw/kdrive/src/kinput.c
> +++ b/hw/kdrive/src/kinput.c
> @@ -1831,7 +1831,7 @@ KdEnqueueKeyboardEvent(KdKeyboardInfo * ki,
>         else
>             type = KeyPress;
> 
> -        QueueKeyboardEvents(ki->dixdev, type, key_code, NULL);
> +        QueueKeyboardEvents(ki->dixdev, type, key_code);
>     }
>     else {
>         ErrorF("driver %s wanted to post scancode %d outside of [%d, %d]!\n",
> diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
> index 16b3e28..c06aaae 100644
> --- a/hw/xfree86/common/xf86Events.c
> +++ b/hw/xfree86/common/xf86Events.c
> @@ -403,7 +403,7 @@ xf86ReleaseKeys(DeviceIntPtr pDev)
>          i < keyc->xkbInfo->desc->max_key_code; i++) {
>         if (key_is_down(pDev, i, KEY_POSTED)) {
>             OsBlockSIGIO();
> -            QueueKeyboardEvents(pDev, KeyRelease, i, NULL);
> +            QueueKeyboardEvents(pDev, KeyRelease, i);
>             OsReleaseSIGIO();
>         }
>     }
> diff --git a/hw/xfree86/common/xf86Module.h b/hw/xfree86/common/xf86Module.h
> index e68fe9c..25a8869 100644
> --- a/hw/xfree86/common/xf86Module.h
> +++ b/hw/xfree86/common/xf86Module.h
> @@ -81,7 +81,7 @@ typedef enum {
>  */
> #define ABI_ANSIC_VERSION	SET_ABI_VERSION(0, 4)
> #define ABI_VIDEODRV_VERSION	SET_ABI_VERSION(19, 0)
> -#define ABI_XINPUT_VERSION	SET_ABI_VERSION(21, 0)
> +#define ABI_XINPUT_VERSION	SET_ABI_VERSION(22, 0)
> #define ABI_EXTENSION_VERSION	SET_ABI_VERSION(9, 0)
> #define ABI_FONT_VERSION	SET_ABI_VERSION(0, 6)
> 
> diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
> index 1fb5b16..9fa3dc4 100644
> --- a/hw/xfree86/common/xf86Xinput.c
> +++ b/hw/xfree86/common/xf86Xinput.c
> @@ -1326,47 +1326,21 @@ xf86PostButtonEventM(DeviceIntPtr device,
> }
> 
> void
> -xf86PostKeyEvent(DeviceIntPtr device,
> -                 unsigned int key_code,
> -                 int is_down,
> -                 int is_absolute, int first_valuator, int num_valuators, ...)
> +xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down)
> {
> -    va_list var;
> -    int i = 0;
> -    ValuatorMask mask;
> -
> -    XI_VERIFY_VALUATORS(num_valuators);
> -
> -    valuator_mask_zero(&mask);
> -
> -    va_start(var, num_valuators);
> -    for (i = 0; i < num_valuators; i++)
> -        valuator_mask_set(&mask, first_valuator + i, va_arg(var, int));
> -
> -    va_end(var);
> -
> -    xf86PostKeyEventM(device, key_code, is_down, is_absolute, &mask);
> +    xf86PostKeyEventM(device, key_code, is_down);
> }
> 
> void
> xf86PostKeyEventP(DeviceIntPtr device,
>                   unsigned int key_code,
> -                  int is_down,
> -                  int is_absolute,
> -                  int first_valuator, int num_valuators, const int *valuators)
> +                  int is_down)
> {
> -    ValuatorMask mask;
> -
> -    XI_VERIFY_VALUATORS(num_valuators);
> -
> -    valuator_mask_set_range(&mask, first_valuator, num_valuators, valuators);
> -    xf86PostKeyEventM(device, key_code, is_down, is_absolute, &mask);
> +    xf86PostKeyEventM(device, key_code, is_down);
> }
> 
> void
> -xf86PostKeyEventM(DeviceIntPtr device,
> -                  unsigned int key_code,
> -                  int is_down, int is_absolute, const ValuatorMask *mask)
> +xf86PostKeyEventM(DeviceIntPtr device, unsigned int key_code, int is_down)
> {
> #if XFreeXDGA
>     DeviceIntPtr pointer;
> @@ -1382,8 +1356,7 @@ xf86PostKeyEventM(DeviceIntPtr device,
>     }
> #endif
> 
> -    QueueKeyboardEvents(device,
> -                        is_down ? KeyPress : KeyRelease, key_code, mask);
> +    QueueKeyboardEvents(device, is_down ? KeyPress : KeyRelease, key_code);
> }
> 
> void
> @@ -1392,7 +1365,7 @@ xf86PostKeyboardEvent(DeviceIntPtr device, unsigned int key_code, int is_down)
>     ValuatorMask mask;
> 
>     valuator_mask_zero(&mask);
> -    xf86PostKeyEventM(device, key_code, is_down, 0, &mask);
> +    xf86PostKeyEventM(device, key_code, is_down);
> }
> 
> InputInfoPtr
> diff --git a/hw/xfree86/common/xf86Xinput.h b/hw/xfree86/common/xf86Xinput.h
> index 42d66d2..0024053 100644
> --- a/hw/xfree86/common/xf86Xinput.h
> +++ b/hw/xfree86/common/xf86Xinput.h
> @@ -148,18 +148,11 @@ extern _X_EXPORT void xf86PostButtonEventM(DeviceIntPtr device, int is_absolute,
>                                            int button, int is_down,
>                                            const ValuatorMask *mask);
> extern _X_EXPORT void xf86PostKeyEvent(DeviceIntPtr device,
> -                                       unsigned int key_code, int is_down,
> -                                       int is_absolute, int first_valuator,
> -                                       int num_valuators, ...);
> +                                       unsigned int key_code, int is_down);
> extern _X_EXPORT void xf86PostKeyEventM(DeviceIntPtr device,
> -                                        unsigned int key_code, int is_down,
> -                                        int is_absolute,
> -                                        const ValuatorMask *mask);
> +                                        unsigned int key_code, int is_down);
> extern _X_EXPORT void xf86PostKeyEventP(DeviceIntPtr device,
> -                                        unsigned int key_code, int is_down,
> -                                        int is_absolute, int first_valuator,
> -                                        int num_valuators,
> -                                        const int *valuators);
> +                                        unsigned int key_code, int is_down);
> extern _X_EXPORT void xf86PostKeyboardEvent(DeviceIntPtr device,
>                                             unsigned int key_code, int is_down);
> extern _X_EXPORT void xf86PostTouchEvent(DeviceIntPtr dev, uint32_t touchid,
> diff --git a/hw/xnest/Events.c b/hw/xnest/Events.c
> index 3ff095b..f727557 100644
> --- a/hw/xnest/Events.c
> +++ b/hw/xnest/Events.c
> @@ -103,7 +103,7 @@ void
> xnestQueueKeyEvent(int type, unsigned int keycode)
> {
>     lastEventTime = GetTimeInMillis();
> -    QueueKeyboardEvents(xnestKeyboardDevice, type, keycode, NULL);
> +    QueueKeyboardEvents(xnestKeyboardDevice, type, keycode);
> }
> 
> void
> diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
> index 5a5e4da..9bf2f14 100644
> --- a/hw/xquartz/darwinEvents.c
> +++ b/hw/xquartz/darwinEvents.c
> @@ -456,8 +456,7 @@ DarwinInputReleaseButtonsAndKeys(DeviceIntPtr pDev)
>         if (pDev->key) {
>             for (i = 0; i < NUM_KEYCODES; i++) {
>                 if (BitIsOn(pDev->key->down, i + MIN_KEYCODE)) {
> -                    QueueKeyboardEvents(pDev, KeyRelease, i + MIN_KEYCODE,
> -                                        NULL);
> +                    QueueKeyboardEvents(pDev, KeyRelease, i + MIN_KEYCODE);
>                 }
>             }
>         }
> @@ -611,8 +610,7 @@ DarwinSendKeyboardEvents(int ev_type, int keycode)
> 
>     darwinEvents_lock();
>     {
> -        QueueKeyboardEvents(darwinKeyboard, ev_type, keycode + MIN_KEYCODE,
> -                            NULL);
> +        QueueKeyboardEvents(darwinKeyboard, ev_type, keycode + MIN_KEYCODE);
>         DarwinPokeEQ();
>     } darwinEvents_unlock();
> }
> diff --git a/hw/xwayland/xwayland-input.c b/hw/xwayland/xwayland-input.c
> index b8c543c..68826ff 100644
> --- a/hw/xwayland/xwayland-input.c
> +++ b/hw/xwayland/xwayland-input.c
> @@ -318,7 +318,6 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard, uint32_t serial,
> {
>     struct xwl_seat *xwl_seat = data;
>     uint32_t *k, *end;
> -    ValuatorMask mask;
> 
>     xwl_seat->xwl_screen->serial = serial;
> 
> @@ -333,9 +332,8 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard, uint32_t serial,
>         *k = key;
>     }
> 
> -    valuator_mask_zero(&mask);
>     QueueKeyboardEvents(xwl_seat->keyboard,
> -                        state ? KeyPress : KeyRelease, key + 8, &mask);
> +                        state ? KeyPress : KeyRelease, key + 8);
> }
> 
> static void
> @@ -388,16 +386,14 @@ keyboard_handle_enter(void *data, struct wl_keyboard *keyboard,
>                       struct wl_surface *surface, struct wl_array *keys)
> {
>     struct xwl_seat *xwl_seat = data;
> -    ValuatorMask mask;
>     uint32_t *k;
> 
>     xwl_seat->xwl_screen->serial = serial;
>     xwl_seat->keyboard_focus = surface;
> 
>     wl_array_copy(&xwl_seat->keys, keys);
> -    valuator_mask_zero(&mask);
>     wl_array_for_each(k, &xwl_seat->keys)
> -        QueueKeyboardEvents(xwl_seat->keyboard, KeyPress, *k + 8, &mask);
> +        QueueKeyboardEvents(xwl_seat->keyboard, KeyPress, *k + 8);
> }
> 
> static void
> @@ -405,14 +401,12 @@ keyboard_handle_leave(void *data, struct wl_keyboard *keyboard,
>                       uint32_t serial, struct wl_surface *surface)
> {
>     struct xwl_seat *xwl_seat = data;
> -    ValuatorMask mask;
>     uint32_t *k;
> 
>     xwl_seat->xwl_screen->serial = serial;
> 
> -    valuator_mask_zero(&mask);
>     wl_array_for_each(k, &xwl_seat->keys)
> -        QueueKeyboardEvents(xwl_seat->keyboard, KeyRelease, *k + 8, &mask);
> +        QueueKeyboardEvents(xwl_seat->keyboard, KeyRelease, *k + 8);
> 
>     xwl_seat->keyboard_focus = NULL;
> }
> diff --git a/hw/xwin/winkeybd.c b/hw/xwin/winkeybd.c
> index 3a75ab2..e7202a6 100644
> --- a/hw/xwin/winkeybd.c
> +++ b/hw/xwin/winkeybd.c
> @@ -502,7 +502,7 @@ winSendKeyEvent(DWORD dwKey, Bool fDown)
>     g_winKeyState[dwKey] = fDown;
> 
>     QueueKeyboardEvents(g_pwinKeyboard, fDown ? KeyPress : KeyRelease,
> -                        dwKey + MIN_KEYCODE, NULL);
> +                        dwKey + MIN_KEYCODE);
> 
>     winDebug("winSendKeyEvent: dwKey: %d, fDown: %d\n", dwKey, fDown);
> }
> diff --git a/include/input.h b/include/input.h
> index bf22dc7..cb83cac 100644
> --- a/include/input.h
> +++ b/include/input.h
> @@ -448,12 +448,11 @@ extern _X_EXPORT void QueuePointerEvents(DeviceIntPtr pDev,
> extern _X_EXPORT int GetKeyboardEvents(InternalEvent *events,
>                                        DeviceIntPtr pDev,
>                                        int type,
> -                                       int key_code, const ValuatorMask *mask);
> +                                       int key_code);
> 
> extern _X_EXPORT void QueueKeyboardEvents(DeviceIntPtr pDev,
>                                           int type,
> -                                          int key_code,
> -                                          const ValuatorMask *mask);
> +                                          int key_code);
> 
> extern int GetTouchEvents(InternalEvent *events,
>                           DeviceIntPtr pDev,
> -- 
> 2.1.0
>
On Tue, Dec 16, 2014 at 08:15:31AM +0000, Daniel Stone wrote:
> Hi,
> 
> On 16 December 2014 at 04:43, Peter Hutterer <peter.hutterer@who-t.net>
> wrote:
> >
> > @@ -1157,18 +1139,6 @@ GetKeyboardEvents(InternalEvent *events,
> > DeviceIntPtr pDev, int type,
> >          set_key_up(pDev, key_code, KEY_POSTED);
> >      }
> >
> > -    clipValuators(pDev, &mask);
> > -
> > -    set_valuators(pDev, event, &mask);
> > -
> > -    if (!IsFloating(pDev)) {
> > -        DeviceIntPtr master = GetMaster(pDev, MASTER_POINTER);
> > -
> > -        event_set_root_coordinates(event,
> > -                                   master->last.valuators[0],
> > -                                   master->last.valuators[1]);
> > -    }
> > -
> >      return num_events;
> >  }
> >
> 
> Are you sure this is right? Won't this change it from returning root_[xy]
> with current MD pointer co-ordinates to nothing/rubbish?

no, this actually works, albeit mostly because of the usual mess.

ProcesDeviceEvent() updates the sprite for motion events (CheckMotion), and
then fills that position in for KeyPress events. so yes, the root coords are
garbage but since we only use those for motion events it doesn't matter.

> > diff --git a/hw/xfree86/common/xf86Module.h
> > b/hw/xfree86/common/xf86Module.h
> > index e68fe9c..25a8869 100644
> > --- a/hw/xfree86/common/xf86Module.h
> > +++ b/hw/xfree86/common/xf86Module.h
> > @@ -81,7 +81,7 @@ typedef enum {
> >   */
> >  #define ABI_ANSIC_VERSION      SET_ABI_VERSION(0, 4)
> >  #define ABI_VIDEODRV_VERSION   SET_ABI_VERSION(19, 0)
> > -#define ABI_XINPUT_VERSION     SET_ABI_VERSION(21, 0)
> > +#define ABI_XINPUT_VERSION     SET_ABI_VERSION(22, 0)
> >  #define ABI_EXTENSION_VERSION  SET_ABI_VERSION(9, 0)
> >  #define ABI_FONT_VERSION       SET_ABI_VERSION(0, 6)
> >
> > diff --git a/hw/xfree86/common/xf86Xinput.c
> > b/hw/xfree86/common/xf86Xinput.c
> > index 1fb5b16..9fa3dc4 100644
> > --- a/hw/xfree86/common/xf86Xinput.c
> > +++ b/hw/xfree86/common/xf86Xinput.c
> > @@ -1326,47 +1326,21 @@ xf86PostButtonEventM(DeviceIntPtr device,
> >  }
> >
> >  void
> > -xf86PostKeyEvent(DeviceIntPtr device,
> > -                 unsigned int key_code,
> > -                 int is_down,
> > -                 int is_absolute, int first_valuator, int num_valuators,
> > ...)
> > +xf86PostKeyEvent(DeviceIntPtr device, unsigned int key_code, int is_down)
> 
> 
> I'd probably lean towards leaving the xf86 wrappers alone (with a BUG_ON if
> you must); not sure the annoyance of an ABI break to essentially preserve
> the status quo is worth it tbh.

meh, it's a simple rebuild where needed and easy to backport. I can hold
this patch off until later in the cycle so the bisect doesn't matter as much
if you want.

Cheers,
   Peter
Peter Hutterer <peter.hutterer@who-t.net> writes:

> Nothing was using it and if anyone had they would've gotten a warning and
> noticed that it doesn't actually work. Drop this, it has been unused for years.
>
> Input ABI 22

Seems reasonable to fix the API for this, but the patch will need to
wait until after 1.17 is released as the API/ABI are frozen for that at
this point.
On 16/12/2014 04:43, Peter Hutterer wrote:
> Nothing was using it and if anyone had they would've gotten a warning and
> noticed that it doesn't actually work. Drop this, it has been unused for years.
>
> Input ABI 22
>
> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
> ---
> Jeremy, Jon, can you please build-test this? thanks

I verified that hw/xwin builds with this patch applied.

Sorry for the slow turn-around and thanks for the heads up.
Hi,

On 17 December 2014 at 02:33, Peter Hutterer <peter.hutterer@who-t.net> wrote:
> On Tue, Dec 16, 2014 at 08:15:31AM +0000, Daniel Stone wrote:
>> Are you sure this is right? Won't this change it from returning root_[xy]
>> with current MD pointer co-ordinates to nothing/rubbish?
>
> no, this actually works, albeit mostly because of the usual mess.
>
> ProcesDeviceEvent() updates the sprite for motion events (CheckMotion), and
> then fills that position in for KeyPress events. so yes, the root coords are
> garbage but since we only use those for motion events it doesn't matter.

Ah yes, I'd forgotten about that; guess time really does heal all wounds.

Reviewed-by: Daniel Stone <daniels@collabora.com>

Cheers,
Daniel