input: qapi: define event types

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 a lot 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 split into motion events (one for each axis) and
button events, which are grouped by sync.

Keyboard events are using the existing KeyValue type.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Gerd Hoffmann 2013-11-27 09:08:40 +01:00
parent 7ad95ff76c
commit 031fa96439
1 changed files with 76 additions and 0 deletions

View File

@ -4566,3 +4566,79 @@
# Since: 1.7
##
{ 'command': 'blockdev-add', 'data': { 'options': 'BlockdevOptions' } }
##
# @InputButton
#
# Button of a pointer input device (mouse, tablet).
#
# Since: 2.0
##
{ 'enum' : 'InputButton',
'data' : [ 'Left', 'Middle', 'Right', 'WheelUp', 'WheelDown' ] }
##
# @InputButton
#
# Position axis of a pointer input device (mouse, tablet).
#
# Since: 2.0
##
{ 'enum' : 'InputAxis',
'data' : [ 'X', 'Y' ] }
##
# @InputKeyEvent
#
# Keyboard input event.
#
# @key: Which key this event is for.
# @down: True for key-down and false for key-up events.
#
# Since: 2.0
##
{ 'type' : 'InputKeyEvent',
'data' : { 'key' : 'KeyValue',
'down' : 'bool' } }
##
# @InputBtnEvent
#
# Pointer button input event.
#
# @button: Which button this event is for.
# @down: True for key-down and false for key-up events.
#
# Since: 2.0
##
{ 'type' : 'InputBtnEvent',
'data' : { 'button' : 'InputButton',
'down' : 'bool' } }
##
# @InputMoveEvent
#
# Pointer motion input event.
#
# @axis: Which axis is referenced by @value.
# @value: Pointer position. For absolute coordinates the
# valid range is 0 -> 0x7ffff
#
# Since: 2.0
##
{ 'type' : 'InputMoveEvent',
'data' : { 'axis' : 'InputAxis',
'value' : 'int' } }
##
# @InputEvent
#
# Input event union.
#
# Since: 2.0
##
{ 'union' : 'InputEvent',
'data' : { 'key' : 'InputKeyEvent',
'btn' : 'InputBtnEvent',
'rel' : 'InputMoveEvent',
'abs' : 'InputMoveEvent' } }