qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrange" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: Fam Zheng <famz@redhat.com>, Gerd Hoffmann <kraxel@redhat.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Daniel P. Berrange" <berrange@redhat.com>
Subject: [Qemu-devel] [PATCH v7 3/6] ui: add keycodemapdb repository as a GIT submodule
Date: Thu, 28 Sep 2017 13:06:18 +0100	[thread overview]
Message-ID: <20170928120621.30288-4-berrange@redhat.com> (raw)
In-Reply-To: <20170928120621.30288-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                |  1 +
 .gitmodules               |  3 +++
 configure                 |  8 +++++++-
 scripts/archive-source.sh |  2 +-
 ui/Makefile.objs          | 18 ++++++++++++++++++
 ui/keycodemapdb           |  1 +
 6 files changed, 31 insertions(+), 2 deletions(-)
 create mode 160000 ui/keycodemapdb

diff --git a/.gitignore b/.gitignore
index 06bf972fc3..1eada71afd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@
 /trace/generated-tcg-tracers.h
 /ui/shader/texture-blit-frag.h
 /ui/shader/texture-blit-vert.h
+/ui/input-keymap-*.c
 *-timestamp
 /*-softmmu
 /*-darwin-user
diff --git a/.gitmodules b/.gitmodules
index 84c54cdc49..f3bbc01f82 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -34,3 +34,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 ed4048f8b2..1aeb09f83f 100755
--- a/configure
+++ b/configure
@@ -264,7 +264,13 @@ cc_i386=i386-pc-linux-gnu-gcc
 libs_qga=""
 debug_info="yes"
 stack_protector=""
-git_submodules=""
+
+if test -d "$source_path/.git"
+then
+    git_submodules="ui/keycodemapdb"
+else
+    git_submodules=""
+fi
 
 # Don't accept a target_list environment variable.
 unset target_list
diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
index 0c06af0d00..9c789c5d9c 100755
--- a/scripts/archive-source.sh
+++ b/scripts/archive-source.sh
@@ -26,7 +26,7 @@ vroot_dir="${tar_file}.vroot"
 # independant of what the developer currently has initialized
 # in their checkout, because the build environment is completely
 # different to the host OS.
-submodules="dtc"
+submodules="dtc ui/keycodemapdb"
 
 if test $? -ne 0; then
     error "git submodule command failed"
diff --git a/ui/Makefile.objs b/ui/Makefile.objs
index ec8533d6d9..a930afafe5 100644
--- a/ui/Makefile.objs
+++ b/ui/Makefile.objs
@@ -50,3 +50,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 .git-submodule-status
+	$(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.5

  parent reply	other threads:[~2017-09-28 12:06 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-28 12:06 [Qemu-devel] [PATCH v7 0/6] Initial support for keycodemapdb GIT submodule Daniel P. Berrange
2017-09-28 12:06 ` [Qemu-devel] [PATCH v7 1/6] build: automatically handle GIT submodule checkout for dtc Daniel P. Berrange
2017-09-28 17:58   ` Eric Blake
2017-09-29  9:08     ` Daniel P. Berrange
2017-09-28 17:59   ` Eric Blake
2017-09-29  9:09     ` Daniel P. Berrange
2017-09-28 12:06 ` [Qemu-devel] [PATCH v7 2/6] docker: don't rely on submodules existing in the main checkout Daniel P. Berrange
2017-09-28 18:03   ` Eric Blake
2017-09-29  9:14     ` Daniel P. Berrange
2017-10-02 12:55       ` Peter Maydell
2017-09-28 12:06 ` Daniel P. Berrange [this message]
2017-09-28 18:22   ` [Qemu-devel] [PATCH v7 3/6] ui: add keycodemapdb repository as a GIT submodule Eric Blake
2017-09-28 12:06 ` [Qemu-devel] [PATCH v7 4/6] ui: convert common input code to keycodemapdb Daniel P. Berrange
2017-09-28 18:25   ` Eric Blake
2017-09-28 12:06 ` [Qemu-devel] [PATCH v7 5/6] ui: convert key events to QKeyCodes immediately Daniel P. Berrange
2017-09-28 12:06 ` [Qemu-devel] [PATCH v7 6/6] ui: don't export qemu_input_event_new_key Daniel P. Berrange
2017-09-28 12:20 ` [Qemu-devel] [PATCH v7 0/6] Initial support for keycodemapdb GIT submodule 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=20170928120621.30288-4-berrange@redhat.com \
    --to=berrange@redhat.com \
    --cc=famz@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --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).