diff mbox series

[v5,03/12] ui: convert key events to QKeyCodes immediately

Message ID 20170912123744.14730-4-berrange@redhat.com
State New
Headers show
Series Convert over to use keycodemapdb | expand

Commit Message

Daniel P. Berrangé Sept. 12, 2017, 12:37 p.m. UTC
Always use QKeyCode in the InputKeyEvent struct, by converting key
numbers to QKeyCode at the time the event is created.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 ui/input.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Gerd Hoffmann Sept. 12, 2017, 1:31 p.m. UTC | #1
On Tue, 2017-09-12 at 13:37 +0100, Daniel P. Berrange wrote:
> Always use QKeyCode in the InputKeyEvent struct, by converting key
> numbers to QKeyCode at the time the event is created.
> 
> Signed-off-by: Daniel P. Berrange <berrange@redhat.com>

qmp_input_send_event() must be handled too as patches later in this
series depend on never seeing any KEY_VALUE_KIND_NUMBER key events.

cheers,
  Gerd

@@ -157,9 +157,16 @@ void qmp_input_send_event(bool has_device, const
char *device,
     }
 
     for (e = events; e != NULL; e = e->next) {
-        InputEvent *event = e->value;
+        InputEvent *evt = e->value;
 
-        qemu_input_event_send(con, event);
+        if (evt->type == INPUT_EVENT_KIND_KEY &&
+            evt->u.key.data->key->type == KEY_VALUE_KIND_NUMBER) {
+            KeyValue *key = evt->u.key.data->key;
+            QKeyCode code = qemu_input_key_number_to_qcode(key-
>u.qcode.data);
+            qemu_input_event_send_key_qcode(con, code, evt-
>u.key.data->down);
+        } else {
+            qemu_input_event_send(con, evt);
+        }
     }
diff mbox series

Patch

diff --git a/ui/input.c b/ui/input.c
index 3422d4a8ef..9914daf0b4 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -400,10 +400,8 @@  void qemu_input_event_send_key(QemuConsole *src, KeyValue *key, bool down)
 
 void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down)
 {
-    KeyValue *key = g_new0(KeyValue, 1);
-    key->type = KEY_VALUE_KIND_NUMBER;
-    key->u.number.data = num;
-    qemu_input_event_send_key(src, key, down);
+    QKeyCode code = qemu_input_key_number_to_qcode(num);
+    qemu_input_event_send_key_qcode(src, code, down);
 }
 
 void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool down)