[libvirt] [PATCH v2 1/2] util: switch over to use keycodemapdb GIT submodule

Daniel P. Berrange posted 2 patches 8 years, 11 months ago
There is a newer version of this series
[libvirt] [PATCH v2 1/2] util: switch over to use keycodemapdb GIT submodule
Posted by Daniel P. Berrange 8 years, 11 months ago
A long time ago we imported the keymaps.csv file from GTK-VNC so we
can do conversions between keycode sets. Meanwhile lots of bug fixes
have gone into this CSV file and libvirt hasn't kept in sync. The
keymaps.csv file and associated generator script has been pulled out
of GTK-VNC into a dedicated GIT repo for use as a submodule. This
allows GTK-VNC, SPICE-GTK, QEMU and libvirt to share the same master
database and tools and pushing updates merely requires a submodule
commit update as with gnulib.

The test suite is updated to cover some extra boundary conditions.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
---
 .gitignore                    |   3 +-
 .gitmodules                   |   3 +
 src/Makefile.am               |  45 ++--
 src/keycodemapdb              |   1 +
 src/util/keymaps.csv          | 464 ------------------------------------------
 src/util/virkeycode-mapgen.py |  97 ---------
 src/util/virkeycode.c         |  94 ++++-----
 tests/virkeycodetest.c        |   5 +
 8 files changed, 89 insertions(+), 623 deletions(-)
 create mode 160000 src/keycodemapdb
 delete mode 100644 src/util/keymaps.csv
 delete mode 100755 src/util/virkeycode-mapgen.py

diff --git a/.gitignore b/.gitignore
index 7b71bd1..6892885 100644
--- a/.gitignore
+++ b/.gitignore
@@ -159,7 +159,8 @@
 /src/test_libvirt*.aug
 /src/test_virtlockd.aug
 /src/test_virtlogd.aug
-/src/util/virkeymaps.h
+/src/util/virkeycodetable*.h
+/src/util/virkeynametable*.h
 /src/virt-aa-helper
 /src/virtlockd
 /src/virtlogd
diff --git a/.gitmodules b/.gitmodules
index 7acb1ea..cae8f18 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,6 @@
 [submodule "gnulib"]
 	path = .gnulib
 	url = git://git.sv.gnu.org/gnulib.git
+[submodule "src/keycodemapdb"]
+	path = src/keycodemapdb
+	url = https://gitlab.com/keycodemap/keycodemapdb.git
diff --git a/src/Makefile.am b/src/Makefile.am
index a85cd0d..24c1a0e 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -50,7 +50,7 @@ AM_LDFLAGS =	$(DRIVER_MODULES_LDFLAGS)			\
 		$(MINGW_EXTRA_LDFLAGS)				\
 		$(NULL)
 
-EXTRA_DIST = $(conf_DATA) util/keymaps.csv
+EXTRA_DIST = $(conf_DATA)
 
 BUILT_SOURCES =
 CLEANFILES =
@@ -132,7 +132,6 @@ UTIL_SOURCES =							\
 		util/virjson.c util/virjson.h			\
 		util/virkeycode.c util/virkeycode.h		\
 		util/virkeyfile.c util/virkeyfile.h		\
-		util/virkeymaps.h				\
 		util/virlease.c util/virlease.h			\
 		util/virlockspace.c util/virlockspace.h		\
 		util/virlog.c util/virlog.h			\
@@ -190,16 +189,38 @@ UTIL_SOURCES =							\
 		util/virxml.c util/virxml.h			\
 		$(NULL)
 
