qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: Gerd Hoffmann <kraxel@redhat.com>, Eric Blake <eblake@redhat.com>,
	"Daniel P. Berrange" <berrange@redhat.com>
Subject: [Qemu-devel] [PATCH v2 01/12] ui: add keycodemapdb repository as a GIT submodule
Date: Mon, 14 Aug 2017 11:49:47 +0100	[thread overview]
Message-ID: <20170814104958.29434-2-berrange@redhat.com> (raw)
In-Reply-To: <20170814104958.29434-1-berrange@redhat.com>

The https://gitlab.com/keycodemap/keycodemapdb/ repo contains a
data file mapping between all the different scancode/keycode/keysym
sets that are known, and a tool to auto-generate lookup tables for
different combinations.

It is used by GTK-VNC, SPICE-GTK and libvirt for mapping keys.
Using it in QEMU will let us replace many hand written lookup
tables with auto-generated tables from a master data source,
reducing bugs. Adding new QKeyCodes will now only require the
master table to be updated, all ~20 other tables will be
automatically updated to follow.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 .gitignore       |  2 ++
 .gitmodules      |  3 +++
 ui/Makefile.objs | 18 ++++++++++++++++++
 ui/keycodemapdb  |  1 +
 4 files changed, 24 insertions(+)
 create mode 160000 ui/keycodemapdb

diff --git a/.gitignore b/.gitignore
index cf65316863..6e5a1202c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@
 /trace/generated-tcg-tracers.h
 /ui/shader/texture-blit-frag.h
 /ui/shader/texture-blit-vert.h
+/ui/keycodemap_*.c
+/ui/input-keymap-*.c
 *-timestamp
 /*-softmmu
 /*-darwin-user
diff --git a/.gitmodules b/.gitmodules
index 5b0c212622..369989f19e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -37,3 +37,6 @@
 [submodule "roms/QemuMacDrivers"]
 	path = roms/QemuMacDrivers
 	url = git://git.qemu.org/QemuMacDrivers.git
+[submodule "ui/keycodemapdb"]
+	path = ui/keycodemapdb
+	url = https://gitlab.com/keycodemap/keycodemapdb.git
diff --git a/ui/Makefile.objs b/ui/Makefile.objs
index 3369451285..6796a9f98b 100644
--- a/ui/Makefile.objs
+++ b/ui/Makefile.objs
@@ -49,3 +49,21 @@ gtk-egl.o-libs += $(OPENGL_LIBS)
 shader.o-libs += $(OPENGL_LIBS)
 console-gl.o-libs += $(OPENGL_LIBS)
 egl-helpers.o-libs += $(OPENGL_LIBS)
+
+KEYCODEMAP_GEN = $(SRC_PATH)/ui/keycodemapdb/tools/keymap-gen
+KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
+
+KEYCODEMAP_FILES = \
+		 $(NULL)
+
+GENERATED_FILES += $(KEYCODEMAP_FILES)
+
+ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile.objs
+	$(call quiet-command,\
+	    src=$$(echo $@ | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$$,\1,") && \
+	    dst=$$(echo $@ | sed -E -e "s,^ui/input-keymap-(.+)-to-(.+)\.c$$,\2,") && \
+	    $(PYTHON) $(KEYCODEMAP_GEN) \
+	          --lang glib2 \
+	          --varname qemu_input_map_$${src}_to_$${dst} \
+	          code-map $(KEYCODEMAP_CSV) $${src} $${dst} \
+	        > $@ || rm $@, "GEN", "$@")
diff --git a/ui/keycodemapdb b/ui/keycodemapdb
new file mode 160000
index 0000000000..aed87bb2aa
--- /dev/null
+++ b/ui/keycodemapdb
@@ -0,0 +1 @@
+Subproject commit aed87bb2aa6ed83b49574eb982e3bdd4c36acf17
-- 
2.13.3

  reply	other threads:[~2017-08-14 10:50 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-14 10:49 [Qemu-devel] [PATCH v2 00/12] Convert over to use keycodemapdb Daniel P. Berrange
2017-08-14 10:49 ` Daniel P. Berrange [this message]
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 02/12] ui: convert common input code to keycodemapdb Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 03/12] ui: convert key events to QKeyCodes immediately Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 04/12] ui: don't export qemu_input_event_new_key Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 05/12] input: convert virtio-input-hid device to keycodemapdb Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 06/12] input: convert ps2 " Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 07/12] input: convert the adb " Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 08/12] char: convert the escc " Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 09/12] ui: convert cocoa frontend " Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 10/12] ui: convert the SDL2 " Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 11/12] ui: convert GTK and SDL1 frontends " Daniel P. Berrange
2017-08-14 10:49 ` [Qemu-devel] [PATCH v2 12/12] display: convert XenInput keyboard " Daniel P. Berrange
2017-08-14 11:03 ` [Qemu-devel] [PATCH v2 00/12] Convert over to use keycodemapdb no-reply
2017-08-14 11:04 ` no-reply
2017-08-14 11:04 ` no-reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170814104958.29434-2-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=eblake@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).