console: export QemuConsole index,width,height

Add functions to query QemuConsole properties.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: rename file to legacy

Rename ui/input.c to ui/input-legacy.c.
We are going to replace it step by step.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
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>
input: qapi: add unmapped key

Simplifies building something -> QkeyCode mapping tables.
Uninitialized entries can easily identified then.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
input: qapi: add pause key

It's missing.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
input: add core bits of the new input layer

Register and unregister handlers.
Event dispatcher code.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: add helper functions to core

A bunch of helper functions to manage keyboard events,
to make life simpler for the ui code when submitting
keyboard events.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch legacy handlers to new core

legacy kbd event handlers are registered in the new core,
so they receive events from the new input core code.
keycode -> scancode translation needed here.

legacy kbd_put_keycode() sends events to the new core.
scancode -> keycode translation needed here.

So with this patch the new input core is fully functional
for keyboard events.  New + legacy interfaces can be mixed
in any way.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch qmp_send_key() to new core.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch gtk ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch sdl ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch vnc ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch spice ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: keyboard: switch curses ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: mouse: add helpers functions to core

Likewise a bunch of helper functions to manage mouse button
and movement events, again to make life easier for the ui code.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: mouse: add graphic_rotate support

Transform absolute mouse events according to graphic_rotate.

Legacy input code does it for both absolute and relative events,
but the logic is broken for relative coordinates, so this is
most likely not used anyway.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: mouse: add qemu_input_is_absolute()

Same as kbd_mouse_is_absolute(), but using new input core.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: mouse: switch legacy handlers to new core

legacy mouse event handlers are registered in the new core,
so they receive events submitted to the new input core.

legacy kbd_mouse_event() continues to use the old code paths.
So new-core event handlers wouldn't see events submitted via
kbd_mouse_event.

This leads to the constrain that we we must transition all
kbd_mouse_event() users first to keep things working.  But
that is easier to handle than translating legacy mouse events
into new-core mouse events ;)

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: mouse: switch gtk ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
input: mouse: switch sdl ui to new core

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>