-EXTRA_DIST += $(srcdir)/util/keymaps.csv $(srcdir)/util/virkeycode-mapgen.py
-
-BUILT_SOURCES += util/virkeymaps.h
-MAINTAINERCLEANFILES += util/virkeymaps.h
-
-util/virkeymaps.h: $(srcdir)/util/keymaps.csv	\
-		$(srcdir)/util/virkeycode-mapgen.py
-	$(MKDIR_P) util/
-	$(AM_V_GEN)$(PYTHON) $(srcdir)/util/virkeycode-mapgen.py \
-	  <$(srcdir)/util/keymaps.csv >util/virkeymaps.h
+EXTRA_DIST += $(srcdir)/keycodemapdb/data/keymaps.csv \
+		$(srcdir)/keycodemapdb/tools/keymap-gen
+
+util/virkeycodetable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \
+			$(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am
+	$(AM_V_GEN)export NAME=`echo $@ | sed -e 's,util/virkeycodetable_,,' \
+					      -e 's,\.h,,'` && \
+		$(MKDIR_P) util/ && \
+		$(PYTHON) $(srcdir)/keycodemapdb/tools/keymap-gen \
+		--lang stdc --varname virKeyCodeTable_$$NAME code-table \
+		$(srcdir)/keycodemapdb/data/keymaps.csv $$NAME > \
+			$@-tmp && mv $@-tmp $@ || rm $@-tmp
+
+util/virkeynametable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \
+			$(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am
+	$(AM_V_GEN)export NAME=`echo $@ | sed -e 's,util/virkeynametable_,,' \
+					      -e 's,\.h,,'` && \
+		$(MKDIR_P) util/ && \
+		$(PYTHON) $(srcdir)/keycodemapdb/tools/keymap-gen \
+		--lang stdc --varname virKeyNameTable_$$NAME name-table \
+		$(srcdir)/keycodemapdb/data/keymaps.csv $$NAME > \
+			$@-tmp && mv $@-tmp $@ || rm $@-tmp
+
+KEYCODES = linux osx atset1 atset2 atset3 xt xtkbd usb win32 rfb
+KEYNAMES = linux osx win32
+
+KEYTABLES = $(KEYCODES:%=util/virkeycodetable_%.h) \
+	    $(KEYNAMES:%=util/virkeynametable_%.h)
+
+UTIL_SOURCES += $(KEYTABLES)
+BUILT_SOURCES += $(KEYTABLES)
+MAINTAINERCLEANFILES += $(KEYTABLES)
 
 # Internal generic driver infrastructure
 NODE_INFO_SOURCES = nodeinfo.h nodeinfo.c
diff --git a/src/keycodemapdb b/src/keycodemapdb
new file mode 160000
index 0000000..bd754b8
--- /dev/null
+++ b/src/keycodemapdb
@@ -0,0 +1 @@
+Subproject commit bd754b861e7de5c7919aa249a975913cb207b85d
diff --git a/src/util/keymaps.csv b/src/util/keymaps.csv
deleted file mode 100644
index 98c723b..0000000
--- a/src/util/keymaps.csv
+++ /dev/null
@@ -1,464 +0,0 @@
-"Linux Name","Linux Keycode","OS-X Name","OS-X Keycode","AT set1 keycode","AT set2 keycode","AT set3 keycode",XT,"XT KBD","USB Keycodes","Win32 Name","Win32 Keycode","Xwin XT","Xfree86 KBD XT"
-KEY_RESERVED,0,,,,,,,,,,,,
-KEY_ESC,1,Escape,0x35,1,118,8,1,1,41,VK_ESCAPE,0x1b,1,1
-KEY_1,2,ANSI_1,0x12,2,22,22,2,2,30,VK_1,0x31,2,2
-KEY_2,3,ANSI_2,0x13,3,30,30,3,3,31,VK_2,0x32,3,3
-KEY_3,4,ANSI_3,0x14,4,38,38,4,4,32,VK_3,0x33,4,4
-KEY_4,5,ANSI_4,0x15,5,37,37,5,5,33,VK_4,0x34,5,5
-KEY_5,6,ANSI_5,0x17,6,46,46,6,6,34,VK_5,0x35,6,6
-KEY_6,7,ANSI_6,0x16,7,54,54,7,7,35,VK_6,0x36,7,7
-KEY_7,8,ANSI_7,0x1a,8,61,61,8,8,36,VK_7,0x37,8,8
-KEY_8,9,ANSI_8,0x1c,9,62,62,9,9,37,VK_8,0x38,9,9
-KEY_9,10,ANSI_9,0x19,10,70,70,10,10,38,VK_9,0x39,10,10
-KEY_0,11,ANSI_0,0x1d,11,69,69,11,11,39,VK_0,0x30,11,11
-KEY_MINUS,12,ANSI_Minus,0x1b,12,78,78,12,12,45,VK_OEM_MINUS,0xbd,12,12
-KEY_EQUAL,13,ANSI_Equal,0x18,13,85,85,13,13,46,VK_OEM_PLUS,0xbb,13,13
-KEY_BACKSPACE,14,Delete,0x33,14,102,102,14,14,42,VK_BACK,0x08,14,14
-KEY_TAB,15,Tab,0x30,15,13,13,15,15,43,VK_TAB,0x09,15,15
-KEY_Q,16,ANSI_Q,0xc,16,21,21,16,16,20,VK_Q,0x51,16,16
-KEY_W,17,ANSI_W,0xd,17,29,29,17,17,26,VK_W,0x57,17,17
-KEY_E,18,ANSI_E,0xe,18,36,36,18,18,8,VK_E,0x45,18,18
-KEY_R,19,ANSI_R,0xf,19,45,45,19,19,21,VK_R,0x52,19,19
-KEY_T,20,ANSI_T,0x11,20,44,44,20,20,23,VK_T,0x54,20,20
-KEY_Y,21,ANSI_Y,0x10,21,53,53,21,21,28,VK_Y,0x59,21,21
-KEY_U,22,ANSI_U,0x20,22,60,60,22,22,24,VK_U,0x55,22,22
-KEY_I,23,ANSI_I,0x22,23,67,67,23,23,12,VK_I,0x49,23,23
-KEY_O,24,ANSI_O,0x1f,24,68,68,24,24,18,VK_O,0x4f,24,24
-KEY_P,25,ANSI_P,0x23,25,77,77,25,25,19,VK_P,0x50,25,25
-KEY_LEFTBRACE,26,ANSI_LeftBracket,0x21,26,84,84,26,26,47,VK_OEM_4,0xdb,26,26
-KEY_RIGHTBRACE,27,ANSI_RightBracket,0x1e,27,91,91,27,27,48,VK_OEM_6,0xdd,27,27
-KEY_ENTER,28,Return,0x24,28,90,90,28,28,40,VK_RETURN,0x0d,28,28
-KEY_LEFTCTRL,29,Control,0x3b,29,20,17,29,29,224,VK_LCONTROL,0xa2,29,29
-KEY_LEFTCTRL,29,Control,0x3b,29,20,17,29,29,224,VK_CONTROL,0x11,29,29
-KEY_A,30,ANSI_A,0x0,30,28,28,30,30,4,VK_A,0x41,30,30
-KEY_S,31,ANSI_S,0x1,31,27,27,31,31,22,VK_S,0x53,31,31
-KEY_D,32,ANSI_D,0x2,32,35,35,32,32,7,VK_D,0x44,32,32
-KEY_F,33,ANSI_F,0x3,33,43,43,33,33,9,VK_F,0x46,33,33
-KEY_G,34,ANSI_G,0x5,34,52,52,34,34,10,VK_G,0x47,34,34
-KEY_H,35,ANSI_H,0x4,35,51,51,35,35,11,VK_H,0x48,35,35
-KEY_J,36,ANSI_J,0x26,36,59,59,36,36,13,VK_J,0x4a,36,36
-KEY_K,37,ANSI_K,0x28,37,66,66,37,37,14,VK_K,0x4b,37,37
-KEY_L,38,ANSI_L,0x25,38,75,75,38,38,15,VK_L,0x4c,38,38
-KEY_SEMICOLON,39,ANSI_Semicolon,0x29,39,76,76,39,39,51,VK_OEM_1,0xba,39,39
-KEY_APOSTROPHE,40,ANSI_Quote,0x27,40,82,82,40,40,52,VK_OEM_2,0xbf,40,40
-KEY_GRAVE,41,ANSI_Grave,0x32,41,14,14,41,41,53,VK_OEM_3,0xc0,41,41
-KEY_SHIFT,42,Shift,0x38,42,18,18,42,42,225,VK_SHIFT,0x10,42,42
-KEY_LEFTSHIFT,42,Shift,0x38,42,18,18,42,42,225,VK_LSHIFT,0xa0,42,42
-KEY_BACKSLASH,43,ANSI_Backslash,0x2a,43,93,93,43,43,50,VK_OEM_5,0xdc,43,43
-KEY_Z,44,ANSI_Z,0x6,44,26,26,44,44,29,VK_Z,0x5a,44,44
-KEY_X,45,ANSI_X,0x7,45,34,34,45,45,27,VK_X,0x58,45,45
-KEY_C,46,ANSI_C,0x8,46,33,33,46,46,6,VK_C,0x43,46,46
-KEY_V,47,ANSI_V,0x9,47,42,42,47,47,25,VK_V,0x56,47,47
-KEY_B,48,ANSI_B,0xb,48,50,50,48,48,5,VK_B,0x42,48,48
-KEY_N,49,ANSI_N,0x2d,49,49,49,49,49,17,VK_N,0x4e,49,49
-KEY_M,50,ANSI_M,0x2e,50,58,58,50,50,16,VK_M,0x4d,50,50
-KEY_COMMA,51,ANSI_Comma,0x2b,51,65,65,51,51,54,VK_OEM_COMMA,0xbc,51,51
-KEY_DOT,52,ANSI_Period,0x2f,52,73,73,52,52,55,VK_OEM_PERIOD,0xbe,52,52
-KEY_SLASH,53,ANSI_Slash,0x2c,53,74,74,53,53,56,VK_OEM_2,0xbf,53,53
-KEY_RIGHTSHIFT,54,RightShift,0x3c,54,89,89,54,54,229,VK_RSHIFT,0xa1,54,54
-KEY_KPASTERISK,55,ANSI_KeypadMultiply,0x43,55,124,126,55,55,85,VK_MULTIPLY,0x6a,55,55
-KEY_LEFTALT,56,Option,0x3a,56,17,25,56,56,226,VK_LMENU,0xa4,56,56
-KEY_LEFTALT,56,Option,0x3a,56,17,25,56,56,226,VK_MENU,0x12,56,56
-KEY_SPACE,57,Space,0x31,57,41,41,57,57,44,VK_SPACE,0x20,57,57
-KEY_CAPSLOCK,58,CapsLock,0x39,58,88,20,58,58,57,VK_CAPITAL,0x14,58,58
-KEY_F1,59,F1,0x7a,59,5,7,59,59,58,VK_F1,0x70,59,59
-KEY_F2,60,F2,0x78,60,6,15,60,60,59,VK_F2,0x71,60,60
-KEY_F3,61,F3,0x63,61,4,23,61,61,60,VK_F3,0x72,61,61
-KEY_F4,62,F4,0x76,62,12,31,62,62,61,VK_F4,0x73,62,62
-KEY_F5,63,F5,0x60,63,3,39,63,63,62,VK_F5,0x74,63,63
-KEY_F6,64,F6,0x61,64,11,47,64,64,63,VK_F6,0x75,64,64
-KEY_F7,65,F7,0x62,65,259,55,65,65,64,VK_F7,0x76,65,65
-KEY_F8,66,F8,0x64,66,10,63,66,66,65,VK_F8,0x77,66,66
-KEY_F9,67,F9,0x65,67,1,71,67,67,66,VK_F9,0x78,67,67
-KEY_F10,68,F10,0x6d,68,9,79,68,68,67,VK_F10,0x79,68,68
-KEY_NUMLOCK,69,,,69,119,118,69,69,83,VK_NUMLOCK,0x90,69,69
-KEY_SCROLLLOCK,70,,,70,126,95,70,70,71,VK_SCROLL,0x91,70,70
-KEY_KP7,71,ANSI_Keypad7,0x59,71,108,108,71,71,95,VK_NUMPAD7,0x67,71,71
-KEY_KP8,72,ANSI_Keypad8,0x5b,72,117,117,72,72,96,VK_NUMPAD8,0x68,72,72
-KEY_KP9,73,ANSI_Keypad9,0x5c,73,125,125,73,73,97,VK_NUMPAD9,0x69,73,73
-KEY_KPMINUS,74,ANSI_KeypadMinus,0x4e,74,123,132,74,74,86,VK_SUBTRACT,0x6d,74,74
-KEY_KP4,75,ANSI_Keypad4,0x56,75,107,107,75,75,92,VK_NUMPAD4,0x64,75,75
-KEY_KP5,76,ANSI_Keypad5,0x57,76,115,115,76,76,93,VK_NUMPAD5,0x65,76,76
-KEY_KP6,77,ANSI_Keypad6,0x58,77,116,116,77,77,94,VK_NUMPAD6,0x66,77,77
-KEY_KPPLUS,78,ANSI_KeypadPlus,0x45,78,121,124,78,78,87,VK_ADD,0x6b,78,78
-KEY_KP1,79,ANSI_Keypad1,0x53,79,105,105,79,79,89,VK_NUMPAD1,0x61,79,79
-KEY_KP2,80,ANSI_Keypad2,0x54,80,114,114,80,80,90,VK_NUMPAD2,0x62,80,80
-KEY_KP3,81,ANSI_Keypad3,0x55,81,122,122,81,81,91,VK_NUMPAD3,0x63,81,81
-KEY_KP0,82,ANSI_Keypad0,0x52,82,112,112,82,82,98,VK_NUMPAD0,0x60,82,82
-KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,83,113,113,83,83,99,VK_DECIMAL,0x6e,83,83
-,84,,,,,,,84,,,,,
-KEY_ZENKAKUHANKAKU,85,,,118,95,,,118,148,,,,
-KEY_102ND,86,,,86,97,19,,86,100,VK_OEM_102,0xe1,,
-KEY_F11,87,F11,0x67,87,120,86,101,87,68,VK_F11,0x7a,,
-KEY_F12,88,F12,0x6f,88,7,94,102,88,69,VK_F12,0x7b,,
-KEY_RO,89,,,115,81,,,115,135,,,,
-KEY_KATAKANA,90,JIS_Kana????,0x68,120,99,,,120,146,VK_KANA,0x15,,
-KEY_HIRAGANA,91,,,119,98,,,119,147,,,,
-KEY_HENKAN,92,,,121,100,134,,121,138,,,,
-KEY_KATAKANAHIRAGANA,93,,,112,19,135,,112,136,,,0xc8,0xc8
-KEY_MUHENKAN,94,,,123,103,133,,123,139,,,,
-KEY_KPJPCOMMA,95,JIS_KeypadComma,0x5f,92,39,,,92,140,,,,
-KEY_KPENTER,96,ANSI_KeypadEnter,0x4c,,158,121,,284,88,,,0x64,0x64
-KEY_RIGHTCTRL,97,RightControl,0x3e,,,88,,285,228,VK_RCONTROL,0xa3,0x65,0x65
-KEY_KPSLASH,98,ANSI_KeypadDivide,0x4b,,181,119,,309,84,VK_DIVIDE,0x6f,0x68,0x68
-KEY_SYSRQ,99,,,84,260,87,,84,70,"VK_SNAPSHOT ???",0x2c,0x67,0x67
-KEY_RIGHTALT,100,RightOption,0x3d,,,57,,312,230,VK_RMENU,0xa5,0x69,0x69
-KEY_LINEFEED,101,,,,,,,91,,,,,
-KEY_HOME,102,Home,0x73,,224,110,,327,74,VK_HOME,0x24,0x59,0x59
-KEY_UP,103,UpArrow,0x7e,,236,99,109,328,82,VK_UP,0x26,0x5a,0x5a
-KEY_PAGEUP,104,PageUp,0x74,,201,111,,329,75,VK_PRIOR,0x21,0x5b,0x5b
-KEY_LEFT,105,LeftArrow,0x7b,,203,97,111,331,80,VK_LEFT,0x25,0x5c,0x5c
-KEY_RIGHT,106,RightArrow,0x7c,,205,106,112,333,79,VK_RIGHT,0x27,0x5e,0x5e
-KEY_END,107,End,0x77,,225,101,,335,77,VK_END,0x23,0x5f,0x5f
-KEY_DOWN,108,DownArrow,0x7d,,254,96,110,336,81,VK_DOWN,0x28,0x60,0x60
-KEY_PAGEDOWN,109,PageDown,0x79,,243,109,,337,78,VK_NEXT,0x22,0x61,0x61
-KEY_INSERT,110,,,,210,103,107,338,73,VK_INSERT,0x2d,0x62,0x62
-KEY_DELETE,111,ForwardDelete,0x75,,244,100,108,339,76,VK_DELETE,0x2e,0x63,0x63
-KEY_MACRO,112,,,,239,142,,367,,,,,
-KEY_MUTE,113,Mute,0x4a,,251,156,,288,239,VK_VOLUME_MUTE,0xad,,
-KEY_VOLUMEDOWN,114,VolumeDown,0x49,,,157,,302,238,VK_VOLUME_DOWN,0xae,,
-KEY_VOLUMEUP,115,VolumeUp,0x48,,233,149,,304,237,VK_VOLUME_UP,0xaf,,
-KEY_POWER,116,,,,,,,350,102,,,,
-KEY_KPEQUAL,117,ANSI_KeypadEquals,0x51,89,15,,,89,103,,,0x76,0x76
-KEY_KPPLUSMINUS,118,,,,206,,,334,,,,,
-KEY_PAUSE,119,,,,198,98,,326,72,VK_PAUSE,0x013,0x66,0x66
-KEY_SCALE,120,,,,,,,267,,,,,
-KEY_KPCOMMA,121,ANSI_KeypadClear????,0x47,126,109,,,126,133,VK_SEPARATOR??,0x6c,,
-KEY_HANGEUL,122,,,,,,,,144,VK_HANGEUL,0x15,,
-KEY_HANJA,123,,,,,,,269,145,VK_HANJA,0x19,,
-KEY_YEN,124,JIS_Yen,0x5d,125,106,,,125,137,,,0x7d,0x7d
-KEY_LEFTMETA,125,Command,0x37,,,139,,347,227,VK_LWIN,0x5b,0x6b,0x6b
-KEY_RIGHTMETA,126,,,,,140,,348,231,VK_RWIN,0x5c,0x6c,0x6c
-KEY_COMPOSE,127,Function,0x3f,,,141,,349,101,VK_APPS,0x5d,0x6d,0x6d
-KEY_STOP,128,,,,,10,,360,243,VK_BROWSER_STOP,0xa9,,
-KEY_AGAIN,129,,,,,11,,261,121,,,,
-KEY_PROPS,130,,,,,12,,262,118,,,,
-KEY_UNDO,131,,,,,16,,263,122,,,,
-KEY_FRONT,132,,,,,,,268,119,,,,
-KEY_COPY,133,,,,,24,,376,124,,,,
-KEY_OPEN,134,,,,,32,,100,116,,,,
-KEY_PASTE,135,,,,,40,,101,125,,,,
-KEY_FIND,136,,,,,48,,321,244,,,,
-KEY_CUT,137,,,,,56,,316,123,,,,
-KEY_HELP,138,,,,,9,,373,117,VK_HELP,0x2f,,
-KEY_MENU,139,,,,,145,,286,,,,,
-KEY_CALC,140,,,,174,163,,289,251,,,,
-KEY_SETUP,141,,,,,,,102,,,,,
-KEY_SLEEP,142,,,,,,,351,248,VK_SLEEP,0x5f,,
-KEY_WAKEUP,143,,,,,,,355,,,,,
-KEY_FILE,144,,,,,,,103,,,,,
-KEY_SENDFILE,145,,,,,,,104,,,,,
-KEY_DELETEFILE,146,,,,,,,105,,,,,
-KEY_XFER,147,,,,,162,,275,,,,,
-KEY_PROG1,148,,,,,160,,287,,,,,
-KEY_PROG2,149,,,,,161,,279,,,,,
-KEY_WWW,150,,,,,,,258,240,,,,
-KEY_MSDOS,151,,,,,,,106,,,,,
-KEY_SCREENLOCK,152,,,,,150,,274,249,,,,
-KEY_DIRECTION,153,,,,,,,107,,,,,
-KEY_CYCLEWINDOWS,154,,,,,155,,294,,,,,
-KEY_MAIL,155,,,,,,,364,,,,,
-KEY_BOOKMARKS,156,,,,,,,358,,,,,
-KEY_COMPUTER,157,,,,,,,363,,,,,
-KEY_BACK,158,,,,,,,362,241,VK_BROWSER_BACK,0xa6,,
-KEY_FORWARD,159,,,,,,,361,242,VK_BROWSER_FORWARD,0xa7,,
-KEY_CLOSECD,160,,,,,154,,291,,,,,
-KEY_EJECTCD,161,,,,,,,108,236,,,,
-KEY_EJECTCLOSECD,162,,,,,,,381,,,,,
-KEY_NEXTSONG,163,,,,241,147,,281,235,VK_MEDIA_NEXT_TRACK,0xb0,,
-KEY_PLAYPAUSE,164,,,,173,,,290,232,VK_MEDIA_PLAY_PAUSE,0xb3,,
-KEY_PREVIOUSSONG,165,,,,250,148,,272,234,VK_MEDIA_PREV_TRACK,0xb1,,
-KEY_STOPCD,166,,,,164,152,,292,233,VK_MEDIA_STOP,0xb2,,
-KEY_RECORD,167,,,,,158,,305,,,,,
-KEY_REWIND,168,,,,,159,,280,,,,,
-KEY_PHONE,169,,,,,,,99,,,,,
-KEY_ISO,170,ISO_Section,0xa,,,,,112,,,,,
-KEY_CONFIG,171,,,,,,,257,,,,,
-KEY_HOMEPAGE,172,,,,178,151,,306,,VK_BROWSER_HOME,0xac,,
-KEY_REFRESH,173,,,,,,,359,250,VK_BROWSER_REFRESH,0xa8,,
-KEY_EXIT,174,,,,,,,113,,,,,
-KEY_MOVE,175,,,,,,,114,,,,,
-KEY_EDIT,176,,,,,,,264,247,,,,
-KEY_SCROLLUP,177,,,,,,,117,245,,,,
-KEY_SCROLLDOWN,178,,,,,,,271,246,,,,
-KEY_KPLEFTPAREN,179,,,,,,,374,182,,,,
-KEY_KPRIGHTPAREN,180,,,,,,,379,183,,,,
-KEY_NEW,181,,,,,,,265,,,,,
-KEY_REDO,182,,,,,,,266,,,,,
-KEY_F13,183,F13,0x69,93,47,127,,93,104,VK_F13,0x7c,0x6e,0x6e
-KEY_F14,184,F14,0x6b,94,55,128,,94,105,VK_F14,0x7d,0x6f,0x6f
-KEY_F15,185,F15,0x71,95,63,129,,95,106,VK_F15,0x7e,0x70,0x70
-KEY_F16,186,F16,0x6a,,,130,,85,107,VK_F16,0x7f,0x71,0x71
-KEY_F17,187,F17,0x40,,,131,,259,108,VK_F17,0x80,0x72,0x72
-KEY_F18,188,F18,0x4f,,,,,375,109,VK_F18,0x81,,
-KEY_F19,189,F19,0x50,,,,,260,110,VK_F19,0x82,,
-KEY_F20,190,F20,0x5a,,,,,90,111,VK_F20,0x83,,
-KEY_F21,191,,,,,,,116,112,VK_F21,0x84,,
-KEY_F22,192,,,,,,,377,113,VK_F22,0x85,,
-KEY_F23,193,,,,,,,109,114,VK_F23,0x86,,
-KEY_F24,194,,,,,,,111,115,VK_F24,0x87,,
-,195,,,,,,,277,,,,,
-,196,,,,,,,278,,,,,
-,197,,,,,,,282,,,,,
-,198,,,,,,,283,,,,,
-,199,,,,,,,295,,,,,
-KEY_PLAYCD,200,,,,,,,296,,,,,
-KEY_PAUSECD,201,,,,,,,297,,,,,
-KEY_PROG3,202,,,,,,,299,,,,,
-KEY_PROG4,203,,,,,,,300,,,,,
-KEY_DASHBOARD,204,,,,,,,301,,,,,
-KEY_SUSPEND,205,,,,,,,293,,,,,
-KEY_CLOSE,206,,,,,,,303,,,,,
-KEY_PLAY,207,,,,,,,307,,VK_PLAY,0xfa,,
-KEY_FASTFORWARD,208,,,,,,,308,,,,,
-KEY_BASSBOOST,209,,,,,,,310,,,,,
-KEY_PRINT,210,,,,,,,313,,VK_PRINT,0x2a,,
-KEY_HP,211,,,,,,,314,,,,,
-KEY_CAMERA,212,,,,,,,315,,,,,
-KEY_SOUND,213,,,,,,,317,,,,,
-KEY_QUESTION,214,,,,,,,318,,,,,
-KEY_EMAIL,215,,,,,,,319,,VK_LAUNCH_MAIL,0xb4,,
-KEY_CHAT,216,,,,,,,320,,,,,
-KEY_SEARCH,217,,,,,,,357,,VK_BROWSER_SEARCH,0xaa,,
-KEY_CONNECT,218,,,,,,,322,,,,,
-KEY_FINANCE,219,,,,,,,323,,,,,
-KEY_SPORT,220,,,,,,,324,,,,,
-KEY_SHOP,221,,,,,,,325,,,,,
-KEY_ALTERASE,222,,,,,,,276,,,,,
-KEY_CANCEL,223,,,,,,,330,,,,,
-KEY_BRIGHTNESSDOWN,224,,,,,,,332,,,,,
-KEY_BRIGHTNESSUP,225,,,,,,,340,,,,,
-KEY_MEDIA,226,,,,,,,365,,,,,
-KEY_SWITCHVIDEOMODE,227,,,,,,,342,,,,,
-KEY_KBDILLUMTOGGLE,228,,,,,,,343,,,,,
-KEY_KBDILLUMDOWN,229,,,,,,,344,,,,,
-KEY_KBDILLUMUP,230,,,,,,,345,,,,,
-KEY_SEND,231,,,,,,,346,,,,,
-KEY_REPLY,232,,,,,,,356,,,,,
-KEY_FORWARDMAIL,233,,,,,,,270,,,,,
-KEY_SAVE,234,,,,,,,341,,,,,
-KEY_DOCUMENTS,235,,,,,,,368,,,,,
-KEY_BATTERY,236,,,,,,,369,,,,,
-KEY_BLUETOOTH,237,,,,,,,370,,,,,
-KEY_WLAN,238,,,,,,,371,,,,,
-KEY_UWB,239,,,,,,,372,,,,,
-KEY_UNKNOWN,240,,,,,,,,,,,,
-KEY_VIDEO_NEXT,241,,,,,,,,,,,,
-KEY_VIDEO_PREV,242,,,,,,,,,,,,
-KEY_BRIGHTNESS_CYCLE,243,,,,,,,,,,,,
-KEY_BRIGHTNESS_ZERO,244,,,,,,,,,,,,
-KEY_DISPLAY_OFF,245,,,,,,,,,,,,
-KEY_WIMAX,246,,,,,,,,,,,,
-,247,,,,,,,,,,,,
-,248,,,,,,,,,,,,
-,249,,,,,,,,,,,,
-,250,,,,,,,,,,,,
-,251,,,,,,,,,,,,
-,252,,,,,,,,,,,,
-,253,,,,,,,,,,,,
-,254,,,,,,,,,,,,
-,255,,,,182,,,,,,,,
-BTN_MISC,0x100,,,,,,,,,,,,
-BTN_0,0x100,,,,,,,,,VK_LBUTTON,0x01,,
-BTN_1,0x101,,,,,,,,,VK_RBUTTON,0x02,,
-BTN_2,0x102,,,,,,,,,VK_MBUTTON,0x04,,
-BTN_3,0x103,,,,,,,,,VK_XBUTTON1,0x05,,
-BTN_4,0x104,,,,,,,,,VK_XBUTTON2,0x06,,
-BTN_5,0x105,,,,,,,,,,,,
-BTN_6,0x106,,,,,,,,,,,,
-BTN_7,0x107,,,,,,,,,,,,
-BTN_8,0x108,,,,,,,,,,,,
-BTN_9,0x109,,,,,,,,,,,,
-BTN_MOUSE,0x110,,,,,,,,,,,,
-BTN_LEFT,0x110,,,,,,,,,,,,
-BTN_RIGHT,0x111,,,,,,,,,,,,
-BTN_MIDDLE,0x112,,,,,,,,,,,,
-BTN_SIDE,0x113,,,,,,,,,,,,
-BTN_EXTRA,0x114,,,,,,,,,,,,
-BTN_FORWARD,0x115,,,,,,,,,,,,
-BTN_BACK,0x116,,,,,,,,,,,,
-BTN_TASK,0x117,,,,,,,,,,,,
-BTN_JOYSTICK,0x120,,,,,,,,,,,,
-BTN_TRIGGER,0x120,,,,,,,,,,,,
-BTN_THUMB,0x121,,,,,,,,,,,,
-BTN_THUMB2,0x122,,,,,,,,,,,,
-BTN_TOP,0x123,,,,,,,,,,,,
-BTN_TOP2,0x124,,,,,,,,,,,,
-BTN_PINKIE,0x125,,,,,,,,,,,,
-BTN_BASE,0x126,,,,,,,,,,,,
-BTN_BASE2,0x127,,,,,,,,,,,,
-BTN_BASE3,0x128,,,,,,,,,,,,
-BTN_BASE4,0x129,,,,,,,,,,,,
-BTN_BASE5,0x12a,,,,,,,,,,,,
-BTN_BASE6,0x12b,,,,,,,,,,,,
-BTN_DEAD,0x12f,,,,,,,,,,,,
-BTN_GAMEPAD,0x130,,,,,,,,,,,,
-BTN_A,0x130,,,,,,,,,,,,
-BTN_B,0x131,,,,,,,,,,,,
-BTN_C,0x132,,,,,,,,,,,,
-BTN_X,0x133,,,,,,,,,,,,
-BTN_Y,0x134,,,,,,,,,,,,
-BTN_Z,0x135,,,,,,,,,,,,
-BTN_TL,0x136,,,,,,,,,,,,
-BTN_TR,0x137,,,,,,,,,,,,
-BTN_TL2,0x138,,,,,,,,,,,,
-BTN_TR2,0x139,,,,,,,,,,,,
-BTN_SELECT,0x13a,,,,,,,,,,,,
-BTN_START,0x13b,,,,,,,,,,,,
-BTN_MODE,0x13c,,,,,,,,,,,,
-BTN_THUMBL,0x13d,,,,,,,,,,,,
-BTN_THUMBR,0x13e,,,,,,,,,,,,
-BTN_DIGI,0x140,,,,,,,,,,,,
-BTN_TOOL_PEN,0x140,,,,,,,,,,,,
-BTN_TOOL_RUBBER,0x141,,,,,,,,,,,,
-BTN_TOOL_BRUSH,0x142,,,,,,,,,,,,
-BTN_TOOL_PENCIL,0x143,,,,,,,,,,,,
-BTN_TOOL_AIRBRUSH,0x144,,,,,,,,,,,,
-BTN_TOOL_FINGER,0x145,,,,,,,,,,,,
-BTN_TOOL_MOUSE,0x146,,,,,,,,,,,,
-BTN_TOOL_LENS,0x147,,,,,,,,,,,,
-BTN_TOUCH,0x14a,,,,,,,,,,,,
-BTN_STYLUS,0x14b,,,,,,,,,,,,
-BTN_STYLUS2,0x14c,,,,,,,,,,,,
-BTN_TOOL_DOUBLETAP,0x14d,,,,,,,,,,,,
-BTN_TOOL_TRIPLETAP,0x14e,,,,,,,,,,,,
-BTN_TOOL_QUADTAP,0x14f,,,,,,,,,,,,
-BTN_WHEEL,0x150,,,,,,,,,,,,
-BTN_GEAR_DOWN,0x150,,,,,,,,,,,,
-BTN_GEAR_UP,0x151,,,,,,,,,,,,
-KEY_OK,0x160,,,,,,,,,,,,
-KEY_SELECT,0x161,,,,,,,,,VK_SELECT,0x29,,
-KEY_GOTO,0x162,,,,,,,,,,,,
-KEY_CLEAR,0x163,,,,,,,,,,,,
-KEY_POWER2,0x164,,,,,,,,,,,,
-KEY_OPTION,0x165,,,,,,,,,,,,
-KEY_INFO,0x166,,,,,,,,,,,,
-KEY_TIME,0x167,,,,,,,,,,,,
-KEY_VENDOR,0x168,,,,,,,,,,,,
-KEY_ARCHIVE,0x169,,,,,,,,,,,,
-KEY_PROGRAM,0x16a,,,,,,,,,,,,
-KEY_CHANNEL,0x16b,,,,,,,,,,,,
-KEY_FAVORITES,0x16c,,,,,,,,,VK_BROWSER_FAVOURITES,0xab,,
-KEY_EPG,0x16d,,,,,,,,,,,,
-KEY_PVR,0x16e,,,,,,,,,,,,
-KEY_MHP,0x16f,,,,,,,,,,,,
-KEY_LANGUAGE,0x170,,,,,,,,,,,,
-KEY_TITLE,0x171,,,,,,,,,,,,
-KEY_SUBTITLE,0x172,,,,,,,,,,,,
-KEY_ANGLE,0x173,,,,,,,,,,,,
-KEY_ZOOM,0x174,,,,,,,,,VK_ZOOM,0xfb,,
-KEY_MODE,0x175,,,,,,,,,,,,
-KEY_KEYBOARD,0x176,,,,,,,,,,,,
-KEY_SCREEN,0x177,,,,,,,,,,,,
-KEY_PC,0x178,,,,,,,,,,,,
-KEY_TV,0x179,,,,,,,,,,,,
-KEY_TV2,0x17a,,,,,,,,,,,,
-KEY_VCR,0x17b,,,,,,,,,,,,
-KEY_VCR2,0x17c,,,,,,,,,,,,
-KEY_SAT,0x17d,,,,,,,,,,,,
-KEY_SAT2,0x17e,,,,,,,,,,,,
-KEY_CD,0x17f,,,,,,,,,,,,
-KEY_TAPE,0x180,,,,,,,,,,,,
-KEY_RADIO,0x181,,,,,,,,,,,,
-KEY_TUNER,0x182,,,,,,,,,,,,
-KEY_PLAYER,0x183,,,,,,,,,,,,
-KEY_TEXT,0x184,,,,,,,,,,,,
-KEY_DVD,0x185,,,,,,,,,,,,
-KEY_AUX,0x186,,,,,,,,,,,,
-KEY_MP3,0x187,,,,,,,,,,,,
-KEY_AUDIO,0x188,,,,,,,,,,,,
-KEY_VIDEO,0x189,,,,,,,,,,,,
-KEY_DIRECTORY,0x18a,,,,,,,,,,,,
-KEY_LIST,0x18b,,,,,,,,,,,,
-KEY_MEMO,0x18c,,,,,,,,,,,,
-KEY_CALENDAR,0x18d,,,,,,,,,,,,
-KEY_RED,0x18e,,,,,,,,,,,,
-KEY_GREEN,0x18f,,,,,,,,,,,,
-KEY_YELLOW,0x190,,,,,,,,,,,,
-KEY_BLUE,0x191,,,,,,,,,,,,
-KEY_CHANNELUP,0x192,,,,,,,,,,,,
-KEY_CHANNELDOWN,0x193,,,,,,,,,,,,
-KEY_FIRST,0x194,,,,,,,,,,,,
-KEY_LAST,0x195,,,,,,,,,,,,
-KEY_AB,0x196,,,,,,,,,,,,
-KEY_NEXT,0x197,,,,,,,,,,,,
-KEY_RESTART,0x198,,,,,,,,,,,,
-KEY_SLOW,0x199,,,,,,,,,,,,
-KEY_SHUFFLE,0x19a,,,,,,,,,,,,
-KEY_BREAK,0x19b,,,,,,,,,,,,
-KEY_PREVIOUS,0x19c,,,,,,,,,,,,
-KEY_DIGITS,0x19d,,,,,,,,,,,,
-KEY_TEEN,0x19e,,,,,,,,,,,,
-KEY_TWEN,0x19f,,,,,,,,,,,,
-KEY_VIDEOPHONE,0x1a0,,,,,,,,,,,,
-KEY_GAMES,0x1a1,,,,,,,,,,,,
-KEY_ZOOMIN,0x1a2,,,,,,,,,,,,
-KEY_ZOOMOUT,0x1a3,,,,,,,,,,,,
-KEY_ZOOMRESET,0x1a4,,,,,,,,,,,,
-KEY_WORDPROCESSOR,0x1a5,,,,,,,,,,,,
-KEY_EDITOR,0x1a6,,,,,,,,,,,,
-KEY_SPREADSHEET,0x1a7,,,,,,,,,,,,
-KEY_GRAPHICSEDITOR,0x1a8,,,,,,,,,,,,
-KEY_PRESENTATION,0x1a9,,,,,,,,,,,,
-KEY_DATABASE,0x1aa,,,,,,,,,,,,
-KEY_NEWS,0x1ab,,,,,,,,,,,,
-KEY_VOICEMAIL,0x1ac,,,,,,,,,,,,
-KEY_ADDRESSBOOK,0x1ad,,,,,,,,,,,,
-KEY_MESSENGER,0x1ae,,,,,,,,,,,,
-KEY_DISPLAYTOGGLE,0x1af,,,,,,,,,,,,
-KEY_SPELLCHECK,0x1b0,,,,,,,,,,,,
-KEY_LOGOFF,0x1b1,,,,,,,,,,,,
-KEY_DOLLAR,0x1b2,,,,,,,,,,,,
-KEY_EURO,0x1b3,,,,,,,,,,,,
-KEY_FRAMEBACK,0x1b4,,,,,,,,,,,,
-KEY_FRAMEFORWARD,0x1b5,,,,,,,,,,,,
-KEY_CONTEXT_MENU,0x1b6,,,,,,,,,,,,
-KEY_MEDIA_REPEAT,0x1b7,,,,,,,,,,,,
-KEY_DEL_EOL,0x1c0,,,,,,,,,,,,
-KEY_DEL_EOS,0x1c1,,,,,,,,,,,,
-KEY_INS_LINE,0x1c2,,,,,,,,,,,,
-KEY_DEL_LINE,0x1c3,,,,,,,,,,,,
-KEY_FN,0x1d0,,,,,,,,,,,,
-KEY_FN_ESC,0x1d1,,,,,,,,,,,,
-KEY_FN_F1,0x1d2,,,,,,,,,,,,
-KEY_FN_F2,0x1d3,,,,,,,,,,,,
-KEY_FN_F3,0x1d4,,,,,,,,,,,,
-KEY_FN_F4,0x1d5,,,,,,,,,,,,
-KEY_FN_F5,0x1d6,,,,,,,,,,,,
-KEY_FN_F6,0x1d7,,,,,,,,,,,,
-KEY_FN_F7,0x1d8,,,,,,,,,,,,
-KEY_FN_F8,0x1d9,,,,,,,,,,,,
-KEY_FN_F9,0x1da,,,,,,,,,,,,
-KEY_FN_F10,0x1db,,,,,,,,,,,,
-KEY_FN_F11,0x1dc,,,,,,,,,,,,
-KEY_FN_F12,0x1dd,,,,,,,,,,,,
-KEY_FN_1,0x1de,,,,,,,,,,,,
-KEY_FN_2,0x1df,,,,,,,,,,,,
-KEY_FN_D,0x1e0,,,,,,,,,,,,
-KEY_FN_E,0x1e1,,,,,,,,,,,,
-KEY_FN_F,0x1e2,,,,,,,,,,,,
-KEY_FN_S,0x1e3,,,,,,,,,,,,
-KEY_FN_B,0x1e4,,,,,,,,,,,,
-KEY_BRL_DOT1,0x1f1,,,,,,,,,,,,
-KEY_BRL_DOT2,0x1f2,,,,,,,,,,,,
-KEY_BRL_DOT3,0x1f3,,,,,,,,,,,,
-KEY_BRL_DOT4,0x1f4,,,,,,,,,,,,
-KEY_BRL_DOT5,0x1f5,,,,,,,,,,,,
-KEY_BRL_DOT6,0x1f6,,,,,,,,,,,,
-KEY_BRL_DOT7,0x1f7,,,,,,,,,,,,
-KEY_BRL_DOT8,0x1f8,,,,,,,,,,,,
-KEY_BRL_DOT9,0x1f9,,,,,,,,,,,,
-KEY_BRL_DOT10,0x1fa,,,,,,,,,,,,
-KEY_NUMERIC_0,0x200,,,,,,,,,,,,
-KEY_NUMERIC_1,0x201,,,,,,,,,,,,
-KEY_NUMERIC_2,0x202,,,,,,,,,,,,
-KEY_NUMERIC_3,0x203,,,,,,,,,,,,
-KEY_NUMERIC_4,0x204,,,,,,,,,,,,
-KEY_NUMERIC_5,0x205,,,,,,,,,,,,
-KEY_NUMERIC_6,0x206,,,,,,,,,,,,
-KEY_NUMERIC_7,0x207,,,,,,,,,,,,
-KEY_NUMERIC_8,0x208,,,,,,,,,,,,
-KEY_NUMERIC_9,0x209,,,,,,,,,,,,
-KEY_NUMERIC_STAR,0x20a,,,,,,,,,,,,
-KEY_NUMERIC_POUND,0x20b,,,,,,,,,,,,
-KEY_RFKILL,0x20c,,,,,,,,,,,,
diff --git a/src/util/virkeycode-mapgen.py b/src/util/virkeycode-mapgen.py
deleted file mode 100755
index 8360bfe..0000000
--- a/src/util/virkeycode-mapgen.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/usr/bin/python
-
-"""
-Generate the big keycodes table for virkeys.
-It read keymaps.csv from stdin and put the generated code to stdout.
-
-Please keep keymaps.csv be exactly the same as:
-http://git.gnome.org/browse/gtk-vnc/plain/src/keymaps.csv.
-If anything inconsistent happens, please change this file
-instead of keymaps.csv which is a mirror.
-"""
-
-import sys
-import re
-
-cols = (
-    ["linux", True],
-    ["linux", False],
-    ["os_x", True],
-    ["os_x", False],
-    ["atset1", False],
-
-    ["atset2", False],
-    ["atset3", False],
-    ["xt", False],
-    ["xt_kbd", False],
-    ["usb", False],
-
-    ["win32", True],
-    ["win32", False],
-    [None, False],
-    [None, False],
-    ["rfb", False],
-)
-
-xtkbdkey_index = 8
-
-def quotestring(str):
-    if str[0] != '"':
-        return '"' + str + '"'
-    return str
-
-print '''
-/* Generated file, DON'T edit it */
-
-#ifndef VIRT_KEY_INTERNAL
-# error do not use this; it is not a public header
-#endif
-
-'''
-
-sys.stdin.readline() # eat the fist line.
-
-keycodes = []
-
-max = 0
-
-for line in sys.stdin.xreadlines():
-    values = re.match("([^,]*)," * 13 + "([^,]*)$", line[0:-1]).groups()
-
-    data = []
-    for v in values:
-        data.append(v)
-
-    # RFB keycodes are XT kbd keycodes with a slightly
-    # different encoding of 0xe0 scan codes. RFB uses
-    # the high bit of the first byte, instead of the low
-    # bit of the second byte.
-    rfbkey = int(data[xtkbdkey_index] or '0')
-    rfbkey = (rfbkey & 0x100) >> 1 | (rfbkey & 0x7f)
-    data.append("%d" % rfbkey)
-
-    keycodes.append(data)
-    max = max + 1
-
-print "#define VIR_KEYMAP_ENTRY_MAX " + str(max)
-
-for i in range(len(cols)):
-    col=cols[i]
-    name=col[0]
-    isname=col[1]
-
-    if name is None:
-        continue
-
-    if isname:
-        print "const char *virKeymapNames_" + name + "[] = {"
-    else:
-        print "int virKeymapValues_" + name + "[] = {"
-
-    for entry in keycodes:
-        if isname:
-            print "  " + quotestring(entry[i] or "NULL") + ","
-        else:
-            print "  " + (entry[i] or "-1") + ","
-
-    print "};\n"
diff --git a/src/util/virkeycode.c b/src/util/virkeycode.c
index 7880a0a..b50d917 100644
--- a/src/util/virkeycode.c
+++ b/src/util/virkeycode.c
@@ -22,57 +22,53 @@
 #include <string.h>
 #include <stddef.h>
 
-
-#define VIRT_KEY_INTERNAL
-#include "virkeymaps.h"
-
-static const char **virKeymapNames[] = {
-    [VIR_KEYCODE_SET_LINUX] =
-      virKeymapNames_linux,
-    [VIR_KEYCODE_SET_XT] =
-      NULL,
-    [VIR_KEYCODE_SET_ATSET1] =
-      NULL,
-    [VIR_KEYCODE_SET_ATSET2] =
-      NULL,
-    [VIR_KEYCODE_SET_ATSET3] =
-      NULL,
-    [VIR_KEYCODE_SET_OSX] =
-      virKeymapNames_os_x,
-    [VIR_KEYCODE_SET_XT_KBD] =
-      NULL,
-    [VIR_KEYCODE_SET_USB] =
-      NULL,
-    [VIR_KEYCODE_SET_WIN32] =
-      virKeymapNames_win32,
-    [VIR_KEYCODE_SET_RFB] =
-      NULL,
+#include "virkeycodetable_atset1.h"
+#include "virkeycodetable_atset2.h"
+#include "virkeycodetable_atset3.h"
+#include "virkeycodetable_linux.h"
+#include "virkeycodetable_osx.h"
+#include "virkeycodetable_rfb.h"
+#include "virkeycodetable_usb.h"
+#include "virkeycodetable_win32.h"
+#include "virkeycodetable_xt.h"
+#include "virkeycodetable_xtkbd.h"
+#include "virkeynametable_linux.h"
+#include "virkeynametable_osx.h"
+#include "virkeynametable_win32.h"
+
+static const char **virKeymapNames[VIR_KEYCODE_SET_LAST] = {
+    [VIR_KEYCODE_SET_LINUX] = virKeyNameTable_linux,
+    [VIR_KEYCODE_SET_OSX] = virKeyNameTable_osx,
+    [VIR_KEYCODE_SET_WIN32] = virKeyNameTable_win32,
 };
-verify(ARRAY_CARDINALITY(virKeymapNames) == VIR_KEYCODE_SET_LAST);
-
-static int *virKeymapValues[] = {
-    [VIR_KEYCODE_SET_LINUX] =
-      virKeymapValues_linux,
-    [VIR_KEYCODE_SET_XT] =
-      virKeymapValues_xt,
-    [VIR_KEYCODE_SET_ATSET1] =
-      virKeymapValues_atset1,
-    [VIR_KEYCODE_SET_ATSET2] =
-      virKeymapValues_atset2,
-    [VIR_KEYCODE_SET_ATSET3] =
-      virKeymapValues_atset3,
-    [VIR_KEYCODE_SET_OSX] =
-      virKeymapValues_os_x,
-    [VIR_KEYCODE_SET_XT_KBD] =
-      virKeymapValues_xt_kbd,
-    [VIR_KEYCODE_SET_USB] =
-      virKeymapValues_usb,
-    [VIR_KEYCODE_SET_WIN32] =
-      virKeymapValues_win32,
-    [VIR_KEYCODE_SET_RFB] =
-      virKeymapValues_rfb,
+
+static const unsigned short *virKeymapValues[VIR_KEYCODE_SET_LAST] = {
+    [VIR_KEYCODE_SET_LINUX] = virKeyCodeTable_linux,
+    [VIR_KEYCODE_SET_XT] = virKeyCodeTable_xt,
+    [VIR_KEYCODE_SET_ATSET1] = virKeyCodeTable_atset1,
+    [VIR_KEYCODE_SET_ATSET2] = virKeyCodeTable_atset2,
+    [VIR_KEYCODE_SET_ATSET3] = virKeyCodeTable_atset3,
+    [VIR_KEYCODE_SET_OSX] = virKeyCodeTable_osx,
+    [VIR_KEYCODE_SET_XT_KBD] = virKeyCodeTable_xtkbd,
+    [VIR_KEYCODE_SET_USB] = virKeyCodeTable_usb,
+    [VIR_KEYCODE_SET_WIN32] = virKeyCodeTable_win32,
+    [VIR_KEYCODE_SET_RFB] = virKeyCodeTable_rfb,
 };
-verify(ARRAY_CARDINALITY(virKeymapValues) == VIR_KEYCODE_SET_LAST);
+
+#define VIR_KEYMAP_ENTRY_MAX ARRAY_CARDINALITY(virKeyCodeTable_linux)
+
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_xt));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_atset1));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_atset2));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_atset3));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_osx));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_xtkbd));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_usb));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_win32));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_rfb));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyNameTable_linux));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyNameTable_osx));
+verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyNameTable_win32));
 
 VIR_ENUM_IMPL(virKeycodeSet, VIR_KEYCODE_SET_LAST,
     "linux",
diff --git a/tests/virkeycodetest.c b/tests/virkeycodetest.c
index d092209..a9781df 100644
--- a/tests/virkeycodetest.c
+++ b/tests/virkeycodetest.c
@@ -57,6 +57,9 @@ static int testKeycodeMapping(const void *data ATTRIBUTE_UNUSED)
     TRANSLATE(LINUX, RFB, 88, 88);
     TRANSLATE(LINUX, RFB, 160, 163);
     TRANSLATE(ATSET2, ATSET3, 259, 55);
+    TRANSLATE(OSX, WIN32, 90, 131);
+    TRANSLATE(OSX, ATSET1, 90, 0);
+    TRANSLATE(OSX, ATSET1, 3200, -1);
 
 #undef TRANSLATE
 
@@ -82,6 +85,8 @@ static int testKeycodeStrings(const void *data ATTRIBUTE_UNUSED)
     } while (0)
 
     TRANSLATE(LINUX, "KEY_DELETE", 111);
