Define input event types, using qapi. So we get nicely autogenerated types for our input events. And when it comes to qmp support some day things will be alot easier.
Types are modeled after the linux input layer. There are separate event types for each value. There is a sync to indicate the end of a event group. Mouse events are splitted into motion events (one for each axis) and button events, which are grouped by sync. Keyboard events are using keycodes instead of scancodes, so we can rid of the keycode->scancode transformation everywhere in the ui code. Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- qapi-schema.json | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/qapi-schema.json b/qapi-schema.json index 83fa485..c27c49d 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -4213,3 +4213,32 @@ # Since: 1.7 ## { 'command': 'blockdev-add', 'data': { 'options': 'BlockdevOptions' } } + + +########################################################### +# WIP - input event data structures +# not exposed via qmp yet, needs testing first + +{ 'enum' : 'InputButton', + 'data' : [ 'Left', 'Middle', 'Right' ] } + +{ 'enum' : 'InputAxis', + 'data' : [ 'X', 'Y' ] } + +{ 'type' : 'InputKeyEvent', + 'data' : { 'keycode' : 'int', + 'down' : 'bool' } } + +{ 'type' : 'InputBtnEvent', + 'data' : { 'button' : 'InputButton', + 'down' : 'bool' } } + +{ 'type' : 'InputMoveEvent', + 'data' : { 'axis' : 'InputAxis', + 'value' : 'int' } } + +{ 'union' : 'InputEvent', + 'data' : { 'key' : 'InputKeyEvent', + 'btn' : 'InputBtnEvent', + 'rel' : 'InputMoveEvent', + 'abs' : 'InputMoveEvent' } } -- 1.8.3.1