[libvirt] [PATCH] Post-release version bump to 3.2.0
by Andrea Bolognani
---
Pushed as trivial.
configure.ac | 2 +-
docs/news.xml | 8 ++++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index ed49daa..e61ab7b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@ dnl You should have received a copy of the GNU Lesser General Public
dnl License along with this library. If not, see
dnl <http://www.gnu.org/licenses/>.
-AC_INIT([libvirt], [3.1.0], [libvir-list(a)redhat.com], [], [http://libvirt.org])
+AC_INIT([libvirt], [3.2.0], [libvir-list(a)redhat.com], [], [http://libvirt.org])
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_HEADERS([config.h])
diff --git a/docs/news.xml b/docs/news.xml
index 3cb93c3..bb67619 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -10,6 +10,14 @@
and optionally a description where it's explained in more detail -->
<libvirt>
+ <release version="v3.2.0" date="unreleased">
+ <section title="New features">
+ </section>
+ <section title="Improvements">
+ </section>
+ <section title="Bug fixes">
+ </section>
+ </release>
<release version="v3.1.0" date="2017-03-03">
<section title="New features">
<change>
--
2.7.4
7 years, 9 months
[libvirt] Availability of libvirt-3.1.0
by Daniel Veillard
I'm a bit late but I finally pushed the release, the signed tarball and rpms
are at the usual place:
ftp://libvirt.org/libvirt/
I also pushed a libvirt-python release that one can find at
ftp://libvirt.org/libvirt/python/
* New features
- storage: Add Virtuozzo storage backend storage pool
Add new storage backend to support pool and volume management within
the Virtuozzo Storage environment. Virtuozzo Storage is a highly
available distributed software defined storage with built-in
replication and disaster recovery.
- qemu: Add support for memory backing with file source
Add support in numa topology for file source inside memory backing
(hugepages are not needed) Three new elements <source/>,<access/> and
<allocation/> were added to <memoryBacking/> element. Also new
configuration parameter memory_backing_dir was added to qemu.conf.
- network: make openvswitch call timeout configurable
Adding the ability to specify the timeout value in seconds for
openvswitch calls in the libvirtd configuration file.
- bhyve: add e1000 NIC support
Add support for e1000 NIC. Previously, the only available option was
virtio-net.
- libxl: add tunneled migration support
Add tunneled migration to libxl driver, which is always capable of
strong encryption and doesn't require any extra network connection
other than what's required for remote access of libvirtd.
- qemu: add rendernode argument
Add a new attribute 'rendernode' to <gl> spice element.
- nodedev: add drm capability
Add a new 'drm' capability for Direct Rendering Manager (DRM) devices,
providing device type information.
- Add API for individual/specific vCPU hotplug
The new API allows selecting specific vCPUs to be added/removed from
the VM. The existing APIs allowed only adding/removing from the end
which did not play well with NUMA.
* Improvements
- virsh: pool-list: allow both --uuid and --name in one command
Adjust the virsh-pool command to support the --uuid and/or --name
options in order to print just the --name and/or --uuid of pools.
- Introduce MTU to domain <interface/> and <network>
Allow setting MTU size for some types of domain interface and network.
- libxl: improve support for <timer> configurations
Add support for multiple timers. Extend the tsc timer to support the
emulate mode. Improve conversion of timer XML to/from xl.cfg.
- storage: modularize the storage driver
Split up the storage driver backends into loadable modules so that
binary distributions don't have to compromise on shipping the storage
driver with all backends which may pull in too many dependencies.
* Bug fixes
- nodedev: Fabric name must not be required for fc_host capability
fabric_name is one of many fc_host attributes in Linux that is optional
and left to the low-level driver to decide if it is implemented. For
example the zfcp device driver does not provide a fabric name for an
fcp host. The requirement for the existence of a fabric name has been
removed by making it optional.
- bhyve: change address allocation schema for SATA disks
Previously, the bhyve driver assigned PCI addresses to SATA disks
directly rather than assigning that to a controller and using SATA
addresses for disks. It was implemented this way because bhyve has no
notion of an explicit SATA controller. However, as this doesn't match
libvirt's understanding of disk addresses, the bhyve driver was changed
to follow the common schema and have PCI addresses for SATA controllers
and SATA addresses for disks. If you're having issues because of this,
it's recommended to edit the domain's XML and remove <address
type='pci'> from the <disk> elements with <target bus='sata'/> and let
libvirt regenerate it properly.
- libxl: maximum memory fixes
Fix reporting of domain maximum memory. Fix setting dom0 maximum
memory.
- libxl: fix disk detach when <driver> not specified
- libxl: fix dom0 autoballooning with Xen 4.8
- qemu: Allow empty script path to <interface/>
Historically, this was always allowed. Unfortunately, due to some
rework done for 1.3.2 release a bug was dragged in which suddenly stop
allowing domain with such configuration to start.
Thanks everybody for your contributions for this release, be it with
code, bug reports, ideas, etc....
Enjoy the release !
Daniel
--
Daniel Veillard | Red Hat Developers Tools http://developer.redhat.com/
veillard(a)redhat.com | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
http://veillard.com/ | virtualization library http://libvirt.org/
7 years, 9 months
[libvirt] [RFC v2 0/2] vireventpoll implimentation using epoll
by Derbyshev Dmitriy
From: Derbyshev Dmitry <dderbyshev(a)virtuozzo.com>
Provides about 20% boost on local machine with 35 vms.
virEventPollDispatchHandles can also be split to pass cb via epoll
data field.
Should start sending as PATCH instead?
Changes since v1:
* ifdef supstituded by 2 .c files with vireventpollinternal.h
implementations
* PROBE purged
Derbyshev Dmitry (2):
vireventpoll: isolate common code
vireventpoll implimentation using epoll
configure.ac | 28 +
src/Makefile.am | 12 +-
src/util/vireventepoll.c | 201 +++++++
src/util/vireventpoll.c | 700 ++--------------------
src/util/{vireventpoll.c => vireventpollcommon.c} | 231 ++-----
src/util/vireventpollinternal.h | 91 +++
tests/commanddata/{test14.log => test3epoll.log} | 2 +
tests/commandtest.c | 4 +
8 files changed, 451 insertions(+), 818 deletions(-)
create mode 100644 src/util/vireventepoll.c
copy src/util/{vireventpoll.c => vireventpollcommon.c} (78%)
create mode 100644 src/util/vireventpollinternal.h
copy tests/commanddata/{test14.log => test3epoll.log} (94%)
--
1.9.5.msysgit.0
7 years, 9 months
[libvirt] [PATCH 0/2] qemu: Tiny cleanups
by Andrea Bolognani
Andrea Bolognani (2):
qemu: Don't omit parentheses
qemu: Use ARCH_IS_X86() more
src/qemu/qemu_capabilities.c | 17 ++++++-----------
src/qemu/qemu_parse_command.c | 6 ++----
2 files changed, 8 insertions(+), 15 deletions(-)
--
2.7.4
7 years, 9 months
[libvirt] [PATCH 0/2] Test suite fixes and small cleanups
by Andrea Bolognani
Andrea Bolognani (2):
qemu: Drop QEMU_CAPS_PCI_MULTIBUS
tests: Fix aliases for pSeries buses
src/qemu/qemu_capabilities.c | 36 ++++++++--------------
src/qemu/qemu_capabilities.h | 2 +-
src/qemu/qemu_capspriv.h | 4 +++
tests/qemucapabilitiesdata/caps_1.2.2.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_1.3.1.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_1.4.2.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 -
tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 -
.../qemuxml2argv-memory-hotplug-ppc64-nonuma.args | 2 +-
tests/qemuxml2argvdata/qemuxml2argv-ppc-dtb.args | 2 +-
.../qemuxml2argv-ppc64-usb-controller-legacy.args | 2 +-
.../qemuxml2argv-ppc64-usb-controller.args | 4 +--
.../qemuxml2argv-ppce500-serial.args | 2 +-
.../qemuxml2argv-pseries-usb-default.args | 2 +-
.../qemuxml2argv-pseries-usb-kbd.args | 2 +-
.../qemuxml2argv-pseries-usb-multi.args | 4 +--
tests/qemuxml2argvtest.c | 8 +++--
25 files changed, 32 insertions(+), 51 deletions(-)
--
2.7.4
7 years, 9 months
[libvirt] [PATCH] Add aarch64 to virArch
by Matwey V. Kornilov
Hello,
This patch is for allowing 32-bit ARMs for aarch64 hosts. Exact 32-bit
personality for aarch64 is aarch32, but there is no such arch in libvirt, so we
use arvm7l instead.
Matwey V. Kornilov (1):
Add aarch64 to virArch
src/lxc/lxc_container.c | 2 ++
1 file changed, 2 insertions(+)
--
2.1.4
7 years, 9 months
[libvirt] [PATCH 0/3] Split out node device object into its own module
by John Ferlan
Feedback from the initial pass at RFC for making a common pool object was
that it got really confusing trying to manage the multitude of changes.
See patch 3 of the series:
http://www.redhat.com/archives/libvir-list/2017-February/msg00519.html
So while I figure out what it'll take to make a better object framework,
I figure I could start splitting out things a bit to make future work a
bit easier to understand. Also rather than trying to do them all in
one massive series, I can do shorter series contained to each of the
driver conf's.
Besides let's figure out whether all the thoughts and ideas are good.
I would think moving to virnodedeviceobj wouldn't be an issue (other
than needing to deal with backports). However, I'm sure there could
be some "alternate opinions" over whether to make static functions not
start with vir[DriverSubsystem] and rather go with driverSubsystem.
Changing the API's to use the Obj is mainly a consistency thing.
Let's see what falls out of this before I start queuing up other ones
as it's a lot of rote work!
John Ferlan (3):
conf: Introduce virnodedeviceobj
conf: Clean up nodedev code
conf: Use consistent function name prefixes for virnodedeviceobj
po/POTFILES.in | 1 +
src/Makefile.am | 3 +-
src/conf/node_device_conf.c | 981 +++++++++--------------------------
src/conf/node_device_conf.h | 50 --
src/conf/virnodedeviceobj.c | 558 ++++++++++++++++++++
src/conf/virnodedeviceobj.h | 78 +++
src/libvirt_private.syms | 23 +-
src/node_device/node_device_driver.c | 24 +-
src/node_device/node_device_driver.h | 2 +-
src/node_device/node_device_hal.c | 10 +-
src/node_device/node_device_udev.c | 12 +-
src/test/test_driver.c | 29 +-
12 files changed, 940 insertions(+), 831 deletions(-)
create mode 100644 src/conf/virnodedeviceobj.c
create mode 100644 src/conf/virnodedeviceobj.h
--
2.9.3
7 years, 9 months
[libvirt] [PATCH] util: switch over to use keycodemapdb GIT submodule
by Daniel P. Berrange
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(a)redhat.com>
---
.gitignore | 3 +-
.gitmodules | 3 +
src/Makefile.am | 41 ++--
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, 85 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..88a0622 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,34 @@ 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..b2976e7
--- /dev/null
+++ b/src/keycodemapdb
@@ -0,0 +1 @@
+Subproject commit b2976e7ed714400a3967ebb430bda45d1c253c20
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
7 years, 9 months
[libvirt] [PATCH v2 00/14] Add TLS support for migration
by John Ferlan
v1: http://www.redhat.com/archives/libvir-list/2017-February/msg00897.html
v1 cover letter reiterated:
Patches 1, 3 -> 9 are primarily quite a bit of code motion in order to allow
reuse of the "core" of the chardev TLS code.
Theoretically speaking of course, these patches should work - I don't
have a TLS and migration environment to test with, so between following
the qemu command model on Daniel's blog and prior experience with the
chardev TLS would
I added the saving of a flag to the private qemu domain state, although
I'm not 100% sure it was necessary. At one time I created the source TLS
objects during the Begin phase, but later decided to wait until just
before the migration is run. I think the main reason to have the flag
would be a restart of libvirtd to let 'something' know migration using
TLS was configured. I think it may only be "necessary" in order to
repopulate the migSecinfo after libvirtd restart, but it's not entirely
clear. By the time I started thinking more about while writing this cover
letter it was too late to just remove.
Also rather than create the destination host TLS objects on the fly,
I modified the command line generation. That model could change to adding
the TLS objects once the destination is started and before the params are
set for the migration.
This 'model' is also going to be used for the NBD, but I figured I'd get
this posted now since it was already too long of a series.
v2: Changes
Reorder the patches to put the reused 'chardev' code up front. Most of
these patches were "ok" along the way, but only one was officially ACK'd
(and that was pushed).
Patch1 is new - based off code review comment to create a common New
function for secinfo allocation
Patch2 is adjusted to use Patch1
Patch3 is new based on review comment and having ExitMonitor outside
the virSaveLastError ... virSetError
Patch4 mainly follows older logic with adjustments as suggested during
code review
Patch5 -> Patch8 had minor changes as a result of other suggestions
Patch9 just removed the _set logic
Patch10 fixed the order/placement of VIR_MIGRATE_TLS
Patch11 is the old patch1 w/ the fixed #undef
Patch12 is the old patch2 w/o changes
Patch13 Alters the server logic to create the objects on the fly rather
that via command line. It also introduces 3 helpers to perform the
migration TLS manipulation
Patch14 similarly uses those API's
AFAIU - removal of the objects would remove the migration tls-creds,
tls-hostname settings.
NB:
I left the cfg->migrateTLS in for now - it's very simple to remove, but
there would still need to be a key on something to ensure the migrateTLS
environment has been properly configured since that would mean the default
environment would need to be used/configured. Setting up the default
environment is keyed off having the migrateTLS defined. That's all part
of the qemu_conf reading logic.
John Ferlan (14):
qemu: Introduce qemuDomainSecretInfoNew
qemu: Introduce qemuDomainSecretMigratePrepare
qemu: Move exit monitor calls in failure paths
qemu: Refactor hotplug to introduce qemuDomain{Add|Del}TLSObjects
qemu: Refactor qemuDomainGetChardevTLSObjects to converge code
qemu: Move qemuDomainSecretChardevPrepare call
qemu: Move qemuDomainPrepareChardevSourceTLS call
qemu: Introduce qemuDomainGetTLSObjects
qemu: Add TLS params to _qemuMonitorMigrationParams
Add new migration flag VIR_MIGRATE_TLS
qemu: Create #define for TLS configuration setup.
conf: Introduce migrate_tls_x509_cert_dir
qemu: Set up the migrate TLS objects for target
qemu: Set up the migration TLS objects for source
include/libvirt/libvirt-domain.h | 8 +
src/qemu/libvirtd_qemu.aug | 6 +
src/qemu/qemu.conf | 39 +++++
src/qemu/qemu_conf.c | 45 +++--
src/qemu/qemu_conf.h | 5 +
src/qemu/qemu_domain.c | 195 +++++++++++++--------
src/qemu/qemu_domain.h | 89 ++++++----
src/qemu/qemu_hotplug.c | 343 ++++++++++++++++++++-----------------
src/qemu/qemu_hotplug.h | 24 +++
src/qemu/qemu_migration.c | 200 +++++++++++++++++++++
src/qemu/qemu_migration.h | 3 +-
src/qemu/qemu_monitor.c | 11 +-
src/qemu/qemu_monitor.h | 3 +
src/qemu/qemu_monitor_json.c | 10 ++
src/qemu/test_libvirtd_qemu.aug.in | 4 +
tools/virsh-domain.c | 7 +
16 files changed, 705 insertions(+), 287 deletions(-)
--
2.9.3
7 years, 9 months
[libvirt] [PATCH] qemu: command: Truncate the chardev logging file even if append is not present
by Peter Krempa
Our documentation states that the chardev logging file is truncated
unless append='on' is specified. QEMU also behaves the same way and
truncates the file unless we provide the argument. The new virlogd
implementation did not honor if the argument was missing and continued
to append to the file.
Truncate the file even when the 'append' attribute is present to behave
the same with both implementations and adhere to the docs.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1420205
---
src/qemu/qemu_command.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 41eecfd18..46bd2e268 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -4827,7 +4827,8 @@ qemuBuildChrChardevFileStr(virLogManagerPtr logManager,
int flags = 0;
int logfd;
- if (appendval == VIR_TRISTATE_SWITCH_OFF)
+ if (appendval == VIR_TRISTATE_SWITCH_ABSENT ||
+ appendval == VIR_TRISTATE_SWITCH_OFF)
flags |= VIR_LOG_MANAGER_PROTOCOL_DOMAIN_OPEN_LOG_FILE_TRUNCATE;
if ((logfd = virLogManagerDomainOpenLogFile(logManager,
--
2.11.0
7 years, 9 months