All of lore.kernel.org
 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 v3 01/12] ui: add keycodemapdb repository as a GIT submodule
Date: Mon, 14 Aug 2017 13:49:16 +0100	[thread overview]
Message-ID: <20170814124927.30134-2-berrange@redhat.com> (raw)
In-Reply-To: <20170814124927.30134-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 +++
 configure                     |  2 ++
 tests/docker/Makefile.include |  1 +
 tests/docker/run              |  4 +++-
 ui/Makefile.objs              | 18 ++++++++++++++++++
 ui/keycodemapdb               |  1 +
 7 files changed, 30 insertions(+), 1 deletion(-)
 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/configure b/configure
index dd73cce62f..b0b67b9a67 100755
--- a/configure
+++ b/configure
@@ -5258,6 +5258,8 @@ echo_version() {
     fi
 }
 
+git submodule update --init ui/keycodemapdb
+
 # prepend pixman and ftd flags after all config tests are done
 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
 libs_softmmu="$pixman_libs $libs_softmmu"
diff --git a/tests/docker/Makefile.include b/tests/docker/Makefile.include
index aaab1a4208..3c45ef0274 100644
--- a/tests/docker/Makefile.include
+++ b/tests/docker/Makefile.include
@@ -35,6 +35,7 @@ $(DOCKER_SRC_COPY):
 	$(call make-archive-maybe, $(SRC_PATH), $@/qemu.tgz)
 	$(call make-archive-maybe, $(SRC_PATH)/dtc, $@/dtc.tgz)
 	$(call make-archive-maybe, $(SRC_PATH)/pixman, $@/pixman.tgz)
+	$(call make-archive-maybe, $(SRC_PATH)/ui/keycodemapdb, $@/keycodemapdb.tgz)
 	$(call quiet-command, cp $(SRC_PATH)/tests/docker/run $@/run, \
 		"COPY","RUNNER")
 
diff --git a/tests/docker/run b/tests/docker/run
index c1e4513bce..c30352df4a 100755
--- a/tests/docker/run
+++ b/tests/docker/run
@@ -33,13 +33,15 @@ mkdir -p $TEST_DIR/{src,build,install}
 
 # Extract the source tarballs
 tar -C $TEST_DIR/src -xzf $BASE/qemu.tgz
-for p in dtc pixman; do
+for p in dtc pixman ; do
     if test -f $BASE/$p.tgz; then
         tar -C $TEST_DIR/src/$p -xzf $BASE/$p.tgz
         export FEATURES="$FEATURES $p"
     fi
 done
 
+tar -C $TEST_DIR/src/ui/keycodemapdb -xzf $BASE/keycodemapdb.tgz
+
 if test -n "$SHOW_ENV"; then
     if test -f /packages.txt; then
         echo "Packages installed:"
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..56ce5650d2
--- /dev/null
+++ b/ui/keycodemapdb
@@ -0,0 +1 @@
+Subproject commit 56ce5650d2c6ea216b4580df44b9a6dd3bc92c3b
-- 
2.13.3

  reply	other threads:[~2017-08-14 12:49 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-14 12:49 [Qemu-devel] [PATCH v3 00/12] Convert over to use keycodemapdb Daniel P. Berrange
2017-08-14 12:49 ` Daniel P. Berrange [this message]
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 02/12] ui: convert common input code to keycodemapdb Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 03/12] ui: convert key events to QKeyCodes immediately Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 04/12] ui: don't export qemu_input_event_new_key Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 05/12] input: convert virtio-input-hid device to keycodemapdb Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 06/12] input: convert ps2 " Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 07/12] input: convert the adb " Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 08/12] char: convert the escc " Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 09/12] ui: convert cocoa frontend " Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 10/12] ui: convert the SDL2 " Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 11/12] ui: convert GTK and SDL1 frontends " Daniel P. Berrange
2017-08-14 12:49 ` [Qemu-devel] [PATCH v3 12/12] display: convert XenInput keyboard " Daniel P. Berrange
2017-08-14 13:05 ` [Qemu-devel] [PATCH v3 00/12] Convert over to use keycodemapdb no-reply
2017-08-14 13:06 ` no-reply
2017-08-14 13:06 ` 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=20170814124927.30134-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.