+    TRANSLATE(LINUX, "KEY_RFKILL", 524);
+    TRANSLATE(LINUX, "KEY_WIBBLE", -1);
     TRANSLATE(OSX, "Function", 0x3f);
     TRANSLATE(WIN32, "VK_UP", 0x26);
 
-- 
2.9.3

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v2 1/2] util: switch over to use keycodemapdb GIT submodule
Posted by Andrea Bolognani 8 years, 10 months ago
On Fri, 2017-03-03 at 16:54 +0000, Daniel P. Berrange wrote:
[...]
> @@ -1,3 +1,6 @@
>  [submodule "gnulib"]
>  	path = .gnulib
>  	url = git://git.sv.gnu.org/gnulib.git
> +[submodule "src/keycodemapdb"]
> +	path = src/keycodemapdb
> +	url = https://gitlab.com/keycodemap/keycodemapdb.git

I think you'll need to update bootstrap_hash() in autogen.sh
to ignore this new submodule, so that it won't run gnulib's
bootstrap every time we update keycodemapdb.

I'm also wondering whether we can avoid having all developers
run 'git submodule init && git submodule update' after these
changes have been pushed...

[...]
> +EXTRA_DIST += $(srcdir)/keycodemapdb/data/keymaps.csv \
> +		$(srcdir)/keycodemapdb/tools/keymap-gen

