Sergio Lopez <s...@redhat.com> writes: > Add the required infrastructure to support generating multitouch events. > > Signed-off-by: Sergio Lopez <s...@redhat.com> > Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > include/ui/input.h | 3 +++ > qapi/ui.json | 58 ++++++++++++++++++++++++++++++++++++------- > replay/replay-input.c | 18 ++++++++++++++ > ui/input.c | 6 +++++ > ui/trace-events | 1 + > 5 files changed, 77 insertions(+), 9 deletions(-) > > diff --git a/include/ui/input.h b/include/ui/input.h > index c86219a1c1..2a3dffd417 100644 > --- a/include/ui/input.h > +++ b/include/ui/input.h > @@ -8,9 +8,12 @@ > #define INPUT_EVENT_MASK_BTN (1<<INPUT_EVENT_KIND_BTN) > #define INPUT_EVENT_MASK_REL (1<<INPUT_EVENT_KIND_REL) > #define INPUT_EVENT_MASK_ABS (1<<INPUT_EVENT_KIND_ABS) > +#define INPUT_EVENT_MASK_MTT (1<<INPUT_EVENT_KIND_MTT) > > #define INPUT_EVENT_ABS_MIN 0x0000 > #define INPUT_EVENT_ABS_MAX 0x7FFF > +#define INPUT_EVENT_SLOTS_MIN 0x0 > +#define INPUT_EVENT_SLOTS_MAX 0xa > > typedef struct QemuInputHandler QemuInputHandler; > typedef struct QemuInputHandlerState QemuInputHandlerState; > diff --git a/qapi/ui.json b/qapi/ui.json > index b5650974fc..d38143bbe1 100644 > --- a/qapi/ui.json > +++ b/qapi/ui.json > @@ -1014,7 +1014,7 @@
Doc part is missing: # @touch: bla bla (since 8.1) > ## > { 'enum' : 'InputButton', > 'data' : [ 'left', 'middle', 'right', 'wheel-up', 'wheel-down', 'side', > - 'extra', 'wheel-left', 'wheel-right' ] } > + 'extra', 'wheel-left', 'wheel-right', 'touch' ] } > > ## > # @InputAxis: > @@ -1026,6 +1026,17 @@ > { 'enum' : 'InputAxis', > 'data' : [ 'x', 'y' ] } > > +## > +# @InputMultiTouchType: > +# > +# Type of a multi-touch event. > +# > +# Since: 8.1 > +## > +{ 'enum' : 'InputMultiTouchType', > + 'data' : [ 'begin', 'update', 'end', 'cancel', 'data' ] } > + > + > ## > # @InputKeyEvent: > # > @@ -1069,13 +1080,38 @@ > 'data' : { 'axis' : 'InputAxis', > 'value' : 'int' } } > > +## > +# @InputMultiTouchEvent: > +# > +# MultiTouch input event. > +# > +# @slot: Which slot has generated the event. > +# @tracking-id: ID to correlate this event with previously generated events. > +# @axis: Which axis is referenced by @value. > +# @value: Contact position. Please format like # @slot: Which slot has generated the event. # # @tracking-id: ID to correlate this event with previously generated # events. # # @axis: Which axis is referenced by @value. # # @value: Contact position. to blend in with recent commit a937b6aa739 (qapi: Reformat doc comments to conform to current conventions). The blank lines help with catching certain errors. rST loves to surprise... > +# > +# Since: 8.1 > +## > +{ 'struct' : 'InputMultiTouchEvent', > + 'data' : { 'type' : 'InputMultiTouchType', > + 'slot' : 'int', > + 'tracking-id': 'int', > + 'axis' : 'InputAxis', > + 'value' : 'int' } } > + > ## > # @InputEventKind: > # > +# @key: a keyboard input event > +# @btn: a pointer button input event > +# @rel: a relative pointer motion input event > +# @abs: an absolute pointer motion input event > +# @mtt: a multi-touch input event Please format like # @key: a keyboard input event # # @btn: a pointer button input event # # @rel: a relative pointer motion input event # # @abs: an absolute pointer motion input event # # @mtt: a multi-touch input event > +# > # Since: 2.0 > ## > { 'enum': 'InputEventKind', > - 'data': [ 'key', 'btn', 'rel', 'abs' ] } > + 'data': [ 'key', 'btn', 'rel', 'abs', 'mtt' ] } > > ## > # @InputKeyEventWrapper: > @@ -1101,17 +1137,20 @@ > { 'struct': 'InputMoveEventWrapper', > 'data': { 'data': 'InputMoveEvent' } } > > +## > +# @InputMultiTouchEventWrapper: > +# > +# Since: 8.1 > +## > +{ 'struct': 'InputMultiTouchEventWrapper', > + 'data': { 'data': 'InputMultiTouchEvent' } } > + > ## > # @InputEvent: > # > # Input event union. > # > -# @type: the input type, one of: > -# > -# - 'key': Input event of Keyboard > -# - 'btn': Input event of pointer buttons > -# - 'rel': Input event of relative pointer motion > -# - 'abs': Input event of absolute pointer motion > +# @type: the type of input event > # > # Since: 2.0 > ## > @@ -1121,7 +1160,8 @@ > 'data' : { 'key' : 'InputKeyEventWrapper', > 'btn' : 'InputBtnEventWrapper', > 'rel' : 'InputMoveEventWrapper', > - 'abs' : 'InputMoveEventWrapper' } } > + 'abs' : 'InputMoveEventWrapper', > + 'mtt' : 'InputMultiTouchEventWrapper' } } > > ## > # @input-send-event: With these minor doc improvements Reviewed-by: Markus Armbruster <arm...@redhat.com> [...]