[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 2/6] ui: add ctrl modifier support to kbd_put_qcode_c
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PULL 2/6] ui: add ctrl modifier support to kbd_put_qcode_console() |
Date: |
Mon, 9 Apr 2018 11:40:56 +0200 |
Signed-off-by: Gerd Hoffmann <address@hidden>
Message-id: address@hidden
Signed-off-by: Gerd Hoffmann <address@hidden>
---
include/ui/console.h | 2 +-
ui/console.c | 15 +++++++++++++--
ui/gtk.c | 4 ++--
ui/sdl2-input.c | 2 +-
4 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/include/ui/console.h b/include/ui/console.h
index 6d2c052068..37a8d68d29 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -99,7 +99,7 @@ void hmp_mouse_set(Monitor *mon, const QDict *qdict);
#define QEMU_KEY_CTRL_PAGEDOWN 0xe407
void kbd_put_keysym_console(QemuConsole *s, int keysym);
-bool kbd_put_qcode_console(QemuConsole *s, int qcode);
+bool kbd_put_qcode_console(QemuConsole *s, int qcode, bool ctrl);
void kbd_put_string_console(QemuConsole *s, const char *str, int len);
void kbd_put_keysym(int keysym);
diff --git a/ui/console.c b/ui/console.c
index 530a491987..3fb2f4e09f 100644
--- a/ui/console.c
+++ b/ui/console.c
@@ -1191,11 +1191,22 @@ static const int qcode_to_keysym[Q_KEY_CODE__MAX] = {
[Q_KEY_CODE_BACKSPACE] = QEMU_KEY_BACKSPACE,
};
-bool kbd_put_qcode_console(QemuConsole *s, int qcode)
+static const int ctrl_qcode_to_keysym[Q_KEY_CODE__MAX] = {
+ [Q_KEY_CODE_UP] = QEMU_KEY_CTRL_UP,
+ [Q_KEY_CODE_DOWN] = QEMU_KEY_CTRL_DOWN,
+ [Q_KEY_CODE_RIGHT] = QEMU_KEY_CTRL_RIGHT,
+ [Q_KEY_CODE_LEFT] = QEMU_KEY_CTRL_LEFT,
+ [Q_KEY_CODE_HOME] = QEMU_KEY_CTRL_HOME,
+ [Q_KEY_CODE_END] = QEMU_KEY_CTRL_END,
+ [Q_KEY_CODE_PGUP] = QEMU_KEY_CTRL_PAGEUP,
+ [Q_KEY_CODE_PGDN] = QEMU_KEY_CTRL_PAGEDOWN,
+};
+
+bool kbd_put_qcode_console(QemuConsole *s, int qcode, bool ctrl)
{
int keysym;
- keysym = qcode_to_keysym[qcode];
+ keysym = ctrl ? ctrl_qcode_to_keysym[qcode] : qcode_to_keysym[qcode];
if (keysym == 0) {
return false;
}
diff --git a/ui/gtk.c b/ui/gtk.c
index ef5bc42094..e98ac4d2fc 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1197,12 +1197,12 @@ static gboolean gd_text_key_down(GtkWidget *widget,
QemuConsole *con = vc->gfx.dcl.con;
if (key->keyval == GDK_KEY_Delete) {
- kbd_put_qcode_console(con, Q_KEY_CODE_DELETE);
+ kbd_put_qcode_console(con, Q_KEY_CODE_DELETE, false);
} else if (key->length) {
kbd_put_string_console(con, key->string, key->length);
} else {
int qcode = gd_map_keycode(key->hardware_keycode);
- kbd_put_qcode_console(con, qcode);
+ kbd_put_qcode_console(con, qcode, false);
}
return TRUE;
}
diff --git a/ui/sdl2-input.c b/ui/sdl2-input.c
index 605d781971..35d35c14c4 100644
--- a/ui/sdl2-input.c
+++ b/ui/sdl2-input.c
@@ -70,7 +70,7 @@ void sdl2_process_key(struct sdl2_console *scon,
kbd_put_keysym_console(con, QEMU_KEY_BACKSPACE);
break;
default:
- kbd_put_qcode_console(con, qcode);
+ kbd_put_qcode_console(con, qcode, false);
break;
}
}
--
2.9.3
- [Qemu-devel] [PULL 0/6] Ui 20180409 patches, Gerd Hoffmann, 2018/04/09
- [Qemu-devel] [PULL 4/6] sdl2: enable ctrl modifier keys for text consoles, Gerd Hoffmann, 2018/04/09
- [Qemu-devel] [PULL 6/6] sdl2: drop dead code, Gerd Hoffmann, 2018/04/09
- [Qemu-devel] [PULL 2/6] ui: add ctrl modifier support to kbd_put_qcode_console(),
Gerd Hoffmann <=
- [Qemu-devel] [PULL 3/6] sdl2: track kbd modifier state unconditionally, Gerd Hoffmann, 2018/04/09
- [Qemu-devel] [PULL 5/6] sdl2: drop QEMU_KEY_BACKSPACE special case, Gerd Hoffmann, 2018/04/09
- [Qemu-devel] [PULL 1/6] sdl2: Remove unused epoxy include, Gerd Hoffmann, 2018/04/09
- Re: [Qemu-devel] [PULL 0/6] Ui 20180409 patches, Peter Maydell, 2018/04/09