Please change this into

EXTRA_DIST += \
    $(srcdir)/keycodemapdb/data/keymaps.csv \
    $(srcdir)/keycodemapdb/tools/keymap-gen \
    $(NULL)

Same for other multi-line lists you define later, like
$(KEYTABLES).

[...]
> +util/virkeycodetable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \
> +			$(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am
> +	$(AM_V_GEN)export NAME=`echo $@ | sed -e 's,util/virkeycodetable_,,' \
> +					      -e 's,\.h,,'` && \
> +		$(MKDIR_P) util/ && \
> +		$(PYTHON) $(srcdir)/keycodemapdb/tools/keymap-gen \
> +		--lang stdc --varname virKeyCodeTable_$$NAME code-table \
> +		$(srcdir)/keycodemapdb/data/keymaps.csv $$NAME > \
> +			$@-tmp && mv $@-tmp $@ || rm $@-tmp
> +
> +util/virkeynametable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \
> +			$(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am
> +	$(AM_V_GEN)export NAME=`echo $@ | sed -e 's,util/virkeynametable_,,' \
> +					      -e 's,\.h,,'` && \
> +		$(MKDIR_P) util/ && \
> +		$(PYTHON) $(srcdir)/keycodemapdb/tools/keymap-gen \
> +		--lang stdc --varname virKeyNameTable_$$NAME name-table \
> +		$(srcdir)/keycodemapdb/data/keymaps.csv $$NAME > \
> +			$@-tmp && mv $@-tmp $@ || rm $@-tmp

Do you really need the dependency on Makefile.am there?

You could also use 'rm -f' instead of plain rm and reformat
the shell snippets a bit so that they look better.

[...]
> +#define VIR_KEYMAP_ENTRY_MAX ARRAY_CARDINALITY(virKeyCodeTable_linux)
> +
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_xt));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_atset1));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_atset2));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_atset3));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_osx));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_xtkbd));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_usb));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_win32));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyCodeTable_rfb));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyNameTable_linux));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyNameTable_osx));
> +verify(ARRAY_CARDINALITY(virKeyCodeTable_linux) == ARRAY_CARDINALITY(virKeyNameTable_win32));

You can use VIR_KEYMAP_ENTRY_MAX, which you've just defined,
instead of calling ARRAY_CARDINALITY() over and over.

-- 
Andrea Bolognani / Red Hat / Virtualization

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list