aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2017-10-17 10:03:33 +0100
committerPeter Maydell <peter.maydell@linaro.org>2017-10-17 10:03:33 +0100
commita4faa26857694fa87d96d15ad5b6afa8fbc2c900 (patch)
tree07c06b223e68703a2fef35a21d535a9f39e99897
parente24cdd07216890d24468cdcbdd5a3e60b3e9f23b (diff)
parent2ff408de9c080f2fb5a94ebf6a209c6180c64933 (diff)
Merge remote-tracking branch 'remotes/kraxel/tags/ui-20171016-pull-request' into staging
ui: use keycodemapdb for key code mappings, part one (v2) ui: add qemu-keymap, update reverse keymaps (for qemu -k $map) ui: fix for vte 0.50 ui: gtk texture fix # gpg: Signature made Mon 16 Oct 2017 14:12:49 BST # gpg: using RSA key 0x4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * remotes/kraxel/tags/ui-20171016-pull-request: gtk: fix wrong id between texture and framebuffer ui/gtk: Fix deprecation of vte_terminal_copy_clipboard pc-bios/keymaps: keymaps update Add pc-bios/keymaps/Makefile tools: add qemu-keymap ui: don't export qemu_input_event_new_key ui: convert key events to QKeyCodes immediately ui: convert common input code to keycodemapdb ui: add keycodemapdb repository as a GIT submodule docker: don't rely on submodules existing in the main checkout build: automatically handle GIT submodule checkout for dtc Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--.gitignore2
-rw-r--r--.gitmodules3
-rw-r--r--MAINTAINERS6
-rw-r--r--Makefile54
-rwxr-xr-xconfigure75
-rw-r--r--include/ui/input.h12
-rw-r--r--pc-bios/keymaps/Makefile56
-rw-r--r--pc-bios/keymaps/ar819
-rw-r--r--pc-bios/keymaps/bepo1108
-rw-r--r--pc-bios/keymaps/cz853
-rw-r--r--pc-bios/keymaps/da732
-rw-r--r--pc-bios/keymaps/de767
-rw-r--r--pc-bios/keymaps/de-ch921
-rw-r--r--pc-bios/keymaps/en-gb724
-rw-r--r--pc-bios/keymaps/en-us718
-rw-r--r--pc-bios/keymaps/es744
-rw-r--r--pc-bios/keymaps/et818
-rw-r--r--pc-bios/keymaps/fi814
-rw-r--r--pc-bios/keymaps/fo879
-rw-r--r--pc-bios/keymaps/fr706
-rw-r--r--pc-bios/keymaps/fr-be724
-rw-r--r--pc-bios/keymaps/fr-ca802
-rw-r--r--pc-bios/keymaps/fr-ch800
-rw-r--r--pc-bios/keymaps/hr752
-rw-r--r--pc-bios/keymaps/hu883
-rw-r--r--pc-bios/keymaps/is802
-rw-r--r--pc-bios/keymaps/it757
-rw-r--r--pc-bios/keymaps/ja792
-rw-r--r--pc-bios/keymaps/lt844
-rw-r--r--pc-bios/keymaps/lv766
-rw-r--r--pc-bios/keymaps/mk814
-rw-r--r--pc-bios/keymaps/nl794
-rw-r--r--pc-bios/keymaps/no758
-rw-r--r--pc-bios/keymaps/pl789
-rw-r--r--pc-bios/keymaps/pt737
-rw-r--r--pc-bios/keymaps/pt-br775
-rw-r--r--pc-bios/keymaps/ru835
-rw-r--r--pc-bios/keymaps/th878
-rw-r--r--pc-bios/keymaps/tr819
-rw-r--r--qemu-keymap.c258
-rwxr-xr-xscripts/archive-source.sh34
-rwxr-xr-xscripts/git-submodule.sh38
-rw-r--r--ui/gtk-gl-area.c3
-rw-r--r--ui/gtk.c5
-rw-r--r--ui/input-keymap.c326
-rw-r--r--ui/input.c26
m---------ui/keycodemapdb0
47 files changed, 24555 insertions, 2067 deletions
diff --git a/.gitignore b/.gitignore
index 3a7e01dc6a..620eec6b47 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
@@ -113,6 +114,7 @@
/docs/version.texi
*.tps
.stgit-*
+.git-submodule-status
cscope.*
tags
TAGS
diff --git a/.gitmodules b/.gitmodules
index 84c54cdc49..7c981a42b6 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 = git://git.qemu.org/keycodemapdb.git
diff --git a/MAINTAINERS b/MAINTAINERS
index 9cff9737d3..b79633cb1b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1960,3 +1960,9 @@ M: Daniel P. Berrange <berrange@redhat.com>
S: Odd Fixes
F: docs/devel/build-system.txt
+Build System
+------------
+GIT submodules
+M: Daniel P. Berrange <berrange@redhat.com>
+S: Odd Fixes
+F: scripts/git-submodule.sh
diff --git a/Makefile b/Makefile
index 97b4508d7d..90f91e54eb 100644
--- a/Makefile
+++ b/Makefile
@@ -14,6 +14,27 @@ ifneq ($(wildcard config-host.mak),)
all:
include config-host.mak
+git-submodule-update:
+
+.PHONY: git-submodule-update
+
+ifeq (0,$(MAKELEVEL))
+ git_module_status := $(shell \
+ cd '$(SRC_PATH)' && \
+ ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \
+ echo $$?; \
+ )
+
+ifeq (1,$(git_module_status))
+git-submodule-update:
+ $(call quiet-command, \
+ (cd $(SRC_PATH) && ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \
+ "GIT","$(GIT_SUBMODULES)")
+endif
+endif
+
+.git-submodule-status: git-submodule-update config-host.mak
+
# Check that we're not trying to do an out-of-tree build from
# a tree that's been used for an in-tree build.
ifneq ($(realpath $(SRC_PATH)),$(realpath .))
@@ -84,6 +105,7 @@ endif
GENERATED_FILES += $(TRACE_HEADERS)
GENERATED_FILES += $(TRACE_SOURCES)
GENERATED_FILES += $(BUILD_DIR)/trace-events-all
+GENERATED_FILES += .git-submodule-status
trace-group-name = $(shell dirname $1 | sed -e 's/[^a-zA-Z0-9]/_/g')
@@ -191,6 +213,31 @@ trace-dtrace-root.h: trace-dtrace-root.dtrace
trace-dtrace-root.o: trace-dtrace-root.dtrace
+KEYCODEMAP_GEN = $(SRC_PATH)/ui/keycodemapdb/tools/keymap-gen
+KEYCODEMAP_CSV = $(SRC_PATH)/ui/keycodemapdb/data/keymaps.csv
+
+KEYCODEMAP_FILES = \
+ ui/input-keymap-linux-to-qcode.c \
+ ui/input-keymap-qcode-to-qnum.c \
+ ui/input-keymap-qnum-to-qcode.c \
+ $(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,") && \
+ test -e $(KEYCODEMAP_GEN) && \
+ $(PYTHON) $(KEYCODEMAP_GEN) \
+ --lang glib2 \
+ --varname qemu_input_map_$${src}_to_$${dst} \
+ code-map $(KEYCODEMAP_CSV) $${src} $${dst} \
+ > $@ || rm -f $@, "GEN", "$@")
+
+$(KEYCODEMAP_GEN): .git-submodule-status
+$(KEYCODEMAP_CSV): .git-submodule-status
+
# Don't try to regenerate Makefile or configure
# We don't generate any of them
Makefile: ;
@@ -330,7 +377,7 @@ DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_src
DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS)
DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt
-subdir-dtc:dtc/libfdt dtc/tests
+subdir-dtc: .git-submodule-status dtc/libfdt dtc/tests
$(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,)
dtc/%:
@@ -371,6 +418,8 @@ qemu-io$(EXESUF): qemu-io.o $(block-obj-y) $(crypto-obj-y) $(io-obj-y) $(qom-obj
qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o $(COMMON_LDADDS)
+qemu-keymap$(EXESUF): qemu-keymap.o ui/input-keymap.o $(COMMON_LDADDS)
+
fsdev/virtfs-proxy-helper$(EXESUF): fsdev/virtfs-proxy-helper.o fsdev/9p-marshal.o fsdev/9p-iov-marshal.o $(COMMON_LDADDS)
fsdev/virtfs-proxy-helper$(EXESUF): LIBS += -lcap
@@ -385,6 +434,9 @@ qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
+qemu-keymap$(EXESUF): LIBS += $(XKBCOMMON_LIBS)
+qemu-keymap$(EXESUF): QEMU_CFLAGS += $(XKBCOMMON_CFLAGS)
+
gen-out-type = $(subst .,-,$(suffix $@))
qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py
diff --git a/configure b/configure
index 3c733f1a53..663e9081ea 100755
--- a/configure
+++ b/configure
@@ -265,6 +265,13 @@ libs_qga=""
debug_info="yes"
stack_protector=""
+if test -e "$source_path/.git"
+then
+ git_submodules="ui/keycodemapdb"
+else
+ git_submodules=""
+fi
+
# Don't accept a target_list environment variable.
unset target_list
@@ -297,6 +304,7 @@ vde=""
vnc_sasl=""
vnc_jpeg=""
vnc_png=""
+xkbcommon=""
xen=""
xen_ctrl_version=""
xen_pv_domain_build="no"
@@ -2901,6 +2909,21 @@ EOF
fi
##########################################
+# xkbcommon probe
+if test "$xkbcommon" != "no" ; then
+ if $pkg_config xkbcommon --exists; then
+ xkbcommon_cflags=$($pkg_config xkbcommon --cflags)
+ xkbcommon_libs=$($pkg_config xkbcommon --libs)
+ xkbcommon=yes
+ else
+ if test "$xkbcommon" = "yes" ; then
+ feature_not_found "xkbcommon" "Install libxkbcommon-devel"
+ fi
+ xkbcommon=no
+ fi
+fi
+
+##########################################
# fnmatch() probe, used for ACL routines
fnmatch="no"
cat > $TMPC << EOF
@@ -3590,27 +3613,30 @@ EOF
if compile_prog "" "$fdt_libs" ; then
# system DTC is good - use it
fdt=yes
- elif test -d ${source_path}/dtc/libfdt ; then
- # have submodule DTC - use it
- fdt=yes
- dtc_internal="yes"
- mkdir -p dtc
- if [ "$pwd_is_source_path" != "y" ] ; then
- symlink "$source_path/dtc/Makefile" "dtc/Makefile"
- symlink "$source_path/dtc/scripts" "dtc/scripts"
- fi
- fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
- fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
- elif test "$fdt" = "yes" ; then
- # have neither and want - prompt for system/submodule install
- error_exit "DTC (libfdt) version >= 1.4.2 not present. Your options:" \
- " (1) Preferred: Install the DTC (libfdt) devel package" \
- " (2) Fetch the DTC submodule, using:" \
- " git submodule update --init dtc"
else
- # don't have and don't want
- fdt_libs=
- fdt=no
+ # have GIT checkout, so activate dtc submodule
+ if test -e "${source_path}/.git" ; then
+ git_submodules="${git_submodules} dtc"
+ fi
+ if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then
+ fdt=yes
+ dtc_internal="yes"
+ mkdir -p dtc
+ if [ "$pwd_is_source_path" != "y" ] ; then
+ symlink "$source_path/dtc/Makefile" "dtc/Makefile"
+ symlink "$source_path/dtc/scripts" "dtc/scripts"
+ fi
+ fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
+ fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
+ elif test "$fdt" = "yes" ; then
+ # Not a git build & no libfdt found, prompt for system install
+ error_exit "DTC (libfdt) version >= 1.4.2 not present." \
+ "Please install the DTC (libfdt) devel package"
+ else
+ # don't have and don't want
+ fdt_libs=
+ fdt=no
+ fi
fi
fi
@@ -5103,6 +5129,9 @@ if test "$softmmu" = yes ; then
mpath=no
fi
fi
+if test "$xkbcommon" = "yes"; then
+ tools="qemu-keymap\$(EXESUF) $tools"
+fi
# Probe for guest agent support/options
@@ -5301,6 +5330,7 @@ echo "local state directory queried at runtime"
echo "Windows SDK $win_sdk"
fi
echo "Source path $source_path"
+echo "GIT submodules $git_submodules"
echo "C compiler $cc"
echo "Host C compiler $host_cc"
echo "C++ compiler $cxx"
@@ -5490,6 +5520,7 @@ echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak
echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
+echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
echo "ARCH=$ARCH" >> $config_host_mak
@@ -5601,6 +5632,10 @@ fi
if test "$vnc_png" = "yes" ; then
echo "CONFIG_VNC_PNG=y" >> $config_host_mak
fi
+if test "$xkbcommon" = "yes" ; then
+ echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak
+ echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak
+fi
if test "$fnmatch" = "yes" ; then
echo "CONFIG_FNMATCH=y" >> $config_host_mak
fi
diff --git a/include/ui/input.h b/include/ui/input.h
index c488585def..f8cee43f65 100644
--- a/include/ui/input.h
+++ b/include/ui/input.h
@@ -38,12 +38,11 @@ void qemu_input_event_send_impl(QemuConsole *src, InputEvent *evt);
void qemu_input_event_sync(void);
void qemu_input_event_sync_impl(void);
-InputEvent *qemu_input_event_new_key(KeyValue *key, bool down);
void qemu_input_event_send_key(QemuConsole *src, KeyValue *key, bool down);
void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down);
void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool down);
void qemu_input_event_send_key_delay(uint32_t delay_ms);
-int qemu_input_key_number_to_qcode(uint8_t nr);
+int qemu_input_key_number_to_qcode(unsigned int nr);
int qemu_input_key_value_to_number(const KeyValue *value);
int qemu_input_key_value_to_qcode(const KeyValue *value);
int qemu_input_key_value_to_scancode(const KeyValue *value, bool down,
@@ -69,4 +68,13 @@ void qemu_input_check_mode_change(void);
void qemu_add_mouse_mode_change_notifier(Notifier *notify);
void qemu_remove_mouse_mode_change_notifier(Notifier *notify);
+extern const guint qemu_input_map_linux_to_qcode_len;
+extern const guint16 qemu_input_map_linux_to_qcode[];
+
+extern const guint qemu_input_map_qcode_to_qnum_len;
+extern const guint16 qemu_input_map_qcode_to_qnum[];
+
+extern const guint qemu_input_map_qnum_to_qcode_len;
+extern const guint16 qemu_input_map_qnum_to_qcode[];
+
#endif /* INPUT_H */
diff --git a/pc-bios/keymaps/Makefile b/pc-bios/keymaps/Makefile
new file mode 100644
index 0000000000..f0e44fd110
--- /dev/null
+++ b/pc-bios/keymaps/Makefile
@@ -0,0 +1,56 @@
+
+KEYMAP := $(shell which qemu-keymap 2>/dev/null)
+
+MAPS := ar bepo cz da de de-ch en-us en-gb es et fi fo \
+ fr fr-be fr-ca fr-ch \
+ hr hu is it ja lt lv mk nl no pl pt pt-br ru th tr
+
+ar : MAP_FLAGS := -l ar
+bepo : MAP_FLAGS := -l fr -v dvorak
+cz : MAP_FLAGS := -l cz
+da : MAP_FLAGS := -l dk
+de : MAP_FLAGS := -l de
+de-ch : MAP_FLAGS := -l ch
+en-us : MAP_FLAGS := -l us
+en-gb : MAP_FLAGS := -l gb
+es : MAP_FLAGS := -l es
+et : MAP_FLAGS := -l et
+fi : MAP_FLAGS := -l fi
+fo : MAP_FLAGS := -l fo
+fr : MAP_FLAGS := -l fr
+fr-be : MAP_FLAGS := -l be
+fr-ca : MAP_FLAGS := -l ca -v fr
+fr-ch : MAP_FLAGS := -l ch -v fr
+hr : MAP_FLAGS := -l hr
+hu : MAP_FLAGS := -l hu
+is : MAP_FLAGS := -l is
+it : MAP_FLAGS := -l it
+ja : MAP_FLAGS := -l jp -m jp106
+lt : MAP_FLAGS := -l lt
+lv : MAP_FLAGS := -l lv
+mk : MAP_FLAGS := -l mk
+nl : MAP_FLAGS := -l nl
+no : MAP_FLAGS := -l no
+pl : MAP_FLAGS := -l pl
+pt : MAP_FLAGS := -l pt
+pt-br : MAP_FLAGS := -l br
+ru : MAP_FLAGS := -l ru
+th : MAP_FLAGS := -l th
+tr : MAP_FLAGS := -l tr
+
+ifeq ($(KEYMAP),)
+
+all:
+ @echo "nothing to do (qemu-keymap not found)"
+
+else
+
+all: $(MAPS)
+
+clean:
+ rm -f $(MAPS)
+
+$(MAPS): $(KEYMAP) Makefile
+ $(KEYMAP) -f $@ $(MAP_FLAGS)
+
+endif
diff --git a/pc-bios/keymaps/ar b/pc-bios/keymaps/ar
index c430c03bb3..a763c9a027 100644
--- a/pc-bios/keymaps/ar
+++ b/pc-bios/keymaps/ar
@@ -1,98 +1,753 @@
-# generated from XKB map ar
-include common
-map 0x401
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : ar
+# variant : -
+# options : -
+
+# name: "Arabic"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
at 0x03 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
asciicircum 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
-parenleft 0x0a shift
-parenright 0x0b shift
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
+parenright 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
+parenleft 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
-Arabic_dad 0x10 altgr
-Arabic_fatha 0x10 shift altgr
-Arabic_sad 0x11 altgr
-Arabic_fathatan 0x11 shift altgr
-Arabic_theh 0x12 altgr
-Arabic_damma 0x12 shift altgr
-Arabic_qaf 0x13 altgr
-Arabic_dammatan 0x13 shift altgr
-Arabic_feh 0x14 altgr
-UFEF9 0x14 shift altgr
-Arabic_ghain 0x15 altgr
-Arabic_hamzaunderalef 0x15 shift altgr
-Arabic_ain 0x16 altgr
-grave 0x16 shift altgr
-Arabic_ha 0x17 altgr
-division 0x17 shift altgr
-Arabic_khah 0x18 altgr
-multiply 0x18 shift altgr
-Arabic_hah 0x19 altgr
-Arabic_semicolon 0x19 shift altgr
-bracketleft 0x1a
-braceleft 0x1a shift
-Arabic_jeem 0x1a altgr
-bracketright 0x1b
-braceright 0x1b shift
-Arabic_dal 0x1b altgr
-Arabic_sheen 0x1e altgr
-backslash 0x1e shift altgr
-Arabic_seen 0x1f altgr
-Arabic_yeh 0x20 altgr
-bracketleft 0x20 shift altgr
-Arabic_beh 0x21 altgr
-bracketright 0x21 shift altgr
-Arabic_lam 0x22 altgr
-UFEF7 0x22 shift altgr
-Arabic_alef 0x23 altgr
-Arabic_hamzaonalef 0x23 shift altgr
-Arabic_teh 0x24 altgr
-Arabic_tatweel 0x24 shift altgr
-Arabic_noon 0x25 altgr
-Arabic_comma 0x25 shift altgr
-Arabic_meem 0x26 altgr
-slash 0x26 shift altgr
-semicolon 0x27
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+Arabic_dad 0x10
+Arabic_fatha 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+Arabic_sad 0x11
+Arabic_fathatan 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+Arabic_theh 0x12
+Arabic_damma 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+Arabic_qaf 0x13
+Arabic_dammatan 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+Arabic_feh 0x14
+UFEF9 0x14 shift
+Arabic_veh 0x14 altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+Arabic_ghain 0x15
+Arabic_hamzaunderalef 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+Arabic_ain 0x16
+grave 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+Arabic_ha 0x17
+division 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+Arabic_khah 0x18
+multiply 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+Arabic_hah 0x19
+Arabic_semicolon 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+Arabic_jeem 0x1a
+less 0x1a shift
+Arabic_tcheh 0x1a altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+Arabic_dal 0x1b
+greater 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+Arabic_sheen 0x1e
+Arabic_kasra 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+Arabic_seen 0x1f
+Arabic_kasratan 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+Arabic_yeh 0x20
+bracketright 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+Arabic_beh 0x21
+bracketleft 0x21 shift
+Arabic_peh 0x21 altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+Arabic_lam 0x22
+UFEF7 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+Arabic_alef 0x23
+Arabic_hamzaonalef 0x23 shift
+U0671 0x23 altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+Arabic_teh 0x24
+Arabic_tatweel 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+Arabic_noon 0x25
+Arabic_comma 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+Arabic_meem 0x26
+slash 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+Arabic_kaf 0x27
colon 0x27 shift
-Arabic_kaf 0x27 altgr
-apostrophe 0x28
+Arabic_gaf 0x27 altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+Arabic_tah 0x28
quotedbl 0x28 shift
-Arabic_tah 0x28 altgr
-grave 0x29
-asciitilde 0x29 shift
-Arabic_thal 0x29 altgr
-Arabic_shadda 0x29 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+Arabic_thal 0x29
+Arabic_shadda 0x29 shift
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
backslash 0x2b
bar 0x2b shift
-less 0x2b altgr
-greater 0x2b shift altgr
-Arabic_hamzaonyeh 0x2c altgr
-asciitilde 0x2c shift altgr
-Arabic_hamza 0x2d altgr
-Arabic_sukun 0x2d shift altgr
-Arabic_hamzaonwaw 0x2e altgr
-Arabic_kasra 0x2e shift altgr
-Arabic_ra 0x2f altgr
-Arabic_kasratan 0x2f shift altgr
-UFEFB 0x30 altgr
-UFEF5 0x30 shift altgr
-Arabic_alefmaksura 0x31 altgr
-Arabic_maddaonalef 0x31 shift altgr
-Arabic_tehmarbuta 0x32 altgr
-apostrophe 0x32 shift altgr
-comma 0x33
-less 0x33 shift
-Arabic_waw 0x33 altgr
-period 0x34
-greater 0x34 shift
-Arabic_zain 0x34 altgr
-slash 0x35
-question 0x35 shift
-Arabic_zah 0x35 altgr
-Arabic_question_mark 0x35 shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+Arabic_hamzaonyeh 0x2c
+asciitilde 0x2c shift
+guillemotright 0x2c altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+Arabic_hamza 0x2d
+Arabic_sukun 0x2d shift
+guillemotleft 0x2d altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+Arabic_hamzaonwaw 0x2e
+braceright 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+Arabic_ra 0x2f
+braceleft 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+UFEFB 0x30
+UFEF5 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+Arabic_alefmaksura 0x31
+Arabic_maddaonalef 0x31 shift
+Arabic_superscript_alef 0x31 altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+Arabic_tehmarbuta 0x32
+apostrophe 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
+Arabic_waw 0x33
+comma 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
+Arabic_zain 0x34
+period 0x34 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+Arabic_zah 0x35
+Arabic_question_mark 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+bar 0x56
+brokenbar 0x56 shift
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/bepo b/pc-bios/keymaps/bepo
index d40041a4cb..dbe8daa257 100644
--- a/pc-bios/keymaps/bepo
+++ b/pc-bios/keymaps/bepo
@@ -1,333 +1,781 @@
-include common
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : fr
+# variant : dvorak
+# options : -
+
+# name: "French (Dvorak)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+equal 0x02
+1 0x02 shift
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+slash 0x03
+2 0x03 shift
+plusminus 0x03 altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+minus 0x04
+3 0x04 shift
+onequarter 0x04 altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+egrave 0x05
+4 0x05 shift
+onehalf 0x05 altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+backslash 0x06
+5 0x06 shift
+threequarters 0x06 altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+dead_circumflex 0x07
+6 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+parenleft 0x08
+7 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+ISO_Level3_Latch 0x09
+8 0x09 shift
+grave 0x09 altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+parenright 0x0a
+9 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+quotedbl 0x0b
+0 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+bracketleft 0x0c
+plus 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+bracketright 0x0d
+percent 0x0d shift
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+colon 0x10
+question 0x10 shift
+ae 0x10 altgr
+AE 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+apostrophe 0x11
+less 0x11 shift
+dollar 0x11 altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+eacute 0x12
+greater 0x12 shift
+Eacute 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+g 0x13
+G 0x13 shift
+EuroSign 0x13 altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+period 0x14
+exclam 0x14 shift
+degree 0x14 altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+h 0x15
+H 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+v 0x16
+V 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+c 0x17
+C 0x17 shift
+ccedilla 0x17 altgr
+Ccedilla 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+m 0x18
+M 0x18 shift
+mu 0x18 altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+k 0x19
+K 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+z 0x1a
+Z 0x1a shift
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+dead_diaeresis 0x1b
+ampersand 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+o 0x1e
+O 0x1e shift
+ograve 0x1e altgr
+Ograve 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+a 0x1f
+A 0x1f shift
+agrave 0x1f altgr
+Agrave 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+u 0x20
+U 0x20 shift
+ugrave 0x20 altgr
+Ugrave 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+e 0x21
+E 0x21 shift
+egrave 0x21 altgr
+Egrave 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+b 0x22
+B 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+f 0x23
+F 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+s 0x24
+S 0x24 shift
+guillemotleft 0x24 altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+t 0x25
+T 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+n 0x26
+N 0x26 shift
+guillemotright 0x26 altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+d 0x27
+D 0x27 shift
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+w 0x28
+W 0x28 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+underscore 0x29
+asterisk 0x29 shift
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
+asciitilde 0x2b
+numbersign 0x2b shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+semicolon 0x2c
+bar 0x2c shift
+oe 0x2c altgr
+OE 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+q 0x2d
+Q 0x2d shift
+braceleft 0x2d altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+comma 0x2e
+at 0x2e shift
+braceright 0x2e altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+i 0x2f
+I 0x2f shift
+igrave 0x2f altgr
+Igrave 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+y 0x30
+Y 0x30 shift
+sterling 0x30 altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+x 0x31
+X 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+r 0x32
+R 0x32 shift
+masculine 0x32 altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
+l 0x33
+L 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
+p 0x34
+P 0x34 shift
+section 0x34 altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+j 0x35
+J 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+nobreakspace 0x39 altgr
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+agrave 0x56
+ccedilla 0x56 shift
+Agrave 0x56 altgr
+Ccedilla 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
-# Bépo : Improved ergonomic french keymap using Dvorak method.
-# Built by community on 'Dvorak Fr / Bépo' :
-# see http://www.clavier-dvorak.org/wiki/ to join and help.
#
-# Bépo layout (1.0rc2 version) for a pc105 keyboard (french) :
-# ┌────┐
-# │ S A│ S = Shift, A = AltGr + Shift
-# │ s a│ s = normal, a = AltGr
-# └────┘
+# quirks section start
#
-# ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
-# │ # ¶ │ 1 „ │ 2 “ │ 3 ” │ 4 ≤ │ 5 ≥ │ 6 │ 7 ¬ │ 8 ¼ │ 9 ½ │ 0 ¾ │ ° ′ │ ` ″ ┃ ⌫ Retour┃
-# │ $ – │ " — │ « < │ » > │ ( [ │ ) ] │ @ ^ │ + ± │ - − │ / ÷ │ * × │ = ≠ │ % ‰ ┃ arrière┃
-# ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
-# ┃ ┃ B ¦ │ É ˝ │ P § │ O Œ │ È ` │ ! │ V │ D Ð │ L │ J IJ │ Z Ə │ W ┃Entrée ┃
-# ┃Tab ↹ ┃ b | │ é ˊ │ p & │ o œ │ è ` │ ˆ ¡ │ v ˇ │ d ð │ l / │ j ij │ z ə │ w ̆ ┃ ⏎ ┃
-# ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓ ┃
-# ┃ ┃ A Æ │ U Ù │ I ˙ │ E ¤ │ ; ̛ │ C ſ │ T Þ │ S ẞ │ R ™ │ N │ M º │ Ç , ┃ ┃
-# ┃Maj ⇬ ┃ a æ │ u ù │ i ̈ │ e € │ , ’ │ c © │ t þ │ s ß │ r ® │ n ˜ │ m ¯ │ ç ¸ ┃ ┃
-# ┣━━━━━━━┳┹────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┬┴────┲┷━━━━━┻━━━━━━┫
-# ┃ ┃ Ê │ À │ Y ‘ │ X ’ │ : · │ K │ ? ̉ │ Q ̣ │ G │ H ‡ │ F ª ┃ ┃
-# ┃Shift ⇧┃ ê / │ à \ │ y { │ x } │ . … │ k ~ │ ' ¿ │ q ˚ │ g µ │ h † │ f ˛ ┃Shift ⇧ ┃
-# ┣━━━━━━━╋━━━━━┷━┳━━━┷━━━┱─┴─────┴─────┴─────┴─────┴─────┴───┲━┷━━━━━╈━━━━━┻━┳━━━━━━━┳━━━┛
-# ┃ ┃ ┃ ┃ Espace inséc. Espace inséc. fin ┃ ┃ ┃ ┃
-# ┃Ctrl ┃Meta ┃Alt ┃ ␣ (Espace) _ ␣ ┃AltGr ⇮┃Menu ┃Ctrl ┃
-# ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
-
-
-# First row
-## keycode 41 = dollar numbersign U+2013 U+00b6
-dollar 0x29
-numbersign 0x29 shift
-U2013 0x29 altgr
-U00b6 0x29 shift altgr
-
-## keycode 2 = +quotedbl +one U+2014 U+201e
-quotedbl 0x2
-one 0x2 shift
-U2014 0x2 altgr
-U201e 0x2 shift altgr
-
-## keycode 3 = +guillemotleft +two less U+201c
-guillemotleft 0x3
-two 0x3 shift
-less 0x3 altgr
-U201c 0x3 shift altgr
-
-## keycode 4 = +guillemotright +three greater U+201d
-guillemotright 0x4
-three 0x4 shift
-greater 0x4 altgr
-U201d 0x4 shift altgr
-
-## keycode 5 = +parenleft +four bracketleft U+2264
-parenleft 0x5
-four 0x5 shift
-bracketleft 0x5 altgr
-U2264 0x5 shift altgr
-
-## keycode 6 = +parenright +five bracketright U+2265
-parenright 0x6
-five 0x6 shift
-bracketright 0x6 altgr
-U2265 0x6 shift altgr
-
-## keycode 7 = +at +six asciicircum
-at 0x7
-six 0x7 shift
-asciicircum 0x7 altgr
-
-## keycode 8 = +plus +seven U+00b1 U+00ac
-plus 0x8
-seven 0x8 shift
-U00b1 0x8 altgr
-U00ac 0x8 shift altgr
-
-## keycode 9 = +minus +eight U+2212 U+00bc
-minus 0x9
-eight 0x9 shift
-U2212 0x9 altgr
-U00bc 0x9 shift altgr
-
-## keycode 10 = +slash +nine U+00f7 U+00bd
-slash 0xa
-nine 0xa shift
-U00f7 0xa altgr
-U00bd 0xa shift altgr
-
-## keycode 11 = +asterisk +zero U+00d7 U+00be
-asterisk 0xb
-zero 0xb shift
-U00d7 0xb altgr
-U00be 0xb shift altgr
-
-## keycode 12 = equal U+00b0 U+2260 U+2032
-equal 0xc
-U00b0 0xc shift
-U2260 0xc altgr
-U2032 0xc shift altgr
-
-## keycode 13 = percent grave U+2030 U+2033
-percent 0xd
-grave 0xd shift
-U2030 0xd altgr
-U2033 0xd shift altgr
-
-
-# Second row
-
-# simplified letter definitions notation :
-## keycode 16 = b
-b 0x10 addupper
-## keycode 18 = p
-p 0x12 addupper
-## keycode 19 = o
-o 0x13 addupper
-## keycode 22 = v
-v 0x16 addupper
-## keycode 23 = d
-d 0x17 addupper
-## keycode 24 = l
-l 0x18 addupper
-## keycode 25 = j
-j 0x19 addupper
-## keycode 26 = z
-z 0x1a addupper
-## keycode 27 = w
-w 0x1b addupper
-
-# then, add specific definitions
-## AltGr keycode 16 = bar
-bar 0x10 altgr
-## Shift AltGr keycode 16 = brokenbar
-brokenbar 0x10 shift altgr
-
-## keycode 17 = +eacute +Eacute dead_acute
-eacute 0x11
-Eacute 0x11 shift
-dead_acute 0x11 altgr
-
-## AltGr keycode 18 = ampersand
-ampersand 0x12 altgr
-## Shift AltGr keycode 18 = U+00a7
-U00a7 0x12 shift altgr
-
-## AltGr keycode 19 = +U+0153
-U+0153 0x13 altgr
-## Shift AltGr keycode 19 = +U+0152
-U+0152 0x13 shift altgr
-
-## keycode 20 = +egrave +Egrave dead_grave grave # no Meta !
-egrave 0x14
-Egrave 0x14 shift
-dead_grave 0x14 altgr
-
-## keycode 21 = dead_circumflex exclam exclamdown
-dead_circumflex 0x15
-exclam 0x15 shift
-exclamdown 0x15 altgr
-
-## AltGr keycode 22 = dead_caron
-dead_caron 0x16 altgr
-
-## AltGr keycode 23 = eth
-eth 0x17 altgr
-## Shift AltGr keycode 23 = ETH
-ETH 0x17 shift altgr
-
-## AltGr keycode 25 = +U+0133
-U+0133 0x19 altgr
-## Shift AltGr keycode 25 = +U+0132
-U+0132 0x19 shift altgr
-
-## AltGr keycode 26 = +U+0259
-U+0259 0x1a altgr
-## Shift AltGr keycode 26 = +U+018f
-U+018f 0x1a shift altgr
-
-
-
-# Third row
-
-# simplified letter definitions notation :
-## keycode 30 = a
-a 0x1e addupper
-## keycode 31 = u
-u 0x1f addupper
-## keycode 32 = i
-i 0x20 addupper
-## keycode 33 = e
-e 0x21 addupper
-## keycode 35 = c
-c 0x23 addupper
-## keycode 36 = t
-t 0x24 addupper
-## keycode 37 = s
-s 0x25 addupper
-## keycode 38 = r
-r 0x26 addupper
-## keycode 39 = n
-n 0x27 addupper
-## keycode 40 = m
-m 0x28 addupper
-
-# then, add specific definitions
-## AltGr keycode 30 = +ae
-ae 0x1e altgr
-## Shift AltGr keycode 30 = +AE
-AE 0x1e shift altgr
-
-## AltGr keycode 31 = +ugrave
-ugrave 0x1f altgr
-## Shift AltGr keycode 31 = +Ugrave
-Ugrave 0x1f shift altgr
-
-## AltGr keycode 32 = dead_diaeresis
-dead_diaeresis 0x20 altgr
-
-
-## AltGr keycode 33 = U+20ac
-U20ac 0x21 altgr
-
-## keycode 34 = comma semicolon U+2019 +U+031b
-comma 0x22
-semicolon 0x22 shift
-U2019 0x22 altgr
-U+031b 0x22 shift altgr
-
-## AltGr keycode 35 = copyright
-copyright 0x23 altgr
-## Shift AltGr keycode 35 = U+017f
-U017f 0x23 shift altgr
-
-## AltGr keycode 36 = +thorn
-thorn 0x24 altgr
-## Shift AltGr keycode 36 = +THORN
-THORN 0x24 shift altgr
-
-## AltGr keycode 37 = +ssharp
-ssharp 0x25 altgr
-## Shift AltGr keycode 37 = U+1e9e
-U1e9e 0x25 shift altgr
-
-## AltGr keycode 38 = registered
-registered 0x26 altgr
-## Shift AltGr keycode 38 = U+2122
-U2122 0x26 shift altgr
-
-## AltGr keycode 39 = dead_tilde
-dead_tilde 0x27 altgr
-
-## Shift AltGr keycode 40 = masculine
-masculine 0x28 shift altgr
-
-## keycode 43 = +ccedilla +Ccedilla dead_cedilla
-ccedilla 0x2b
-Ccedilla 0x2b shift
-dead_cedilla 0x2b altgr
-
-
-# Fourth row
-
-# simplified letter definitions notation :
-## keycode 45 = y
-y 0x2d addupper
-## keycode 46 = x
-x 0x2e addupper
-## keycode 48 = k
-k 0x30 addupper
-## keycode 50 = q
-q 0x32 addupper
-## keycode 51 = g
-g 0x33 addupper
-## keycode 52 = h
-h 0x34 addupper
-## keycode 53 = f
-f 0x35 addupper
-
-# then, add specific definitions
-## keycode 86 = +ecircumflex +Ecircumflex slash slash
-ecircumflex 0x56
-Ecircumflex 0x56 shift
-
-## keycode 44 = +agrave +Agrave backslash
-agrave 0x2c
-Agrave 0x2c shift
-backslash 0x2c altgr
-
-## AltGr keycode 45 = braceleft
-braceleft 0x2d altgr
-## Shift AltGr keycode 45 = U+2018
-U2018 0x2d shift altgr
-
-## AltGr keycode 46 = braceright
-braceright 0x2e altgr
-
-## keycode 47 = period colon U+2026 periodcentered
-period 0x2f
-colon 0x2f shift
-U2026 0x2f altgr
-periodcentered 0x2f shift altgr
-
-## AltGr keycode 48 = asciitilde
-asciitilde 0x30 altgr
-## Shift AltGr keycode 48 = U+2328
-U2328 0x30 shift altgr
-
-## keycode 49 = apostrophe question questiondown +U+0309
-apostrophe 0x31
-question 0x31 shift
-questiondown 0x31 altgr
-U+0309 0x31 shift altgr
-
-## AltGr keycode 51 = mu
-mu 0x33 altgr
-
-## AltGr keycode 52 = U+2020
-U2020 0x34 altgr
-## Shift AltGr keycode 52 = U+2021
-U2021 0x34 shift altgr
-
-## Shift AltGr keycode 53 = ordfeminine
-ordfeminine 0x35 shift altgr
-
-
-
-## keycode 57 = space nobreakspace underscore U+202f
-space 0x39
-nobreakspace 0x39 shift
-underscore 0x39 altgr
-U202f 0x39 shift altgr
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/cz b/pc-bios/keymaps/cz
index 6584bfb189..46b37757fe 100644
--- a/pc-bios/keymaps/cz
+++ b/pc-bios/keymaps/cz
@@ -1,94 +1,837 @@
-include common
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : cz
+# variant : -
+# options : -
-# Czech qwertz layout
-# comments are czech descriptions of the characters
+# name: "Czech"
-# -----------
-# First row
-# -----------
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
-# strednik, kolecko
-semicolon 0x29
-dead_abovering 0x29 shift
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+plus 0x02
+1 0x02 shift
+exclam 0x02 altgr
+dead_tilde 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+ecaron 0x03
+2 0x03 shift
+at 0x03 altgr
+dead_caron 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+scaron 0x04
+3 0x04 shift
+numbersign 0x04 altgr
+dead_circumflex 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+ccaron 0x05
+4 0x05 shift
+dollar 0x05 altgr
+dead_breve 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+rcaron 0x06
+5 0x06 shift
+percent 0x06 altgr
+dead_abovering 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+zcaron 0x07
+6 0x07 shift
+asciicircum 0x07 altgr
+dead_ogonek 0x07 shift altgr
-# numbers
-plus 0x2
-1 0x2 shift
-ecaron 0x3
-2 0x3 shift
-scaron 0x4
-3 0x4 shift
-ccaron 0x5
-4 0x5 shift
-rcaron 0x6
-5 0x6 shift
-zcaron 0x7
-6 0x7 shift
-yacute 0x8
-7 0x8 shift
-aacute 0x9
-8 0x9 shift
-iacute 0xa
-9 0xa shift
-eacute 0xb
-0 0xb shift
-
-# rovnitko
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+yacute 0x08
+7 0x08 shift
+ampersand 0x08 altgr
+dead_grave 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+aacute 0x09
+8 0x09 shift
+asterisk 0x09 altgr
+dead_abovedot 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+iacute 0x0a
+9 0x0a shift
+braceleft 0x0a altgr
+dead_acute 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+eacute 0x0b
+0 0x0b shift
+braceright 0x0b altgr
+dead_doubleacute 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
equal 0x0c
percent 0x0c shift
+backslash 0x0c altgr
+dead_diaeresis 0x0c shift altgr
-# carka, hacek
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
dead_acute 0x0d
dead_caron 0x0d shift
+dead_macron 0x0d altgr
+dead_cedilla 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+backslash 0x10 altgr
+Greek_OMEGA 0x10 shift altgr
-# ------------
-# Second row
-# ------------
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+bar 0x11 altgr
+Lstroke 0x11 shift altgr
-z 0x15 addupper
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+EuroSign 0x12 altgr
-# u s carkou, zpetne lomitko
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+paragraph 0x13 altgr
+registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+tslash 0x14 altgr
+Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+z 0x15
+Z 0x15 shift
+leftarrow 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+downarrow 0x16 altgr
+uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+rightarrow 0x17 altgr
+idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oslash 0x18 altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+thorn 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
uacute 0x1a
slash 0x1a shift
+bracketleft 0x1a altgr
+division 0x1a shift altgr
-# prava zavorka, leva zavorka
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
parenright 0x1b
parenleft 0x1b shift
+bracketright 0x1b altgr
+multiply 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+asciitilde 0x1e altgr
+AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+dstroke 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+Dstroke 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+bracketleft 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+bracketright 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+grave 0x23 altgr
+Hstroke 0x23 shift altgr
-# -----------
-# Third row
-# -----------
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+apostrophe 0x24 altgr
+dead_horn 0x24 shift altgr
-# u s krouzkem, uvozovky
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+lstroke 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+Lstroke 0x26 altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
uring 0x27
quotedbl 0x27 shift
+dollar 0x27 altgr
+dead_doubleacute 0x27 shift altgr
-# paragraf, vykricnik
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
section 0x28
exclam 0x28 shift
+apostrophe 0x28 altgr
+ssharp 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+semicolon 0x29
+dead_abovering 0x29 shift
+grave 0x29 altgr
+asciitilde 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
-# vodorovna dvojtecka, apostrof
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
dead_diaeresis 0x2b
apostrophe 0x2b shift
+backslash 0x2b altgr
+bar 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+y 0x2c
+Y 0x2c shift
+degree 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+numbersign 0x2d altgr
+greater 0x2d shift altgr
-# ------------
-# Fourth row
-# ------------
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+ampersand 0x2e altgr
+copyright 0x2e shift altgr
-# zpetne lomitko, roura
-backslash 0x2b
-bar 0x2b shift
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+at 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
-y 0x2c addupper
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+braceleft 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
-# carka, otaznik
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+braceright 0x31 altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+asciicircum 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
question 0x33 shift
+less 0x33 altgr
+multiply 0x33 shift altgr
-# tecka, dvojtecka
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
+greater 0x34 altgr
+division 0x34 shift altgr
-# minus, podtrzitko
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
+asterisk 0x35 altgr
+dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+backslash 0x56
+bar 0x56 shift
+slash 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/da b/pc-bios/keymaps/da
index 3884dcf145..f7cdad7420 100644
--- a/pc-bios/keymaps/da
+++ b/pc-bios/keymaps/da
@@ -1,120 +1,836 @@
-# generated from XKB map dk
-include common
-map 0x406
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : dk
+# variant : -
+# options : -
+
+# name: "Danish"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
exclamdown 0x02 altgr
onesuperior 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
at 0x03 altgr
twosuperior 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
sterling 0x04 altgr
threesuperior 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
currency 0x05 shift
dollar 0x05 altgr
onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
cent 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
yen 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
division 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
guillemotleft 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
guillemotright 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
plus 0x0c
question 0x0c shift
plusminus 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
dead_acute 0x0d
dead_grave 0x0d shift
bar 0x0d altgr
brokenbar 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
registered 0x13 altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
thorn 0x14 altgr
THORN 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oe 0x18 altgr
OE 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
aring 0x1a
Aring 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dead_diaeresis 0x1b
dead_circumflex 0x1b shift
dead_tilde 0x1b altgr
dead_caron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ordfeminine 0x1e altgr
masculine 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ae 0x27
AE 0x27 shift
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
oslash 0x28
-Ooblique 0x28 shift
+Oslash 0x28 shift
+dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
onehalf 0x29
section 0x29 shift
threequarters 0x29 altgr
paragraph 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
apostrophe 0x2b
asterisk 0x2b shift
dead_doubleacute 0x2b altgr
multiply 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
copyright 0x2e altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
dead_cedilla 0x33 altgr
dead_ogonek 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
periodcentered 0x34 altgr
dead_abovedot 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
-hyphen 0x35 altgr
-macron 0x35 shift altgr
-nobreakspace 0x39 altgr
+dead_belowdot 0x35 altgr
+dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
less 0x56
greater 0x56 shift
backslash 0x56 altgr
notsign 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/de b/pc-bios/keymaps/de
index ed929c743b..d0b4715474 100644
--- a/pc-bios/keymaps/de
+++ b/pc-bios/keymaps/de
@@ -1,114 +1,839 @@
-# generated from XKB map de
-include common
-map 0x407
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : de
+# variant : -
+# options : -
+
+# name: "German"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
twosuperior 0x03 altgr
oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
section 0x04 shift
threesuperior 0x04 altgr
sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
onequarter 0x05 altgr
currency 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-threequarters 0x07 altgr
+notsign 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
+degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
ssharp 0x0c
question 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
-acute 0x0d
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
dead_acute 0x0d
-grave 0x0d shift
dead_grave 0x0d shift
dead_cedilla 0x0d altgr
dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
-z 0x15 addupper
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+z 0x15
+Z 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
udiaeresis 0x1a
Udiaeresis 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
plus 0x1b
asterisk 0x1b shift
asciitilde 0x1b altgr
-dead_tilde 0x1b altgr
-dead_macron 0x1b shift altgr
+macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+U017F 0x1f altgr
+U1E9E 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_belowdot 0x24 altgr
+dead_abovedot 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
odiaeresis 0x27
Odiaeresis 0x27 shift
dead_doubleacute 0x27 altgr
+dead_belowdot 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
adiaeresis 0x28
Adiaeresis 0x28 shift
+dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
-asciicircum 0x29
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
dead_circumflex 0x29
degree 0x29 shift
-notsign 0x29 altgr
+U2032 0x29 altgr
+U2033 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
numbersign 0x2b
apostrophe 0x2b shift
+rightsinglequotemark 0x2b altgr
dead_breve 0x2b shift altgr
-y 0x2c addupper
-guillemotleft 0x2c altgr
-guillemotright 0x2d altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+y 0x2c
+Y 0x2c shift
+guillemotright 0x2c altgr
+U203A 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+guillemotleft 0x2d altgr
+U2039 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
-leftdoublequotemark 0x2f altgr
-rightdoublequotemark 0x30 altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+doublelowquotemark 0x2f altgr
+singlelowquotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+leftdoublequotemark 0x30 altgr
+leftsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+rightdoublequotemark 0x31 altgr
+rightsinglequotemark 0x31 shift altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
-horizconnector 0x33 altgr
+periodcentered 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
-periodcentered 0x34 altgr
+U2026 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
-dead_belowdot 0x35 altgr
-dead_abovedot 0x35 shift altgr
+endash 0x35 altgr
+emdash 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/de-ch b/pc-bios/keymaps/de-ch
index 852f8b8dbb..ad37f6cc19 100644
--- a/pc-bios/keymaps/de-ch
+++ b/pc-bios/keymaps/de-ch
@@ -1,169 +1,836 @@
-# rdesktop Swiss-German (de-ch) keymap file
-# 2003-06-03 by noldi@tristar.ch
#
-include common
-map 0x00000807
-#
-# Scan Code 1
-section 0x29
-degree 0x29 shift
-notsign 0x29 altgr inhibit
-#
-# Scan Code 2
-plus 0x2 shift
-brokenbar 0x02 altgr
-#
-# Scan Code 3
+# generated by qemu-keymap
+# model : pc105
+# layout : ch
+# variant : -
+# options : -
+
+# name: "German (Switzerland)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
+plus 0x02 shift
+bar 0x02 altgr
+exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
at 0x03 altgr
-#
-# Scan Code 4
+oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
asterisk 0x04 shift
numbersign 0x04 altgr
-#
-# Scan Code 5
+sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
ccedilla 0x05 shift
-onequarter 0x05 altgr inhibit
-#
-# Scan Code 6
+onequarter 0x05 altgr
+dollar 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
-onehalf 0x06 altgr inhibit
-#
-# Scan Code 7
+onehalf 0x06 altgr
+threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
notsign 0x07 altgr
-#
-# Scan Code 8
+fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
bar 0x08 altgr
-#
-# Scan Code 9
+seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
cent 0x09 altgr
-#
-# Scan Code 10
+trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
-#
-# Scan Code 11
+bracketright 0x0a altgr
+plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
-braceright 0x0b altgr inhibit
-#
-# Scan Code 12
+braceright 0x0b altgr
+degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
apostrophe 0x0c
question 0x0c shift
dead_acute 0x0c altgr
-#
-# Scan Code 13
+questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
dead_circumflex 0x0d
dead_grave 0x0d shift
dead_tilde 0x0d altgr
-#
-# Scan Code 19
+dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
+Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
-#
-# Scan Code 22
-z 0x15 addupper
-#
-# Scan Code 27
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+paragraph 0x13 altgr
+registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+tslash 0x14 altgr
+Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+z 0x15
+Z 0x15 shift
+leftarrow 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+downarrow 0x16 altgr
+uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+rightarrow 0x17 altgr
+idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oe 0x18 altgr
+OE 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+thorn 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
udiaeresis 0x1a
egrave 0x1a shift
bracketleft 0x1a altgr
-#
-# Scan Code 28
+dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dead_diaeresis 0x1b
exclam 0x1b shift
bracketright 0x1b altgr
-#
-# Scan Code 40
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+ae 0x1e altgr
+AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+eth 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+dstroke 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+eng 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+hstroke 0x23 altgr
+Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
odiaeresis 0x27
eacute 0x27 shift
-#
-# Scan Code 41
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
adiaeresis 0x28
agrave 0x28 shift
braceleft 0x28 altgr
-#
-# Scan Code 42 (only on international keyboards)
+dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+section 0x29
+degree 0x29 shift
+notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
dollar 0x2b
sterling 0x2b shift
braceright 0x2b altgr
-#
-# Scan Code 45 (only on international keyboards)
-backslash 0x56 altgr
-#
-# Scan Code 46
-y 0x2c addupper
-#
-# Scan Code 53
+dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+y 0x2c
+Y 0x2c shift
+guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+cent 0x2e altgr
+copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+mu 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
-#
-# Scan Code 54
+horizconnector 0x33 altgr
+multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
-#
-# Scan Code 55
+periodcentered 0x34 altgr
+division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
-#
-# Suppress Windows unsupported AltGr keys
-#
-# Scan Code 17
-paragraph 0x10 altgr inhibit
-#
-# Scan Code 21
-tslash 0x14 altgr inhibit
-#
-# Scan Code 22
-leftarrow 0x15 altgr inhibit
-#
-# Scan Code 23
-downarrow 0x16 altgr inhibit
-#
-# Scan Code 24
-rightarrow 0x17 altgr inhibit
-#
-# Scan Code 25
-oslash 0x18 altgr inhibit
-#
-# Scan Code 26
-thorn 0x19 altgr inhibit
-#
-# Scan Code 31
-ae 0x1e altgr inhibit
-#
-# Scan Code 32
-ssharp 0x1f altgr inhibit
-#
-# Scan Code 33
-eth 0x20 altgr inhibit
-#
-# Scan Code 34
-dstroke 0x21 altgr inhibit
-#
-# Scan Code 35
-eng 0x22 altgr inhibit
-#
-# Scan Code 36
-hstroke 0x23 altgr inhibit
-#
-# Scan Code 38
-kra 0x25 altgr inhibit
-#
-# Scan Code 39
-lstroke 0x26 altgr inhibit
-#
-# Scan Code 46
-guillemotleft 0x2c altgr inhibit
-#
-# Scan Code 47
-guillemotright 0x2d altgr inhibit
-#
-# Scan Code 49
-leftdoublequotemark 0x2f altgr inhibit
-#
-# Scan Code 50
-rightdoublequotemark 0x30 altgr inhibit
-#
-# Scan Code 52
-mu 0x32 altgr inhibit
+dead_belowdot 0x35 altgr
+dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+backslash 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/en-gb b/pc-bios/keymaps/en-gb
index b45f06c7ce..999cca7c71 100644
--- a/pc-bios/keymaps/en-gb
+++ b/pc-bios/keymaps/en-gb
@@ -1,119 +1,835 @@
-# generated from XKB map gb
-include common
-map 0x809
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : gb
+# variant : -
+# options : -
+
+# name: "English (UK)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
twosuperior 0x03 altgr
oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
sterling 0x04 shift
threesuperior 0x04 altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
EuroSign 0x05 altgr
+onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
asciicircum 0x07 shift
threequarters 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
dead_cedilla 0x0d altgr
dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
bracketleft 0x1a
braceleft 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketright 0x1b
braceright 0x1b shift
dead_tilde 0x1b altgr
dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
semicolon 0x27
colon 0x27 shift
dead_acute 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
apostrophe 0x28
at 0x28 shift
dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
grave 0x29
notsign 0x29 shift
bar 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
numbersign 0x2b
asciitilde 0x2b shift
dead_grave 0x2b altgr
dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
backslash 0x56
bar 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+Multi_key 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/en-us b/pc-bios/keymaps/en-us
index f5784bbb39..a70e03adc0 100644
--- a/pc-bios/keymaps/en-us
+++ b/pc-bios/keymaps/en-us
@@ -1,35 +1,747 @@
-# generated from XKB map us
-include common
-map 0x409
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : us
+# variant : -
+# options : -
+
+# name: "English (US)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
at 0x03 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
asciicircum 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
bracketleft 0x1a
braceleft 0x1a shift
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketright 0x1b
braceright 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
semicolon 0x27
colon 0x27 shift
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
apostrophe 0x28
quotedbl 0x28 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
grave 0x29
asciitilde 0x29 shift
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
backslash 0x2b
bar 0x2b shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/es b/pc-bios/keymaps/es
index 0c29eec5ad..53e66e88c7 100644
--- a/pc-bios/keymaps/es
+++ b/pc-bios/keymaps/es
@@ -1,105 +1,835 @@
-# generated from XKB map es
-include common
-map 0x40a
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : es
+# variant : -
+# options : -
+
+# name: "Spanish"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
bar 0x02 altgr
+exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
at 0x03 altgr
oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
periodcentered 0x04 shift
numbersign 0x04 altgr
sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
asciitilde 0x05 altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
notsign 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
+braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
+bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
+bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
+braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
apostrophe 0x0c
question 0x0c shift
+backslash 0x0c altgr
+questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
exclamdown 0x0d
questiondown 0x0d shift
+dead_tilde 0x0d altgr
+asciitilde 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
dead_grave 0x1a
dead_circumflex 0x1a shift
bracketleft 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
plus 0x1b
asterisk 0x1b shift
bracketright 0x1b altgr
dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ntilde 0x27
Ntilde 0x27 shift
+asciitilde 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
dead_acute 0x28
dead_diaeresis 0x28 shift
braceleft 0x28 altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
masculine 0x29
ordfeminine 0x29 shift
backslash 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
ccedilla 0x2b
Ccedilla 0x2b shift
braceright 0x2b altgr
dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
-less 0x56
-greater 0x56 shift
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
+periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/et b/pc-bios/keymaps/et
index 85541a3772..7bed679bc9 100644
--- a/pc-bios/keymaps/et
+++ b/pc-bios/keymaps/et
@@ -1,85 +1,745 @@
-map 0x00000425
-include common
-
-#
-# Top row
#
-dead_caron 0x29
-dead_tilde 0x29 shift
-
-# 1
-exclam 0x2 shift
-
-# 2
-quotedbl 0x3 shift
-at 0x3 altgr
-
-# 3
-numbersign 0x4 shift
-sterling 0x4 altgr
-# 4
-currency 0x5 shift
-dollar 0x5 altgr
-# 5
-percent 0x6 shift
-# 6
-ampersand 0x7 shift
-# 7
-slash 0x8 shift
-braceleft 0x8 altgr
-# 8
-parenleft 0x9 shift
-bracketleft 0x9 altgr
-# 9
-parenright 0xa shift
-bracketright 0xa altgr
-# 0
-equal 0xb shift
-braceright 0xb altgr
-
-plus 0xc
-question 0xc shift
-backslash 0xc altgr
-
-acute 0xd
-dead_acute 0xd
-grave 0xd shift
-dead_grave 0xd shift
+# generated by qemu-keymap
+# model : pc105
+# layout : et
+# variant : -
+# options : -
-#
-# QWERTY first row
-#
-EuroSign 0x12 altgr
-udiaeresis 0x1a
-Udiaeresis 0x1a shift
-otilde 0x1b
-Otilde 0x1b shift
-section 0x1b altgr
+# name: "Amharic"
-#
-# QWERTY second row
-#
-scaron 0x1f altgr
-Scaron 0x1f altgr shift
-odiaeresis 0x27
-Odiaeresis 0x27 shift
-adiaeresis 0x28
-Adiaeresis 0x28 shift
-asciicircum 0x28 altgr
-apostrophe 0x2b
-asterisk 0x2b shift
-onehalf 0x2b altgr
-#
-# QWERTY third row
-#
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+U1369 0x02
+U1372 0x02 shift
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+U136A 0x03
+U1373 0x03 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+U136B 0x04
+U1374 0x04 shift
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+U136C 0x05
+U1375 0x05 shift
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+U136D 0x06
+U1376 0x06 shift
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+U136E 0x07
+U1377 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+U136F 0x08
+U1378 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+U1370 0x09
+U1379 0x09 shift
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+U1371 0x0a
+U137A 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+U137B 0x0b
+U137C 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+minus 0x0c
+underscore 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+equal 0x0d
+plus 0x0d shift
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+U1240 0x10
+U1250 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+U12C8 0x11
+VoidSymbol 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+UFE69 0x12
+UFE70 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+U1228 0x13
+VoidSymbol 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+U1270 0x14
+U1320 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+U12E8 0x15
+VoidSymbol 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+UFE75 0x16
+UFE76 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+UFE71 0x17
+UFE72 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+UFE73 0x18
+UFE74 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+U1350 0x19
+U1330 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+U1340 0x1a
+U1338 0x1a shift
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+U1328 0x1b
+U1280 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+UFE67 0x1e
+UFE68 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+U1230 0x1f
+U1220 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+U12F0 0x20
+U12F8 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+U1348 0x21
+VoidSymbol 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+U1308 0x22
+U1318 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+U1200 0x23
+U1210 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+U1300 0x24
+VoidSymbol 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+U12A8 0x25
+U12B8 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+U1208 0x26
+VoidSymbol 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+U1362 0x27
+U1361 0x27 shift
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+U1366 0x28
+U1365 0x28 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
+VoidSymbol 0x2b
+U2010 0x2b shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+U12D8 0x2c
+U12E0 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+U12A0 0x2d
+U12D0 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+U1278 0x2e
+UFE78 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+U1238 0x2f
+U1268 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+U1260 0x30
+VoidSymbol 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+U1290 0x31
+U1298 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+U1218 0x32
+VoidSymbol 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
+U1363 0x33
+VoidSymbol 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
+U1364 0x34
+VoidSymbol 0x34 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+U1367 0x35
+question 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
less 0x56
greater 0x56 shift
bar 0x56 altgr
-zcaron 0x2c altgr
-Zcaron 0x2c altgr shift
-comma 0x33
-semicolon 0x33 shift
-period 0x34
-colon 0x34 shift
-minus 0x35
-underscore 0x35 shift
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym ISO_Next_Group)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/fi b/pc-bios/keymaps/fi
index 4be75865a9..1c7653dc6b 100644
--- a/pc-bios/keymaps/fi
+++ b/pc-bios/keymaps/fi
@@ -1,122 +1,810 @@
-# generated from XKB map se_FI
-include common
-map 0x40b
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : fi
+# variant : -
+# options : -
+
+# name: "Finnish"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
-exclamdown 0x02 altgr
-onesuperior 0x02 shift altgr
+exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
at 0x03 altgr
-twosuperior 0x03 shift altgr
+rightdoublequotemark 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
sterling 0x04 altgr
-threesuperior 0x04 shift altgr
+guillemotright 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
currency 0x05 shift
dollar 0x05 altgr
-onequarter 0x05 shift altgr
+guillemotleft 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
-onehalf 0x06 altgr
-cent 0x06 shift altgr
+permille 0x06 altgr
+leftdoublequotemark 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-yen 0x07 altgr
-fiveeighths 0x07 shift altgr
+singlelowquotemark 0x07 altgr
+doublelowquotemark 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
-division 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
-guillemotleft 0x09 shift altgr
+less 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
-guillemotright 0x0a shift altgr
+greater 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
plus 0x0c
question 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
dead_acute 0x0d
dead_grave 0x0d shift
-plusminus 0x0d altgr
-notsign 0x0d shift altgr
-at 0x10 altgr
-Greek_OMEGA 0x10 shift altgr
-lstroke 0x11 altgr
-Lstroke 0x11 shift altgr
+dead_cedilla 0x0d altgr
+dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
-cent 0x12 shift altgr
-registered 0x13 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
thorn 0x14 altgr
THORN 0x14 shift altgr
-leftarrow 0x15 altgr
-yen 0x15 shift altgr
-downarrow 0x16 altgr
-uparrow 0x16 shift altgr
-rightarrow 0x17 altgr
-idotless 0x17 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+idotless 0x17 altgr
+bar 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oe 0x18 altgr
OE 0x18 shift altgr
-thorn 0x19 altgr
-THORN 0x19 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+dead_horn 0x19 altgr
+dead_hook 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
aring 0x1a
Aring 0x1a shift
-dead_diaeresis 0x1a altgr
+dead_doubleacute 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dead_diaeresis 0x1b
dead_circumflex 0x1b shift
dead_tilde 0x1b altgr
-dead_caron 0x1b shift altgr
-ordfeminine 0x1e altgr
-masculine 0x1e shift altgr
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+schwa 0x1e altgr
+SCHWA 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
-section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
-dstroke 0x21 altgr
-ordfeminine 0x21 shift altgr
-eng 0x22 altgr
-ENG 0x22 shift altgr
-hstroke 0x23 altgr
-Hstroke 0x23 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
-ampersand 0x25 shift altgr
-lstroke 0x26 altgr
-Lstroke 0x26 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+dead_stroke 0x26 altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
odiaeresis 0x27
Odiaeresis 0x27 shift
oslash 0x27 altgr
-Ooblique 0x27 shift altgr
+Oslash 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
adiaeresis 0x28
Adiaeresis 0x28 shift
ae 0x28 altgr
AE 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
section 0x29
onehalf 0x29 shift
-paragraph 0x29 altgr
-threequarters 0x29 shift altgr
+dead_stroke 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
apostrophe 0x2b
asterisk 0x2b shift
-acute 0x2b altgr
-multiply 0x2b shift altgr
-guillemotleft 0x2c altgr
-guillemotright 0x2d altgr
-copyright 0x2e altgr
-leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
-rightdoublequotemark 0x30 altgr
-apostrophe 0x30 shift altgr
+dead_caron 0x2b altgr
+dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+ezh 0x2c altgr
+EZH 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+multiply 0x2d altgr
+periodcentered 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+eng 0x31 altgr
+ENG 0x31 shift altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
-masculine 0x32 shift altgr
+emdash 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
-dead_cedilla 0x33 altgr
-dead_ogonek 0x33 shift altgr
+rightsinglequotemark 0x33 altgr
+leftsinglequotemark 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
-periodcentered 0x34 altgr
+dead_belowdot 0x34 altgr
dead_abovedot 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
-hyphen 0x35 altgr
-macron 0x35 shift altgr
+endash 0x35 altgr
+dead_belowcomma 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
nobreakspace 0x39 altgr
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/fo b/pc-bios/keymaps/fo
index c00d9d4def..e69575bcb7 100644
--- a/pc-bios/keymaps/fo
+++ b/pc-bios/keymaps/fo
@@ -1,76 +1,837 @@
-map 0x438
-include common
-
-#
-# Top row
#
-onehalf 0x29
-section 0x29 shift
+# generated by qemu-keymap
+# model : pc105
+# layout : fo
+# variant : -
+# options : -
-# 1
-exclam 0x2 shift
-
-# 2
-quotedbl 0x3 shift
-at 0x3 altgr
-
-# 3
-numbersign 0x4 shift
-sterling 0x4 altgr
-# 4
-currency 0x5 shift
-dollar 0x5 altgr
-# 5
-percent 0x6 shift
-# 6
-ampersand 0x7 shift
-# 7
-slash 0x8 shift
-braceleft 0x8 altgr
-# 8
-parenleft 0x9 shift
-bracketleft 0x9 altgr
-# 9
-parenright 0xa shift
-bracketright 0xa altgr
-# 0
-equal 0xb shift
-braceright 0xb altgr
-
-plus 0xc
-question 0xc shift
-plusminus 0xc altgr
-
-bar 0xd altgr
-dead_acute 0xd
+# name: "Faroese"
-#
-# QWERTY first row
-#
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
+exclam 0x02 shift
+exclamdown 0x02 altgr
+onesuperior 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
+quotedbl 0x03 shift
+at 0x03 altgr
+twosuperior 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
+numbersign 0x04 shift
+sterling 0x04 altgr
+threesuperior 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
+currency 0x05 shift
+dollar 0x05 altgr
+onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
+percent 0x06 shift
+onehalf 0x06 altgr
+cent 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
+ampersand 0x07 shift
+yen 0x07 altgr
+fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
+slash 0x08 shift
+braceleft 0x08 altgr
+division 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
+parenleft 0x09 shift
+bracketleft 0x09 altgr
+guillemotleft 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
+parenright 0x0a shift
+bracketright 0x0a altgr
+guillemotright 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
+equal 0x0b shift
+braceright 0x0b altgr
+degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+plus 0x0c
+question 0x0c shift
+plusminus 0x0c altgr
+questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+dead_acute 0x0d
+dead_grave 0x0d shift
+bar 0x0d altgr
+brokenbar 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
+Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+registered 0x13 altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+thorn 0x14 altgr
+THORN 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+leftarrow 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+downarrow 0x16 altgr
+uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+rightarrow 0x17 altgr
+idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oe 0x18 altgr
+OE 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+thorn 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
aring 0x1a
Aring 0x1a shift
-eth 0x1b addupper
-asciitilde 0x1b altgr
+dead_diaeresis 0x1a altgr
+dead_circumflex 0x1a shift altgr
-#
-# QWERTY second row
-#
-ae 0x27 addupper
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+eth 0x1b
+ETH 0x1b shift
+dead_tilde 0x1b altgr
+dead_caron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+ordfeminine 0x1e altgr
+masculine 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+eth 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+dstroke 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+eng 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+hstroke 0x23 altgr
+Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+ae 0x27
+AE 0x27 shift
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
oslash 0x28
-Ooblique 0x28 shift
+Oslash 0x28 shift
+dead_circumflex 0x28 altgr
+dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+onehalf 0x29
+section 0x29 shift
+threequarters 0x29 altgr
+paragraph 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
apostrophe 0x2b
asterisk 0x2b shift
+dead_doubleacute 0x2b altgr
+multiply 0x2b shift altgr
-#
-# QWERTY third row
-#
-less 0x56
-greater 0x56 shift
-backslash 0x56 altgr
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+copyright 0x2e altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+mu 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
+dead_cedilla 0x33 altgr
+dead_ogonek 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
+periodcentered 0x34 altgr
+dead_abovedot 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
+hyphen 0x35 altgr
+macron 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+nobreakspace 0x39 altgr
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+backslash 0x56 altgr
+notsign 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/fr b/pc-bios/keymaps/fr
index ba5a176c31..5b25227455 100644
--- a/pc-bios/keymaps/fr
+++ b/pc-bios/keymaps/fr
@@ -1,181 +1,837 @@
-include common
-map 0x40c
#
-# Top row
-#
-twosuperior 0x29
-notsign 0x29 altgr
-
+# generated by qemu-keymap
+# model : pc105
+# layout : fr
+# variant : -
+# options : -
+
+# name: "French"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
ampersand 0x02
1 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+# evdev 3 (0x3), QKeyCode "2", number 0x3
eacute 0x03
2 0x03 shift
asciitilde 0x03 altgr
oneeighth 0x03 shift altgr
+# evdev 4 (0x4), QKeyCode "3", number 0x4
quotedbl 0x04
3 0x04 shift
numbersign 0x04 altgr
+sterling 0x04 shift altgr
+# evdev 5 (0x5), QKeyCode "4", number 0x5
apostrophe 0x05
4 0x05 shift
braceleft 0x05 altgr
+dollar 0x05 shift altgr
+# evdev 6 (0x6), QKeyCode "5", number 0x6
parenleft 0x06
5 0x06 shift
bracketleft 0x06 altgr
threeeighths 0x06 shift altgr
+# evdev 7 (0x7), QKeyCode "6", number 0x7
minus 0x07
6 0x07 shift
bar 0x07 altgr
fiveeighths 0x07 shift altgr
+# evdev 8 (0x8), QKeyCode "7", number 0x8
egrave 0x08
7 0x08 shift
grave 0x08 altgr
seveneighths 0x08 shift altgr
+# evdev 9 (0x9), QKeyCode "8", number 0x9
underscore 0x09
8 0x09 shift
backslash 0x09 altgr
trademark 0x09 shift altgr
+# evdev 10 (0xa), QKeyCode "9", number 0xa
ccedilla 0x0a
9 0x0a shift
asciicircum 0x0a altgr
plusminus 0x0a shift altgr
+# evdev 11 (0xb), QKeyCode "0", number 0xb
agrave 0x0b
0 0x0b shift
at 0x0b altgr
+degree 0x0b shift altgr
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
parenright 0x0c
degree 0x0c shift
bracketright 0x0c altgr
questiondown 0x0c shift altgr
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
braceright 0x0d altgr
dead_ogonek 0x0d shift altgr
-#
-# AZERTY first row
-#
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
-a 0x10 addupper
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+a 0x10
+A 0x10 shift
ae 0x10 altgr
AE 0x10 shift altgr
-z 0x11 addupper
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+z 0x11
+Z 0x11 shift
guillemotleft 0x11 altgr
+less 0x11 shift altgr
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+cent 0x12 shift altgr
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
dead_circumflex 0x1a
dead_diaeresis 0x1a shift
+dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dollar 0x1b
sterling 0x1b shift
currency 0x1b altgr
dead_macron 0x1b shift altgr
-#
-# AZERTY second row
-#
-q 0x1e addupper
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+q 0x1e
+Q 0x1e shift
+at 0x1e altgr
Greek_OMEGA 0x1e shift altgr
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
+section 0x1f shift altgr
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
-m 0x27 addupper
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+m 0x27
+M 0x27 shift
+mu 0x27 altgr
masculine 0x27 shift altgr
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
ugrave 0x28
percent 0x28 shift
+dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+twosuperior 0x29
+asciitilde 0x29 shift
+notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
asterisk 0x2b
mu 0x2b shift
dead_grave 0x2b altgr
dead_breve 0x2b shift altgr
-#
-# AZERTY third row
-#
-less 0x56
-greater 0x56 shift
-
-w 0x2c addupper
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+w 0x2c
+W 0x2c shift
+lstroke 0x2c altgr
+Lstroke 0x2c shift altgr
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
comma 0x32
question 0x32 shift
dead_acute 0x32 altgr
dead_doubleacute 0x32 shift altgr
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
semicolon 0x33
period 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
colon 0x34
slash 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
exclam 0x35
section 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/fr-be b/pc-bios/keymaps/fr-be
index 62f71286e5..9d2ac5ddf9 100644
--- a/pc-bios/keymaps/fr-be
+++ b/pc-bios/keymaps/fr-be
@@ -1,134 +1,836 @@
-# generated from XKB map be
-include common
-map 0x80c
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : be
+# variant : -
+# options : -
+
+# name: "Belgian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
ampersand 0x02
1 0x02 shift
bar 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
eacute 0x03
2 0x03 shift
at 0x03 altgr
oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
quotedbl 0x04
3 0x04 shift
numbersign 0x04 altgr
sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
apostrophe 0x05
4 0x05 shift
onequarter 0x05 altgr
dollar 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
parenleft 0x06
5 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
section 0x07
6 0x07 shift
asciicircum 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
egrave 0x08
7 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
exclam 0x09
8 0x09 shift
bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
ccedilla 0x0a
9 0x0a shift
braceleft 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
agrave 0x0b
0 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
parenright 0x0c
degree 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
minus 0x0d
underscore 0x0d shift
dead_cedilla 0x0d altgr
dead_ogonek 0x0d shift altgr
-a 0x10 addupper
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+a 0x10
+A 0x10 shift
+at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
-z 0x11 addupper
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+z 0x11
+Z 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
-oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oe 0x18 altgr
+OE 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
dead_circumflex 0x1a
dead_diaeresis 0x1a shift
bracketleft 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dollar 0x1b
asterisk 0x1b shift
bracketright 0x1b altgr
dead_macron 0x1b shift altgr
-q 0x1e addupper
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+q 0x1e
+Q 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
-m 0x27 addupper
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+m 0x27
+M 0x27 shift
dead_acute 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
ugrave 0x28
percent 0x28 shift
dead_acute 0x28 altgr
dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
twosuperior 0x29
threesuperior 0x29 shift
notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
mu 0x2b
sterling 0x2b shift
dead_grave 0x2b altgr
dead_breve 0x2b shift altgr
-w 0x2c addupper
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+w 0x2c
+W 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
comma 0x32
question 0x32 shift
dead_cedilla 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
semicolon 0x33
period 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
colon 0x34
slash 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
equal 0x35
plus 0x35 shift
dead_tilde 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
backslash 0x56 altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/fr-ca b/pc-bios/keymaps/fr-ca
index 13a0306762..736897bc43 100644
--- a/pc-bios/keymaps/fr-ca
+++ b/pc-bios/keymaps/fr-ca
@@ -1,60 +1,768 @@
-# Canadian French
-# By Simon Germain
-include common
-map 0xc0c
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : ca
+# variant : fr
+# options : -
-backslash 0x29 altgr
-plusminus 0x2 altgr
-at 0x3 altgr
-sterling 0x4 altgr
-cent 0x5 altgr
-currency 0x6 altgr
-notsign 0x7 altgr
-numbersign 0x29
-bar 0x29 shift
-twosuperior 0x9 altgr
-threesuperior 0xa altgr
-onequarter 0xb altgr
-onehalf 0xc altgr
-threequarters 0xd altgr
+# name: "French (Canada)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
+exclam 0x02 shift
+plusminus 0x02 altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
+quotedbl 0x03 shift
+at 0x03 altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
+slash 0x04 shift
+sterling 0x04 altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
+dollar 0x05 shift
+cent 0x05 altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
+percent 0x06 shift
+currency 0x06 altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
+question 0x07 shift
+notsign 0x07 altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
+ampersand 0x08 shift
+brokenbar 0x08 altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
+asterisk 0x09 shift
+twosuperior 0x09 altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
+parenleft 0x0a shift
+threesuperior 0x0a altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
+parenright 0x0b shift
+onequarter 0x0b altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+minus 0x0c
+underscore 0x0c shift
+onehalf 0x0c altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+equal 0x0d
+plus 0x0d shift
+threequarters 0x0d altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
section 0x18 altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
paragraph 0x19 altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+dead_circumflex 0x1a
bracketleft 0x1a altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+dead_cedilla 0x1b
+dead_diaeresis 0x1b shift
bracketright 0x1b altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+semicolon 0x27
+colon 0x27 shift
asciitilde 0x27 altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+dead_grave 0x28
braceleft 0x28 altgr
-braceright 0x2b altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+numbersign 0x29
+bar 0x29 shift
+backslash 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
less 0x2b
greater 0x2b shift
-guillemotleft 0x56
-guillemotright 0x56 shift
-degree 0x56 altgr
+braceright 0x2b altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
-eacute 0x35
-dead_acute 0x35 altgr
-dead_grave 0x28
-dead_circumflex 0x1a
-dead_circumflex 0x1a shift
-dead_cedilla 0x1b
-dead_diaeresis 0x1b shift
-exclam 0x2 shift
-quotedbl 0x3 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
apostrophe 0x33 shift
+macron 0x33 altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
-period 0x34 shift
-slash 0x4 shift
-dollar 0x5 shift
-percent 0x6 shift
-question 0x7 shift
-ampersand 0x8 shift
-asterisk 0x9 shift
-parenleft 0xa shift
-parenright 0xb shift
-underscore 0xc shift
-minus 0xc
-underscore 0xc shift
-equal 0xd
-plus 0xd shift
-semicolon 0x27
-colon 0x27 shift
+hyphen 0x34 altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+eacute 0x35
+Eacute 0x35 shift
+dead_acute 0x35 altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+nobreakspace 0x39 altgr
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+guillemotleft 0x56
+guillemotright 0x56 shift
+degree 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/fr-ch b/pc-bios/keymaps/fr-ch
index 4620d2033b..40e1fefd54 100644
--- a/pc-bios/keymaps/fr-ch
+++ b/pc-bios/keymaps/fr-ch
@@ -1,114 +1,836 @@
-# generated from XKB map fr_CH
-include common
-map 0x100c
-exclam 0x02 shift
-onesuperior 0x02 altgr
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : ch
+# variant : fr
+# options : -
+
+# name: "French (Switzerland)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
+plus 0x02 shift
+bar 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
-twosuperior 0x03 altgr
+at 0x03 altgr
oneeighth 0x03 shift altgr
-section 0x04 shift
-threesuperior 0x04 altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
+asterisk 0x04 shift
+numbersign 0x04 altgr
sterling 0x04 shift altgr
-dollar 0x05 shift
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
+ccedilla 0x05 shift
onequarter 0x05 altgr
-currency 0x05 shift altgr
+dollar 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-threequarters 0x07 altgr
+notsign 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
-braceleft 0x08 altgr
+bar 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
-bracketleft 0x09 altgr
+cent 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
-ssharp 0x0c
+degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+apostrophe 0x0c
question 0x0c shift
-backslash 0x0c altgr
+dead_acute 0x0c altgr
questiondown 0x0c shift altgr
-acute 0x0d
-dead_acute 0x0d
-grave 0x0d shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+dead_circumflex 0x0d
dead_grave 0x0d shift
-dead_cedilla 0x0d altgr
+dead_tilde 0x0d altgr
dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
-z 0x15 addupper
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+z 0x15
+Z 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
-oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oe 0x18 altgr
+OE 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
-udiaeresis 0x1a
-Udiaeresis 0x1a shift
-dead_diaeresis 0x1a altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+egrave 0x1a
+udiaeresis 0x1a shift
+bracketleft 0x1a altgr
dead_abovering 0x1a shift altgr
-plus 0x1b
-asterisk 0x1b shift
-asciitilde 0x1b altgr
-dead_tilde 0x1b altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+dead_diaeresis 0x1b
+exclam 0x1b shift
+bracketright 0x1b altgr
dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
-odiaeresis 0x27
-Odiaeresis 0x27 shift
-dead_doubleacute 0x27 altgr
-adiaeresis 0x28
-Adiaeresis 0x28 shift
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+eacute 0x27
+odiaeresis 0x27 shift
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+agrave 0x28
+adiaeresis 0x28 shift
+braceleft 0x28 altgr
dead_caron 0x28 shift altgr
-asciicircum 0x29
-dead_circumflex 0x29
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+section 0x29
degree 0x29 shift
notsign 0x29 altgr
-numbersign 0x2b
-apostrophe 0x2b shift
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
+dollar 0x2b
+sterling 0x2b shift
+braceright 0x2b altgr
dead_breve 0x2b shift altgr
-y 0x2c addupper
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+y 0x2c
+Y 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+backslash 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/hr b/pc-bios/keymaps/hr
index 613aa6925d..6b89f09922 100644
--- a/pc-bios/keymaps/hr
+++ b/pc-bios/keymaps/hr
@@ -1,125 +1,837 @@
-# generated from XKB map hr
-include common
-map 0x41a
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : hr
+# variant : -
+# options : -
+
+# name: "Croatian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
asciitilde 0x02 altgr
dead_tilde 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
dead_caron 0x03 altgr
caron 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
asciicircum 0x04 altgr
dead_circumflex 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
dead_breve 0x05 altgr
breve 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
degree 0x06 altgr
dead_abovering 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
dead_ogonek 0x07 altgr
ogonek 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
grave 0x08 altgr
dead_grave 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
dead_abovedot 0x09 altgr
abovedot 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
dead_acute 0x0a altgr
apostrophe 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
dead_doubleacute 0x0b altgr
doubleacute 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
apostrophe 0x0c
question 0x0c shift
dead_diaeresis 0x0c altgr
diaeresis 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
plus 0x0d
asterisk 0x0d shift
dead_cedilla 0x0d altgr
cedilla 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
backslash 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
bar 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
-z 0x15 addupper
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+z 0x15
+Z 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
scaron 0x1a
Scaron 0x1a shift
division 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dstroke 0x1b
Dstroke 0x1b shift
multiply 0x1b altgr
dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
-ssharp 0x1f altgr
-section 0x1f shift altgr
-eth 0x20 altgr
-ETH 0x20 shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+doublelowquotemark 0x1f altgr
+guillemotright 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+leftdoublequotemark 0x20 altgr
+guillemotleft 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
bracketleft 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
bracketright 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
lstroke 0x25 altgr
ampersand 0x25 shift altgr
-Lstroke 0x26 altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ccaron 0x27
Ccaron 0x27 shift
dead_acute 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
cacute 0x28
Cacute 0x28 shift
ssharp 0x28 altgr
dead_caron 0x28 shift altgr
-dead_cedilla 0x29
-dead_diaeresis 0x29 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+grave 0x29
+asciitilde 0x29 shift
notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
zcaron 0x2b
Zcaron 0x2b shift
currency 0x2b altgr
dead_breve 0x2b shift altgr
-y 0x2c addupper
-guillemotleft 0x2c altgr
-less 0x2c shift altgr
-guillemotright 0x2d altgr
-greater 0x2d shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+y 0x2c
+Y 0x2c shift
+leftsinglequotemark 0x2c altgr
+guillemotright 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+rightsinglequotemark 0x2d altgr
+guillemotleft 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
at 0x2f altgr
grave 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
braceleft 0x30 altgr
apostrophe 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
braceright 0x31 altgr
-section 0x32 altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+asciicircum 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
-horizconnector 0x33 altgr
+less 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
-periodcentered 0x34 altgr
+greater 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/hu b/pc-bios/keymaps/hu
index 8aba444417..a6bd66d08d 100644
--- a/pc-bios/keymaps/hu
+++ b/pc-bios/keymaps/hu
@@ -1,115 +1,836 @@
-# Hungarian keyboard layout (QWERTZ)
-# Created by: The NeverGone <never@delfin.klte.hu>
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : hu
+# variant : -
+# options : -
-include common
-map 0x40e
+# name: "Hungarian"
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
-# AltGr keys:
-notsign 0x29 altgr
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
+apostrophe 0x02 shift
asciitilde 0x02 altgr
-caron 0x03 altgr
+dead_tilde 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
+quotedbl 0x03 shift
+dead_caron 0x03 altgr
+caron 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
+plus 0x04 shift
asciicircum 0x04 altgr
-breve 0x05 altgr
-degree 0x06 altgr
-ogonek 0x07 altgr
+dead_circumflex 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
+exclam 0x05 shift
+dead_breve 0x05 altgr
+breve 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
+percent 0x06 shift
+dead_abovering 0x06 altgr
+degree 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
+slash 0x07 shift
+dead_ogonek 0x07 altgr
+ogonek 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
+equal 0x08 shift
grave 0x08 altgr
-abovedot 0x09 altgr
-acute 0x0a altgr
-doubleacute 0x0b altgr
-diaeresis 0x0c altgr
-cedilla 0x0d altgr
+dead_grave 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
+parenleft 0x09 shift
+dead_abovedot 0x09 altgr
+abovedot 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
+parenright 0x0a shift
+dead_acute 0x0a altgr
+acute 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+odiaeresis 0x0b
+Odiaeresis 0x0b shift
+dead_doubleacute 0x0b altgr
+doubleacute 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+udiaeresis 0x0c
+Udiaeresis 0x0c shift
+dead_diaeresis 0x0c altgr
+diaeresis 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+oacute 0x0d
+Oacute 0x0d shift
+dead_cedilla 0x0d altgr
+cedilla 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
backslash 0x10 altgr
+Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
bar 0x11 altgr
-EuroSign 0x12 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+Adiaeresis 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+paragraph 0x13 altgr
+registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+tslash 0x14 altgr
+Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+z 0x15
+Z 0x15 shift
+endash 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+EuroSign 0x16 altgr
+uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
Iacute 0x17 altgr
+iacute 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+doublelowquotemark 0x18 altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+rightdoublequotemark 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+odoubleacute 0x1a
+Odoubleacute 0x1a shift
division 0x1a altgr
+dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+uacute 0x1b
+Uacute 0x1b shift
multiply 0x1b altgr
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+adiaeresis 0x1e altgr
+Adiaeresis 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
dstroke 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
Dstroke 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
bracketleft 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
bracketright 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+hstroke 0x23 altgr
+Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
iacute 0x24 altgr
+Iacute 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
lstroke 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
Lstroke 0x26 altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+eacute 0x27
+Eacute 0x27 shift
dollar 0x27 altgr
+cent 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+aacute 0x28
+Aacute 0x28 shift
ssharp 0x28 altgr
+dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+0 0x29
+section 0x29 shift
+notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
+udoubleacute 0x2b
+Udoubleacute 0x2b shift
currency 0x2b altgr
-less 0x56 altgr
+dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+y 0x2c
+Y 0x2c shift
greater 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
numbersign 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
ampersand 0x2e altgr
+copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
at 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
braceleft 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
braceright 0x31 altgr
-semicolon 0x33 altgr
-asterisk 0x35 altgr
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+less 0x32 altgr
+masculine 0x32 shift altgr
-# Shift keys:
-section 0x29 shift
-apostrophe 0x02 shift
-quotedbl 0x03 shift
-plus 0x04 shift
-exclam 0x05 shift
-percent 0x06 shift
-slash 0x07 shift
-equal 0x08 shift
-parenleft 0x09 shift
-parenright 0x0a shift
-Odiaeresis 0x0b shift
-Udiaeresis 0x0c shift
-Oacute 0x0d shift
-Z 0x15 shift
-Odoubleacute 0x1a shift
-Uacute 0x1b shift
-Eacute 0x27 shift
-Aacute 0x28 shift
-Udoubleacute 0x2b shift
-Y 0x2c shift
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
+comma 0x33
question 0x33 shift
+semicolon 0x33 altgr
+multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
+period 0x34
colon 0x34 shift
+greater 0x34 altgr
+division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+minus 0x35
underscore 0x35 shift
-F13 0x3b shift
-F14 0x3c shift
-F15 0x3d shift
-F16 0x3e shift
-F17 0x3f shift
-F18 0x40 shift
-F19 0x41 shift
-F20 0x42 shift
-F21 0x43 shift
-F22 0x44 shift
-F23 0x57 shift
-F24 0x58 shift
-
-
-# Ctrl keys:
-F25 0x3b ctrl
-F26 0x3c ctrl
-F27 0x3d ctrl
-F28 0x3e ctrl
-F29 0x3f ctrl
-F30 0x40 ctrl
-F31 0x41 ctrl
-F32 0x42 ctrl
-F33 0x43 ctrl
-F34 0x44 ctrl
-F35 0x57 ctrl
-#NoSymbol 0x58 ctrl
+asterisk 0x35 altgr
+dead_abovedot 0x35 shift altgr
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
-0 0x29
-odiaeresis 0x0b
-udiaeresis 0x0c
-oacute 0x0d
-z 0x15
-odoubleacute 0x1a
-uacute 0x1b
-eacute 0x27
-aacute 0x28
-udoubleacute 0x2b
-y 0x2c
-comma 0x33
-period 0x34
-minus 0x35
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+iacute 0x56
+Iacute 0x56 shift
+less 0x56 altgr
+greater 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/is b/pc-bios/keymaps/is
index 935ac1da7a..063675d118 100644
--- a/pc-bios/keymaps/is
+++ b/pc-bios/keymaps/is
@@ -1,139 +1,837 @@
-# 2004-03-16 Halldór Guðmundsson and Morten Lange
-# Keyboard definition file for the Icelandic keyboard
-# to be used in rdesktop 1.3.x ( See rdesktop.org)
-# generated from XKB map de, and changed manually
-# Location for example /usr/local/share/rdesktop/keymaps/is
-include common
-map 0x40f
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : is
+# variant : -
+# options : -
+
+# name: "Icelandic"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
twosuperior 0x03 altgr
oneeighth 0x03 shift altgr
-#section 0x04 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
threesuperior 0x04 altgr
sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
onequarter 0x05 altgr
currency 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-threequarters 0x07 altgr
+notsign 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
-#ssharp 0x0c
+degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
odiaeresis 0x0c
-#question 0x0c shift
Odiaeresis 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
-#acute 0x0d
-minus 0x0d
-#dead_acute 0x0d
-#grave 0x0d shift
-#dead_grave 0x0d shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+minus 0x0d
underscore 0x0d shift
dead_cedilla 0x0d altgr
dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
-#z 0x15 addupper
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
-#thorn 0x19 altgr
-#THORN 0x19 shift altgr
-#udiaeresis 0x1a
-#Udiaeresis 0x1a shift
-#dead_diaeresis 0x1a altgr
-#dead_abovering 0x1a shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+thorn 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
eth 0x1a
ETH 0x1a shift
+dead_diaeresis 0x1a altgr
+dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
apostrophe 0x1b
question 0x1b shift
-#plus 0x1b
-#asterisk 0x1b shift
asciitilde 0x1b altgr
-#grave 0x1b altgr
-#dead_tilde 0x1b altgr
-#dead_macron 0x1b shift altgr
-#ae 0x1e altgr
-#AE 0x1e shift altgr
-#eth 0x20 altgr
-#eth 0x20
-#ETH 0x20 shift altgr
-#ETH 0x20 shift
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+ae 0x1e altgr
+AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+U201E 0x20 altgr
+U201C 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
-#adiaeresis 0x27
-#Adiaeresis 0x27 shift
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ae 0x27
AE 0x27 shift
-dead_doubleacute 0x27 altgr
-#adiaeresis 0x28
-#Adiaeresis 0x28 shift
-#dead_caron 0x28 shift altgr
-#asciicircum 0x29
-acute 0x28
+asciicircum 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
dead_acute 0x28
-#dead_circumflex 0x29
-#degree 0x29 shift
-#notsign 0x29 altgr
+dead_circumflex 0x28 altgr
+dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+dead_abovering 0x29
+dead_diaeresis 0x29 shift
+notsign 0x29 altgr
+hyphen 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
plus 0x2b
asterisk 0x2b shift
grave 0x2b altgr
-#numbersign 0x2b
-#apostrophe 0x2b shift
-#dead_breve 0x2b shift altgr
-#y 0x2c addupper
+dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
-#minus 0x35
-#underscore 0x35 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
thorn 0x35
THORN 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/it b/pc-bios/keymaps/it
index 00ca73a3e2..abc3ed15de 100644
--- a/pc-bios/keymaps/it
+++ b/pc-bios/keymaps/it
@@ -1,115 +1,840 @@
-# generated from XKB map it
-include common
-map 0x410
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : it
+# variant : -
+# options : -
+
+# name: "Italian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
twosuperior 0x03 altgr
-oneeighth 0x03 shift altgr
+dead_doubleacute 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
sterling 0x04 shift
threesuperior 0x04 altgr
+dead_tilde 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
onequarter 0x05 altgr
+oneeighth 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-threequarters 0x07 altgr
+notsign 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
+bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
+bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
-degree 0x0b shift altgr
+dead_ogonek 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
apostrophe 0x0c
question 0x0c shift
grave 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
igrave 0x0d
asciicircum 0x0d shift
asciitilde 0x0d altgr
-dead_ogonek 0x0d shift altgr
+dead_circumflex 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
egrave 0x1a
eacute 0x1a shift
bracketleft 0x1a altgr
-dead_abovering 0x1a shift altgr
+braceleft 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
plus 0x1b
asterisk 0x1b shift
bracketright 0x1b altgr
-dead_macron 0x1b shift altgr
+braceright 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ograve 0x27
ccedilla 0x27 shift
at 0x27 altgr
-dead_doubleacute 0x27 shift altgr
+dead_cedilla 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
agrave 0x28
degree 0x28 shift
numbersign 0x28 altgr
+dead_abovering 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
backslash 0x29
bar 0x29 shift
notsign 0x29 altgr
+brokenbar 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
ugrave 0x2b
section 0x2b shift
dead_grave 0x2b altgr
dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+ntilde 0x31 altgr
+Ntilde 0x31 shift altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
-horizconnector 0x33 altgr
+dead_acute 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
periodcentered 0x34 altgr
-division 0x34 shift altgr
+dead_diaeresis 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
-dead_belowdot 0x35 altgr
-dead_abovedot 0x35 shift altgr
+dead_macron 0x35 altgr
+division 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+guillemotleft 0x56 altgr
+guillemotright 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/ja b/pc-bios/keymaps/ja
index 9d90a78c81..aae93e8c52 100644
--- a/pc-bios/keymaps/ja
+++ b/pc-bios/keymaps/ja
@@ -1,109 +1,751 @@
-# generated from XKB map jp106
-include common
-map 0x411
+#
+# generated by qemu-keymap
+# model : jp106
+# layout : jp
+# variant : -
+# options : -
+
+# name: "Japanese"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
-kana_NU 0x02 altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
-kana_FU 0x03 altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
-kana_A 0x04 altgr
-kana_a 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
-kana_U 0x05 altgr
-kana_u 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
-kana_E 0x06 altgr
-kana_e 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-kana_O 0x07 altgr
-kana_o 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
apostrophe 0x08 shift
-kana_YA 0x08 altgr
-kana_ya 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
-kana_YU 0x09 altgr
-kana_yu 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
-kana_YO 0x0a altgr
-kana_yo 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
asciitilde 0x0b shift
-kana_WA 0x0b altgr
-kana_WO 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
equal 0x0c shift
-kana_HO 0x0c altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
asciicircum 0x0d
asciitilde 0x0d shift
-kana_HE 0x0d altgr
-kana_TA 0x10 altgr
-kana_TE 0x11 altgr
-kana_I 0x12 altgr
-kana_i 0x12 shift altgr
-kana_SU 0x13 altgr
-kana_KA 0x14 altgr
-kana_N 0x15 altgr
-kana_NA 0x16 altgr
-kana_NI 0x17 altgr
-kana_RA 0x18 altgr
-kana_SE 0x19 altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
at 0x1a
grave 0x1a shift
-voicedsound 0x1a altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketleft 0x1b
braceleft 0x1b shift
-semivoicedsound 0x1b altgr
-kana_openingbracket 0x1b shift altgr
-kana_CHI 0x1e altgr
-kana_TO 0x1f altgr
-kana_SHI 0x20 altgr
-kana_HA 0x21 altgr
-kana_KI 0x22 altgr
-kana_KU 0x23 altgr
-kana_MA 0x24 altgr
-kana_NO 0x25 altgr
-kana_RI 0x26 altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
semicolon 0x27
plus 0x27 shift
-kana_RE 0x27 altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
colon 0x28
asterisk 0x28 shift
-kana_KE 0x28 altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
Zenkaku_Hankaku 0x29
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
bracketright 0x2b
braceright 0x2b shift
-kana_MU 0x2b altgr
-kana_closingbracket 0x2b shift altgr
-kana_TSU 0x2c altgr
-kana_tsu 0x2c shift altgr
-kana_SA 0x2d altgr
-kana_SO 0x2e altgr
-kana_HI 0x2f altgr
-kana_KO 0x30 altgr
-kana_MI 0x31 altgr
-kana_MO 0x32 altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
-kana_NE 0x33 altgr
-kana_comma 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
-kana_RU 0x34 altgr
-kana_fullstop 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
-kana_ME 0x35 altgr
-kana_conjunctive 0x35 shift altgr
-Eisu_toggle 0x3a shift
-Execute 0x54 shift
-Kanji 0x70
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Eisu_toggle 0x3a
+Caps_Lock 0x3a shift
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
backslash 0x73
-yen 0x7d
-bar 0x7d shift
underscore 0x73 shift
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
Henkan_Mode 0x79
-Katakana_Real 0x70
-Katakana 0x70
-Muhenkan 0x7b
-Henkan_Mode_Real 0x79
-Henkan_Mode_Ultra 0x79
-backslash_ja 0x73
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+backslash 0x7d
+bar 0x7d shift
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/lt b/pc-bios/keymaps/lt
index 3d9d619ea5..41013675f8 100644
--- a/pc-bios/keymaps/lt
+++ b/pc-bios/keymaps/lt
@@ -1,57 +1,835 @@
-# generated from XKB map lt
-include common
-map 0x427
-exclam 0x02 shift
-aogonek 0x02 altgr
-Aogonek 0x02 shift altgr
-at 0x03 shift
-ccaron 0x03 altgr
-Ccaron 0x03 shift altgr
-numbersign 0x04 shift
-eogonek 0x04 altgr
-Eogonek 0x04 shift altgr
-dollar 0x05 shift
-eabovedot 0x05 altgr
-Eabovedot 0x05 shift altgr
-percent 0x06 shift
-iogonek 0x06 altgr
-Iogonek 0x06 shift altgr
-asciicircum 0x07 shift
-scaron 0x07 altgr
-Scaron 0x07 shift altgr
-ampersand 0x08 shift
-uogonek 0x08 altgr
-Uogonek 0x08 shift altgr
-asterisk 0x09 shift
-umacron 0x09 altgr
-Umacron 0x09 shift altgr
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : lt
+# variant : -
+# options : -
+
+# name: "Lithuanian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+aogonek 0x02
+Aogonek 0x02 shift
+1 0x02 altgr
+exclam 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+ccaron 0x03
+Ccaron 0x03 shift
+2 0x03 altgr
+at 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+eogonek 0x04
+Eogonek 0x04 shift
+3 0x04 altgr
+numbersign 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+eabovedot 0x05
+Eabovedot 0x05 shift
+4 0x05 altgr
+dollar 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+iogonek 0x06
+Iogonek 0x06 shift
+5 0x06 altgr
+percent 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+scaron 0x07
+Scaron 0x07 shift
+6 0x07 altgr
+asciicircum 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+uogonek 0x08
+Uogonek 0x08 shift
+7 0x08 altgr
+ampersand 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+umacron 0x09
+Umacron 0x09 shift
+8 0x09 altgr
+asterisk 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+doublelowquotemark 0x0a
parenleft 0x0a shift
-doublelowquotemark 0x0a altgr
+9 0x0a altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+leftdoublequotemark 0x0b
parenright 0x0b shift
-leftdoublequotemark 0x0b altgr
+0 0x0b altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
-equal 0x0d
-plus 0x0d shift
-zcaron 0x0d altgr
-Zcaron 0x0d shift altgr
+endash 0x0c altgr
+questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+zcaron 0x0d
+Zcaron 0x0d shift
+equal 0x0d altgr
+plus 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
+Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
+EuroSign 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+paragraph 0x13 altgr
+registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+tslash 0x14 altgr
+Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+leftarrow 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+downarrow 0x16 altgr
+uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+rightarrow 0x17 altgr
+idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oslash 0x18 altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+thorn 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
bracketleft 0x1a
braceleft 0x1a shift
+dead_diaeresis 0x1a altgr
+dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketright 0x1b
braceright 0x1b shift
+dead_tilde 0x1b altgr
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+ae 0x1e altgr
+AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+eth 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+dstroke 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+eng 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+hstroke 0x23 altgr
+Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
semicolon 0x27
colon 0x27 shift
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
apostrophe 0x28
quotedbl 0x28 shift
+dead_circumflex 0x28 altgr
+dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
grave 0x29
asciitilde 0x29 shift
+acute 0x29 altgr
+notsign 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
backslash 0x2b
bar 0x2b shift
+dead_grave 0x2b altgr
+dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+cent 0x2e altgr
+copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+mu 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
+horizconnector 0x33 altgr
+multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
+periodcentered 0x34 altgr
+division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
+dead_belowdot 0x35 altgr
+dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
endash 0x56
EuroSign 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/lv b/pc-bios/keymaps/lv
index 1d91727912..27260ce32e 100644
--- a/pc-bios/keymaps/lv
+++ b/pc-bios/keymaps/lv
@@ -1,128 +1,810 @@
-# generated from XKB map lv
-include common
-map 0x426
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : lv
+# variant : -
+# options : -
+
+# name: "Latvian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
at 0x03 shift
twosuperior 0x03 altgr
oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
threesuperior 0x04 altgr
sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
EuroSign 0x05 altgr
cent 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
asciicircum 0x07 shift
threequarters 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
-dead_cedilla 0x0d altgr
-dead_ogonek 0x0d shift altgr
-at 0x10 altgr
-Greek_OMEGA 0x10 shift altgr
-lstroke 0x11 altgr
-Lstroke 0x11 shift altgr
+endash 0x0d altgr
+emdash 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
emacron 0x12 altgr
Emacron 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
rcedilla 0x13 altgr
Rcedilla 0x13 shift altgr
-tslash 0x14 altgr
-Tslash 0x14 shift altgr
-leftarrow 0x15 altgr
-yen 0x15 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
umacron 0x16 altgr
Umacron 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
imacron 0x17 altgr
Imacron 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
omacron 0x18 altgr
Omacron 0x18 shift altgr
-thorn 0x19 altgr
-THORN 0x19 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
bracketleft 0x1a
braceleft 0x1a shift
-dead_diaeresis 0x1a altgr
-dead_abovering 0x1a shift altgr
+guillemotleft 0x1a altgr
+leftdoublequotemark 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketright 0x1b
braceright 0x1b shift
-dead_tilde 0x1b altgr
-dead_macron 0x1b shift altgr
-ISO_Next_Group 0x1c shift
+guillemotright 0x1b altgr
+rightdoublequotemark 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
amacron 0x1e altgr
Amacron 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
scaron 0x1f altgr
Scaron 0x1f shift altgr
-eth 0x20 altgr
-ETH 0x20 shift altgr
-dstroke 0x21 altgr
-ordfeminine 0x21 shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
gcedilla 0x22 altgr
Gcedilla 0x22 shift altgr
-hstroke 0x23 altgr
-Hstroke 0x23 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kcedilla 0x25 altgr
Kcedilla 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lcedilla 0x26 altgr
Lcedilla 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
semicolon 0x27
colon 0x27 shift
-dead_acute 0x27 altgr
-dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
apostrophe 0x28
quotedbl 0x28 shift
leftdoublequotemark 0x28 altgr
doublelowquotemark 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
grave 0x29
asciitilde 0x29 shift
-notsign 0x29 altgr
+acute 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
backslash 0x2b
bar 0x2b shift
-dead_grave 0x2b altgr
-dead_breve 0x2b shift altgr
+grave 0x2b altgr
+breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
zcaron 0x2c altgr
Zcaron 0x2c shift altgr
-guillemotright 0x2d altgr
-greater 0x2d shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
ccaron 0x2e altgr
Ccaron 0x2e shift altgr
-leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
-rightdoublequotemark 0x30 altgr
-apostrophe 0x30 shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
ncedilla 0x31 altgr
Ncedilla 0x31 shift altgr
-mu 0x32 altgr
-masculine 0x32 shift altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
-dead_belowdot 0x35 altgr
-dead_abovedot 0x35 shift altgr
-nobreakspace 0x39 altgr
+abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/mk b/pc-bios/keymaps/mk
index 18c1504842..30a597caa2 100644
--- a/pc-bios/keymaps/mk
+++ b/pc-bios/keymaps/mk
@@ -1,101 +1,747 @@
-# generated from XKB map mk
-include common
-map 0x42f
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : mk
+# variant : -
+# options : -
+
+# name: "Macedonian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
-at 0x03 shift
-doublelowquotemark 0x03 shift altgr
-numbersign 0x04 shift
-leftdoublequotemark 0x04 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
+doublelowquotemark 0x03 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
+leftdoublequotemark 0x04 shift
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
asciicircum 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
-Cyrillic_lje 0x10 altgr
-Cyrillic_LJE 0x10 shift altgr
-Cyrillic_nje 0x11 altgr
-Cyrillic_NJE 0x11 shift altgr
-Cyrillic_ie 0x12 altgr
-Cyrillic_IE 0x12 shift altgr
-Cyrillic_er 0x13 altgr
-Cyrillic_ER 0x13 shift altgr
-Cyrillic_te 0x14 altgr
-Cyrillic_TE 0x14 shift altgr
-Macedonia_dse 0x15 altgr
-Macedonia_DSE 0x15 shift altgr
-Cyrillic_u 0x16 altgr
-Cyrillic_U 0x16 shift altgr
-Cyrillic_i 0x17 altgr
-Cyrillic_I 0x17 shift altgr
-Cyrillic_o 0x18 altgr
-Cyrillic_O 0x18 shift altgr
-Cyrillic_pe 0x19 altgr
-Cyrillic_PE 0x19 shift altgr
-bracketleft 0x1a
-braceleft 0x1a shift
-Cyrillic_sha 0x1a altgr
-Cyrillic_SHA 0x1a shift altgr
-bracketright 0x1b
-braceright 0x1b shift
-Macedonia_gje 0x1b altgr
-Macedonia_GJE 0x1b shift altgr
-Cyrillic_a 0x1e altgr
-Cyrillic_A 0x1e shift altgr
-Cyrillic_es 0x1f altgr
-Cyrillic_ES 0x1f shift altgr
-Cyrillic_de 0x20 altgr
-Cyrillic_DE 0x20 shift altgr
-Cyrillic_ef 0x21 altgr
-Cyrillic_EF 0x21 shift altgr
-Cyrillic_ghe 0x22 altgr
-Cyrillic_GHE 0x22 shift altgr
-Cyrillic_ha 0x23 altgr
-Cyrillic_HA 0x23 shift altgr
-Cyrillic_je 0x24 altgr
-Cyrillic_JE 0x24 shift altgr
-Cyrillic_ka 0x25 altgr
-Cyrillic_KA 0x25 shift altgr
-Cyrillic_el 0x26 altgr
-Cyrillic_EL 0x26 shift altgr
-semicolon 0x27
-colon 0x27 shift
-Cyrillic_che 0x27 altgr
-Cyrillic_CHE 0x27 shift altgr
-apostrophe 0x28
-quotedbl 0x28 shift
-Macedonia_kje 0x28 altgr
-Macedonia_KJE 0x28 shift altgr
-grave 0x29
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+Cyrillic_lje 0x10
+Cyrillic_LJE 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+Cyrillic_nje 0x11
+Cyrillic_NJE 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+Cyrillic_ie 0x12
+Cyrillic_IE 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+Cyrillic_er 0x13
+Cyrillic_ER 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+Cyrillic_te 0x14
+Cyrillic_TE 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+Macedonia_dse 0x15
+Macedonia_DSE 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+Cyrillic_u 0x16
+Cyrillic_U 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+Cyrillic_i 0x17
+Cyrillic_I 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+Cyrillic_o 0x18
+Cyrillic_O 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+Cyrillic_pe 0x19
+Cyrillic_PE 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+Cyrillic_sha 0x1a
+Cyrillic_SHA 0x1a shift
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+Macedonia_gje 0x1b
+Macedonia_GJE 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+Cyrillic_a 0x1e
+Cyrillic_A 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+Cyrillic_es 0x1f
+Cyrillic_ES 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+Cyrillic_de 0x20
+Cyrillic_DE 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+Cyrillic_ef 0x21
+Cyrillic_EF 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+Cyrillic_ghe 0x22
+Cyrillic_GHE 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+Cyrillic_ha 0x23
+Cyrillic_HA 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+Cyrillic_je 0x24
+Cyrillic_JE 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+Cyrillic_ka 0x25
+Cyrillic_KA 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+Cyrillic_el 0x26
+Cyrillic_EL 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+Cyrillic_che 0x27
+Cyrillic_CHE 0x27 shift
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+Macedonia_kje 0x28
+Macedonia_KJE 0x28 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+dead_grave 0x29
asciitilde 0x29 shift
-backslash 0x2b
-bar 0x2b shift
-Cyrillic_zhe 0x2b altgr
-Cyrillic_ZHE 0x2b shift altgr
-Cyrillic_ze 0x2c altgr
-Cyrillic_ZE 0x2c shift altgr
-Cyrillic_dzhe 0x2d altgr
-Cyrillic_DZHE 0x2d shift altgr
-Cyrillic_tse 0x2e altgr
-Cyrillic_TSE 0x2e shift altgr
-Cyrillic_ve 0x2f altgr
-Cyrillic_VE 0x2f shift altgr
-Cyrillic_be 0x30 altgr
-Cyrillic_BE 0x30 shift altgr
-Cyrillic_en 0x31 altgr
-Cyrillic_EN 0x31 shift altgr
-Cyrillic_em 0x32 altgr
-Cyrillic_EM 0x32 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
+Cyrillic_zhe 0x2b
+Cyrillic_ZHE 0x2b shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+Cyrillic_ze 0x2c
+Cyrillic_ZE 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+Cyrillic_dzhe 0x2d
+Cyrillic_DZHE 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+Cyrillic_tse 0x2e
+Cyrillic_TSE 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+Cyrillic_ve 0x2f
+Cyrillic_VE 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+Cyrillic_be 0x30
+Cyrillic_BE 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+Cyrillic_en 0x31
+Cyrillic_EN 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+Cyrillic_em 0x32
+Cyrillic_EM 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
-less 0x33 shift
-semicolon 0x33 shift altgr
+semicolon 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
-greater 0x34 shift
-colon 0x34 shift altgr
+colon 0x34 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/nl b/pc-bios/keymaps/nl
index b4892f930d..ae7c8f5643 100644
--- a/pc-bios/keymaps/nl
+++ b/pc-bios/keymaps/nl
@@ -1,59 +1,837 @@
-# Dutch (Netherlands)
-include common
-map 0x413
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : nl
+# variant : -
+# options : -
+# name: "Dutch"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
-quotebl 0x03 shift
+exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
+quotedbl 0x03 shift
twosuperior 0x03 altgr
+oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
threesuperior 0x04 altgr
+sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
onequarter 0x05 altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
+threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
threequarters 0x07 altgr
+fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
underscore 0x08 shift
sterling 0x08 altgr
+seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
braceleft 0x09 altgr
+bracketleft 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
braceright 0x0a altgr
+bracketright 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
apostrophe 0x0b shift
+degree 0x0b altgr
+trademark 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
slash 0x0c
question 0x0c shift
backslash 0x0c altgr
+questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
degree 0x0d
dead_tilde 0x0d shift
dead_cedilla 0x0d altgr
+dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
+Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+lstroke 0x11 altgr
+Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
+registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+thorn 0x14 altgr
+THORN 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+ydiaeresis 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+udiaeresis 0x16 altgr
+Udiaeresis 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+idiaeresis 0x17 altgr
+Idiaeresis 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+ograve 0x18 altgr
+Ograve 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+paragraph 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
dead_diaeresis 0x1a
dead_circumflex 0x1a shift
+asciitilde 0x1a altgr
+asciicircum 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
asterisk 0x1b
bar 0x1b shift
+dead_tilde 0x1b altgr
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+aacute 0x1e altgr
+Aacute 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+eth 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+ordfeminine 0x21 altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+eng 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+hstroke 0x23 altgr
+Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
plus 0x27
plusminus 0x27 shift
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
dead_acute 0x28
dead_grave 0x28 shift
+apostrophe 0x28 altgr
+grave 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
at 0x29
section 0x29 shift
notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
less 0x2b
greater 0x2b shift
+dead_grave 0x2b altgr
+dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
-copyright 0x2e altgr
-mu 0x32 altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
+cent 0x2e altgr
+copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+ntilde 0x31 altgr
+Ntilde 0x31 shift altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
+Greek_mu 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
+cedilla 0x33 altgr
+guillemotleft 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
periodcentered 0x34 altgr
-hyphen 0x35
+guillemotright 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+minus 0x35
equal 0x35 shift
+hyphen 0x35 altgr
+dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
bracketright 0x56
bracketleft 0x56 shift
-brokenbar 0x56 altgr
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/no b/pc-bios/keymaps/no
index 40a64790d1..8afd1996b5 100644
--- a/pc-bios/keymaps/no
+++ b/pc-bios/keymaps/no
@@ -1,119 +1,851 @@
-# generated from XKB map no
-include common
-map 0x414
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : no
+# variant : -
+# options : -
+
+# name: "Norwegian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
exclamdown 0x02 altgr
onesuperior 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
at 0x03 altgr
twosuperior 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
sterling 0x04 altgr
threesuperior 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
currency 0x05 shift
dollar 0x05 altgr
onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
-cent 0x06 shift altgr
+U2030 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
yen 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
division 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
guillemotleft 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
guillemotright 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
plus 0x0c
question 0x0c shift
plusminus 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
backslash 0x0d
dead_grave 0x0d shift
dead_acute 0x0d altgr
notsign 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
registered 0x13 altgr
+trademark 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
thorn 0x14 altgr
THORN 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oe 0x18 altgr
OE 0x18 shift altgr
-thorn 0x19 altgr
-THORN 0x19 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+Greek_pi 0x19 altgr
+Greek_PI 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
aring 0x1a
Aring 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dead_diaeresis 0x1b
dead_circumflex 0x1b shift
-asciicircum 0x01b shift
dead_tilde 0x1b altgr
-asciitilde 0x1b altgr
dead_caron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ordfeminine 0x1e altgr
masculine 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
oslash 0x27
-Ooblique 0x27 shift
+Oslash 0x27 shift
+dead_acute 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
ae 0x28
AE 0x28 shift
+dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
bar 0x29
section 0x29 shift
brokenbar 0x29 altgr
paragraph 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
apostrophe 0x2b
asterisk 0x2b shift
+dead_doubleacute 0x2b altgr
multiply 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
copyright 0x2e altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
dead_cedilla 0x33 altgr
dead_ogonek 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
-periodcentered 0x34 altgr
-dead_abovedot 0x34 shift altgr
+ellipsis 0x34 altgr
+periodcentered 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
-hyphen 0x35 altgr
-macron 0x35 shift altgr
+endash 0x35 altgr
+emdash 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+U22C5 0x37 shift
+0x010000d7 0x37 altgr
+VoidSymbol 0x37 shift altgr
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
nobreakspace 0x39 altgr
+U202F 0x39 shift altgr
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+U2212 0x4a shift
+U2212 0x4a altgr
+VoidSymbol 0x4a shift altgr
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+0x0100002b 0x4e shift
+0x0100002b 0x4e altgr
+VoidSymbol 0x4e shift altgr
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
onehalf 0x56 altgr
threequarters 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+U2215 0xb5 shift
+0x010000f7 0xb5 altgr
+VoidSymbol 0xb5 shift altgr
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/pl b/pc-bios/keymaps/pl
index 09c600d355..df2720622f 100644
--- a/pc-bios/keymaps/pl
+++ b/pc-bios/keymaps/pl
@@ -1,122 +1,841 @@
-# generated from XKB map pl
-include common
-map 0x415
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : pl
+# variant : -
+# options : -
+
+# name: "Polish"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
-onesuperior 0x02 altgr
+notequal 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
at 0x03 shift
twosuperior 0x03 altgr
-oneeighth 0x03 shift altgr
+questiondown 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
threesuperior 0x04 altgr
sterling 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
-onequarter 0x05 altgr
+cent 0x05 altgr
+onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
-onehalf 0x06 altgr
-threeeighths 0x06 shift altgr
+EuroSign 0x06 altgr
+U2030 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
asciicircum 0x07 shift
-threequarters 0x07 altgr
-fiveeighths 0x07 shift altgr
+onehalf 0x07 altgr
+logicaland 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
-braceleft 0x08 altgr
-seveneighths 0x08 shift altgr
+section 0x08 altgr
+approxeq 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
-bracketleft 0x09 altgr
-trademark 0x09 shift altgr
+periodcentered 0x09 altgr
+threequarters 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
-bracketright 0x0a altgr
+guillemotleft 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
-braceright 0x0b altgr
+guillemotright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
-backslash 0x0c altgr
-questiondown 0x0c shift altgr
+endash 0x0c altgr
+emdash 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
dead_cedilla 0x0d altgr
dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+Greek_pi 0x10 altgr
Greek_OMEGA 0x10 shift altgr
-lstroke 0x11 altgr
-Lstroke 0x11 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+oe 0x11 altgr
+OE 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
eogonek 0x12 altgr
Eogonek 0x12 shift altgr
-paragraph 0x13 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
+copyright 0x13 altgr
registered 0x13 shift altgr
-tslash 0x14 altgr
-Tslash 0x14 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+ssharp 0x14 altgr
+trademark 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
-EuroSign 0x16 altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
-idotless 0x17 shift altgr
+U2194 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oacute 0x18 altgr
Oacute 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
bracketleft 0x1a
braceleft 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketright 0x1b
braceright 0x1b shift
dead_tilde 0x1b altgr
dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
aogonek 0x1e altgr
Aogonek 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
sacute 0x1f altgr
Sacute 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
-dstroke 0x21 altgr
-ordfeminine 0x21 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+ae 0x21 altgr
+AE 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
-hstroke 0x23 altgr
-Hstroke 0x23 shift altgr
-kra 0x25 altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+rightsinglequotemark 0x23 altgr
+U2022 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+schwa 0x24 altgr
+SCHWA 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+ellipsis 0x25 altgr
+dead_stroke 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
semicolon 0x27
colon 0x27 shift
dead_acute 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
apostrophe 0x28
quotedbl 0x28 shift
dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
grave 0x29
asciitilde 0x29 shift
notsign 0x29 altgr
+logicalor 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
backslash 0x2b
bar 0x2b shift
dead_grave 0x2b altgr
dead_breve 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
zabovedot 0x2c altgr
Zabovedot 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
zacute 0x2d altgr
Zacute 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cacute 0x2e altgr
Cacute 0x2e shift altgr
-leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+doublelowquotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+leftdoublequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
nacute 0x31 altgr
Nacute 0x31 shift altgr
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
-masculine 0x32 shift altgr
+infinity 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
-horizconnector 0x33 altgr
+lessthanequal 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
-periodcentered 0x34 altgr
+greaterthanequal 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
slash 0x35
question 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+nobreakspace 0x39 altgr
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/pt b/pc-bios/keymaps/pt
index c6941f651c..ab590017cf 100644
--- a/pc-bios/keymaps/pt
+++ b/pc-bios/keymaps/pt
@@ -1,113 +1,834 @@
-# generated from XKB map pt
-include common
-map 0x816
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : pt
+# variant : -
+# options : -
+
+# name: "Portuguese"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
quotedbl 0x03 shift
at 0x03 altgr
oneeighth 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
sterling 0x04 altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
section 0x05 altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-threequarters 0x07 altgr
+notsign 0x07 altgr
fiveeighths 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
apostrophe 0x0c
question 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
guillemotleft 0x0d
guillemotright 0x0d shift
dead_cedilla 0x0d altgr
dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
lstroke 0x11 altgr
Lstroke 0x11 shift altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
cent 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
tslash 0x14 altgr
Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
downarrow 0x16 altgr
uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
rightarrow 0x17 altgr
idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
oslash 0x18 altgr
-Ooblique 0x18 shift altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
thorn 0x19 altgr
THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
plus 0x1a
asterisk 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
dead_acute 0x1b
dead_grave 0x1b shift
dead_tilde 0x1b altgr
dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
ae 0x1e altgr
AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
eth 0x20 altgr
ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
dstroke 0x21 altgr
ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
eng 0x22 altgr
ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
hstroke 0x23 altgr
Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
lstroke 0x26 altgr
Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ccedilla 0x27
Ccedilla 0x27 shift
+dead_acute 0x27 altgr
dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
masculine 0x28
ordfeminine 0x28 shift
dead_circumflex 0x28 altgr
dead_caron 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
backslash 0x29
bar 0x29 shift
notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
dead_tilde 0x2b
dead_circumflex 0x2b shift
+dead_grave 0x2b altgr
dead_breve 0x2b shift altgr
-less 0x56
-greater 0x56 shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
+masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
semicolon 0x33 shift
horizconnector 0x33 altgr
multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
colon 0x34 shift
periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
minus 0x35
underscore 0x35 shift
dead_belowdot 0x35 altgr
dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+backslash 0x56 altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/pt-br b/pc-bios/keymaps/pt-br
index 54bafc5dc3..fe9ec81303 100644
--- a/pc-bios/keymaps/pt-br
+++ b/pc-bios/keymaps/pt-br
@@ -1,69 +1,834 @@
-# generated from XKB map br
-include common
-map 0x416
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : br
+# variant : -
+# options : -
+
+# name: "Portuguese (Brazil)"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
onesuperior 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
at 0x03 shift
twosuperior 0x03 altgr
onehalf 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numbersign 0x04 shift
threesuperior 0x04 altgr
threequarters 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
dollar 0x05 shift
sterling 0x05 altgr
onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
cent 0x06 altgr
+threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
dead_diaeresis 0x07 shift
notsign 0x07 altgr
diaeresis 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
ampersand 0x08 shift
braceleft 0x08 altgr
+seveneighths 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
bracketleft 0x09 altgr
+trademark 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
bracketright 0x0a altgr
+plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
braceright 0x0b altgr
+degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
backslash 0x0c altgr
+questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
section 0x0d altgr
+dead_ogonek 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
+slash 0x10 altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+question 0x11 altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
registered 0x13 altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+tslash 0x14 altgr
+Tslash 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
+leftarrow 0x15 altgr
+yen 0x15 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+downarrow 0x16 altgr
+uparrow 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+i 0x17
+I 0x17 shift
+rightarrow 0x17 altgr
+idotless 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+oslash 0x18 altgr
+Oslash 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+thorn 0x19 altgr
+THORN 0x19 shift altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
dead_acute 0x1a
dead_grave 0x1a shift
acute 0x1a altgr
grave 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
bracketleft 0x1b
braceleft 0x1b shift
ordfeminine 0x1b altgr
+dead_macron 0x1b shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+ae 0x1e altgr
+AE 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+ssharp 0x1f altgr
+section 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+eth 0x20 altgr
+ETH 0x20 shift altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+dstroke 0x21 altgr
+ordfeminine 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+eng 0x22 altgr
+ENG 0x22 shift altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+hstroke 0x23 altgr
+Hstroke 0x23 shift altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+kra 0x25 altgr
+ampersand 0x25 shift altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+lstroke 0x26 altgr
+Lstroke 0x26 shift altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
ccedilla 0x27
Ccedilla 0x27 shift
+dead_acute 0x27 altgr
+dead_doubleacute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
dead_tilde 0x28
dead_circumflex 0x28 shift
asciitilde 0x28 altgr
asciicircum 0x28 shift altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
apostrophe 0x29
quotedbl 0x29 shift
+notsign 0x29 altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
bracketright 0x2b
braceright 0x2b shift
masculine 0x2b altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
+guillemotleft 0x2c altgr
+less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
+guillemotright 0x2d altgr
+greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
copyright 0x2e altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
+leftdoublequotemark 0x2f altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
+rightdoublequotemark 0x30 altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
comma 0x33
less 0x33 shift
+horizconnector 0x33 altgr
+multiply 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
period 0x34
greater 0x34 shift
+periodcentered 0x34 altgr
+division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
semicolon 0x35
colon 0x35 shift
-comma 0x53 numlock
+dead_belowdot 0x35 altgr
+dead_abovedot 0x35 shift altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
backslash 0x56
bar 0x56 shift
+masculine 0x56 altgr
+dead_breve 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
slash 0x73
question 0x73 shift
degree 0x73 altgr
-KP_Decimal 0x34
+questiondown 0x73 shift altgr
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/ru b/pc-bios/keymaps/ru
index 8f652d5a09..7566052262 100644
--- a/pc-bios/keymaps/ru
+++ b/pc-bios/keymaps/ru
@@ -1,109 +1,748 @@
-# generated from XKB map ru
-include common
-map 0x419
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : ru
+# variant : -
+# options : -
+
+# name: "Russian"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
-at 0x03 shift
-quotedbl 0x03 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
+quotedbl 0x03 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
numerosign 0x04 shift
-dollar 0x05 shift
-asterisk 0x05 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
+semicolon 0x05 shift
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
-colon 0x06 shift altgr
-asciicircum 0x07 shift
-comma 0x07 shift altgr
-ampersand 0x08 shift
-period 0x08 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
+colon 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
+question 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
asterisk 0x09 shift
-semicolon 0x09 shift altgr
+U20BD 0x09 altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenleft 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
parenright 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
minus 0x0c
underscore 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
equal 0x0d
plus 0x0d shift
-Cyrillic_shorti 0x10 altgr
-Cyrillic_SHORTI 0x10 shift altgr
-Cyrillic_tse 0x11 altgr
-Cyrillic_TSE 0x11 shift altgr
-Cyrillic_u 0x12 altgr
-Cyrillic_U 0x12 shift altgr
-Cyrillic_ka 0x13 altgr
-Cyrillic_KA 0x13 shift altgr
-Cyrillic_ie 0x14 altgr
-Cyrillic_IE 0x14 shift altgr
-Cyrillic_en 0x15 altgr
-Cyrillic_EN 0x15 shift altgr
-Cyrillic_ghe 0x16 altgr
-Cyrillic_GHE 0x16 shift altgr
-Cyrillic_sha 0x17 altgr
-Cyrillic_SHA 0x17 shift altgr
-Cyrillic_shcha 0x18 altgr
-Cyrillic_SHCHA 0x18 shift altgr
-Cyrillic_ze 0x19 altgr
-Cyrillic_ZE 0x19 shift altgr
-bracketleft 0x1a
-braceleft 0x1a shift
-Cyrillic_ha 0x1a altgr
-Cyrillic_HA 0x1a shift altgr
-bracketright 0x1b
-braceright 0x1b shift
-Cyrillic_hardsign 0x1b altgr
-Cyrillic_HARDSIGN 0x1b shift altgr
-Cyrillic_ef 0x1e altgr
-Cyrillic_EF 0x1e shift altgr
-Cyrillic_yeru 0x1f altgr
-Cyrillic_YERU 0x1f shift altgr
-Cyrillic_ve 0x20 altgr
-Cyrillic_VE 0x20 shift altgr
-Cyrillic_a 0x21 altgr
-Cyrillic_A 0x21 shift altgr
-Cyrillic_pe 0x22 altgr
-Cyrillic_PE 0x22 shift altgr
-Cyrillic_er 0x23 altgr
-Cyrillic_ER 0x23 shift altgr
-Cyrillic_o 0x24 altgr
-Cyrillic_O 0x24 shift altgr
-Cyrillic_el 0x25 altgr
-Cyrillic_EL 0x25 shift altgr
-Cyrillic_de 0x26 altgr
-Cyrillic_DE 0x26 shift altgr
-semicolon 0x27
-colon 0x27 shift
-Cyrillic_zhe 0x27 altgr
-Cyrillic_ZHE 0x27 shift altgr
-apostrophe 0x28
-quotedbl 0x28 shift
-Cyrillic_e 0x28 altgr
-Cyrillic_E 0x28 shift altgr
-grave 0x29
-asciitilde 0x29 shift
-Cyrillic_io 0x29 altgr
-Cyrillic_IO 0x29 shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+Cyrillic_shorti 0x10
+Cyrillic_SHORTI 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+Cyrillic_tse 0x11
+Cyrillic_TSE 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+Cyrillic_u 0x12
+Cyrillic_U 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+Cyrillic_ka 0x13
+Cyrillic_KA 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+Cyrillic_ie 0x14
+Cyrillic_IE 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+Cyrillic_en 0x15
+Cyrillic_EN 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+Cyrillic_ghe 0x16
+Cyrillic_GHE 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+Cyrillic_sha 0x17
+Cyrillic_SHA 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+Cyrillic_shcha 0x18
+Cyrillic_SHCHA 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+Cyrillic_ze 0x19
+Cyrillic_ZE 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+Cyrillic_ha 0x1a
+Cyrillic_HA 0x1a shift
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+Cyrillic_hardsign 0x1b
+Cyrillic_HARDSIGN 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+Cyrillic_ef 0x1e
+Cyrillic_EF 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+Cyrillic_yeru 0x1f
+Cyrillic_YERU 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+Cyrillic_ve 0x20
+Cyrillic_VE 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+Cyrillic_a 0x21
+Cyrillic_A 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+Cyrillic_pe 0x22
+Cyrillic_PE 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+Cyrillic_er 0x23
+Cyrillic_ER 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+Cyrillic_o 0x24
+Cyrillic_O 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+Cyrillic_el 0x25
+Cyrillic_EL 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+Cyrillic_de 0x26
+Cyrillic_DE 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+Cyrillic_zhe 0x27
+Cyrillic_ZHE 0x27 shift
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+Cyrillic_e 0x28
+Cyrillic_E 0x28 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+Cyrillic_io 0x29
+Cyrillic_IO 0x29 shift
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
backslash 0x2b
-bar 0x2b shift
-Cyrillic_ya 0x2c altgr
-Cyrillic_YA 0x2c shift altgr
-Cyrillic_che 0x2d altgr
-Cyrillic_CHE 0x2d shift altgr
-Cyrillic_es 0x2e altgr
-Cyrillic_ES 0x2e shift altgr
-Cyrillic_em 0x2f altgr
-Cyrillic_EM 0x2f shift altgr
-Cyrillic_i 0x30 altgr
-Cyrillic_I 0x30 shift altgr
-Cyrillic_te 0x31 altgr
-Cyrillic_TE 0x31 shift altgr
-Cyrillic_softsign 0x32 altgr
-Cyrillic_SOFTSIGN 0x32 shift altgr
-comma 0x33
-less 0x33 shift
-Cyrillic_be 0x33 altgr
-Cyrillic_BE 0x33 shift altgr
-period 0x34
-greater 0x34 shift
-Cyrillic_yu 0x34 altgr
-Cyrillic_YU 0x34 shift altgr
-slash 0x35
-question 0x35 shift
-slash 0x56 altgr
-bar 0x56 shift altgr
+slash 0x2b shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+Cyrillic_ya 0x2c
+Cyrillic_YA 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+Cyrillic_che 0x2d
+Cyrillic_CHE 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+Cyrillic_es 0x2e
+Cyrillic_ES 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+Cyrillic_em 0x2f
+Cyrillic_EM 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+Cyrillic_i 0x30
+Cyrillic_I 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+Cyrillic_te 0x31
+Cyrillic_TE 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+Cyrillic_softsign 0x32
+Cyrillic_SOFTSIGN 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
+Cyrillic_be 0x33
+Cyrillic_BE 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
+Cyrillic_yu 0x34
+Cyrillic_YU 0x34 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+period 0x35
+comma 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+slash 0x56
+bar 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/th b/pc-bios/keymaps/th
index b65b6da5d9..56a01354d6 100644
--- a/pc-bios/keymaps/th
+++ b/pc-bios/keymaps/th
@@ -1,131 +1,747 @@
-# generated from XKB map th
-include common
-map 0x41e
-exclam 0x02 shift
-Thai_lakkhangyao 0x02 altgr
-plus 0x02 shift altgr
-at 0x03 shift
-slash 0x03 altgr
-Thai_leknung 0x03 shift altgr
-numbersign 0x04 shift
-minus 0x04 altgr
-Thai_leksong 0x04 shift altgr
-dollar 0x05 shift
-Thai_phosamphao 0x05 altgr
-Thai_leksam 0x05 shift altgr
-percent 0x06 shift
-Thai_thothung 0x06 altgr
-Thai_leksi 0x06 shift altgr
-asciicircum 0x07 shift
-Thai_sarau 0x07 altgr
-Thai_sarauu 0x07 shift altgr
-ampersand 0x08 shift
-Thai_saraue 0x08 altgr
-Thai_baht 0x08 shift altgr
-asterisk 0x09 shift
-Thai_khokhwai 0x09 altgr
-Thai_lekha 0x09 shift altgr
-parenleft 0x0a shift
-Thai_totao 0x0a altgr
-Thai_lekhok 0x0a shift altgr
-parenright 0x0b shift
-Thai_chochan 0x0b altgr
-Thai_lekchet 0x0b shift altgr
-minus 0x0c
-underscore 0x0c shift
-Thai_khokhai 0x0c altgr
-Thai_lekpaet 0x0c shift altgr
-equal 0x0d
-plus 0x0d shift
-Thai_chochang 0x0d altgr
-Thai_lekkao 0x0d shift altgr
-Thai_maiyamok 0x10 altgr
-Thai_leksun 0x10 shift altgr
-Thai_saraaimaimalai 0x11 altgr
-quotedbl 0x11 shift altgr
-Thai_saraam 0x12 altgr
-Thai_dochada 0x12 shift altgr
-Thai_phophan 0x13 altgr
-Thai_thonangmontho 0x13 shift altgr
-Thai_saraa 0x14 altgr
-Thai_thothong 0x14 shift altgr
-Thai_maihanakat 0x15 altgr
-Thai_nikhahit 0x15 shift altgr
-Thai_saraii 0x16 altgr
-Thai_maitri 0x16 shift altgr
-Thai_rorua 0x17 altgr
-Thai_nonen 0x17 shift altgr
-Thai_nonu 0x18 altgr
-Thai_paiyannoi 0x18 shift altgr
-Thai_yoyak 0x19 altgr
-Thai_yoying 0x19 shift altgr
-bracketleft 0x1a
-braceleft 0x1a shift
-Thai_bobaimai 0x1a altgr
-Thai_thothan 0x1a shift altgr
-bracketright 0x1b
-braceright 0x1b shift
-Thai_loling 0x1b altgr
-comma 0x1b shift altgr
-Thai_fofan 0x1e altgr
-Thai_ru 0x1e shift altgr
-Thai_hohip 0x1f altgr
-Thai_khorakhang 0x1f shift altgr
-Thai_kokai 0x20 altgr
-Thai_topatak 0x20 shift altgr
-Thai_dodek 0x21 altgr
-Thai_sarao 0x21 shift altgr
-Thai_sarae 0x22 altgr
-Thai_chochoe 0x22 shift altgr
-Thai_maitho 0x23 altgr
-Thai_maitaikhu 0x23 shift altgr
-Thai_maiek 0x24 altgr
-Thai_maichattawa 0x24 shift altgr
-Thai_saraaa 0x25 altgr
-Thai_sorusi 0x25 shift altgr
-Thai_sosua 0x26 altgr
-Thai_sosala 0x26 shift altgr
-semicolon 0x27
-colon 0x27 shift
-Thai_wowaen 0x27 altgr
-Thai_soso 0x27 shift altgr
-apostrophe 0x28
-quotedbl 0x28 shift
-Thai_ngongu 0x28 altgr
-period 0x28 shift altgr
-grave 0x29
-asciitilde 0x29 shift
-underscore 0x29 altgr
-percent 0x29 shift altgr
-ISO_First_Group 0x2a shift
-backslash 0x2b
-bar 0x2b shift
-Thai_khokhuat 0x2b altgr
-Thai_khokhon 0x2b shift altgr
-Thai_phophung 0x2c altgr
-parenleft 0x2c shift altgr
-Thai_popla 0x2d altgr
-parenright 0x2d shift altgr
-Thai_saraae 0x2e altgr
-Thai_choching 0x2e shift altgr
-Thai_oang 0x2f altgr
-Thai_honokhuk 0x2f shift altgr
-Thai_sarai 0x30 altgr
-Thai_phinthu 0x30 shift altgr
-Thai_sarauee 0x31 altgr
-Thai_thanthakhat 0x31 shift altgr
-Thai_thothahan 0x32 altgr
-question 0x32 shift altgr
-comma 0x33
-less 0x33 shift
-Thai_moma 0x33 altgr
-Thai_thophuthao 0x33 shift altgr
-period 0x34
-greater 0x34 shift
-Thai_saraaimaimuan 0x34 altgr
-Thai_lochula 0x34 shift altgr
-slash 0x35
-question 0x35 shift
-Thai_fofa 0x35 altgr
-Thai_lu 0x35 shift altgr
-ISO_Last_Group 0x36 shift
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : th
+# variant : -
+# options : -
+
+# name: "Thai"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+Thai_lakkhangyao 0x02
+plus 0x02 shift
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+slash 0x03
+Thai_leknung 0x03 shift
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+minus 0x04
+Thai_leksong 0x04 shift
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+Thai_phosamphao 0x05
+Thai_leksam 0x05 shift
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+Thai_thothung 0x06
+Thai_leksi 0x06 shift
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+Thai_sarau 0x07
+Thai_sarauu 0x07 shift
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+Thai_saraue 0x08
+Thai_baht 0x08 shift
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+Thai_khokhwai 0x09
+Thai_lekha 0x09 shift
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+Thai_totao 0x0a
+Thai_lekhok 0x0a shift
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+Thai_chochan 0x0b
+Thai_lekchet 0x0b shift
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
+Thai_khokhai 0x0c
+Thai_lekpaet 0x0c shift
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
+Thai_chochang 0x0d
+Thai_lekkao 0x0d shift
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+Thai_maiyamok 0x10
+Thai_leksun 0x10 shift
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+Thai_saraaimaimalai 0x11
+quotedbl 0x11 shift
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+Thai_saraam 0x12
+Thai_dochada 0x12 shift
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+Thai_phophan 0x13
+Thai_thonangmontho 0x13 shift
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+Thai_saraa 0x14
+Thai_thothong 0x14 shift
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+Thai_maihanakat 0x15
+Thai_nikhahit 0x15 shift
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+Thai_saraii 0x16
+Thai_maitri 0x16 shift
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
+Thai_rorua 0x17
+Thai_nonen 0x17 shift
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+Thai_nonu 0x18
+Thai_paiyannoi 0x18 shift
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+Thai_yoyak 0x19
+Thai_yoying 0x19 shift
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
+Thai_bobaimai 0x1a
+Thai_thothan 0x1a shift
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
+Thai_loling 0x1b
+comma 0x1b shift
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+Thai_fofan 0x1e
+Thai_ru 0x1e shift
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+Thai_hohip 0x1f
+Thai_khorakhang 0x1f shift
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+Thai_kokai 0x20
+Thai_topatak 0x20 shift
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+Thai_dodek 0x21
+Thai_sarao 0x21 shift
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+Thai_sarae 0x22
+Thai_chochoe 0x22 shift
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+Thai_maitho 0x23
+Thai_maitaikhu 0x23 shift
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+Thai_maiek 0x24
+Thai_maichattawa 0x24 shift
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+Thai_saraaa 0x25
+Thai_sorusi 0x25 shift
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+Thai_sosua 0x26
+Thai_sosala 0x26 shift
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
+Thai_wowaen 0x27
+Thai_soso 0x27 shift
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
+Thai_ngongu 0x28
+period 0x28 shift
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+underscore 0x29
+percent 0x29 shift
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
+Thai_khokhuat 0x2b
+Thai_khokhon 0x2b shift
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+Thai_phophung 0x2c
+parenleft 0x2c shift
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+Thai_popla 0x2d
+parenright 0x2d shift
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+Thai_saraae 0x2e
+Thai_choching 0x2e shift
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+Thai_oang 0x2f
+Thai_honokhuk 0x2f shift
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+Thai_sarai 0x30
+Thai_phinthu 0x30 shift
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+Thai_sarauee 0x31
+Thai_thanthakhat 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+Thai_thothahan 0x32
+question 0x32 shift
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
+Thai_moma 0x33
+Thai_thophuthao 0x33 shift
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
+Thai_saraaimaimuan 0x34
+Thai_lochula 0x34 shift
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
+Thai_fofa 0x35
+Thai_lu 0x35 shift
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Decimal 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+Alt_R 0xb8
+Meta_R 0xb8 shift
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/pc-bios/keymaps/tr b/pc-bios/keymaps/tr
index 5650e1e93f..4d1a4c3311 100644
--- a/pc-bios/keymaps/tr
+++ b/pc-bios/keymaps/tr
@@ -1,123 +1,830 @@
-# generated from XKB map tr
-include common
-map 0x41f
+#
+# generated by qemu-keymap
+# model : pc105
+# layout : tr
+# variant : -
+# options : -
+
+# name: "Turkish"
+
+# modifiers
+# 0: Shift
+# 1: Lock
+# 2: Control
+# 3: Mod1
+# 4: Mod2
+# 5: Mod3
+# 6: Mod4
+# 7: Mod5
+# 8: NumLock
+# 9: Alt
+# 10: LevelThree
+# 11: LAlt
+# 12: RAlt
+# 13: RControl
+# 14: LControl
+# 15: ScrollLock
+# 16: LevelFive
+# 17: AltGr
+# 18: Meta
+# 19: Super
+# 20: Hyper
+
+# evdev 1 (0x1), QKeyCode "esc", number 0x1
+Escape 0x01
+
+# evdev 2 (0x2), QKeyCode "1", number 0x2
+1 0x02
exclam 0x02 shift
-onesuperior 0x02 altgr
+greater 0x02 altgr
exclamdown 0x02 shift altgr
+
+# evdev 3 (0x3), QKeyCode "2", number 0x3
+2 0x03
apostrophe 0x03 shift
-at 0x03 altgr
-oneeighth 0x03 shift altgr
-dead_circumflex 0x04 shift
+sterling 0x03 altgr
+twosuperior 0x03 shift altgr
+
+# evdev 4 (0x4), QKeyCode "3", number 0x4
+3 0x04
+asciicircum 0x04 shift
numbersign 0x04 altgr
-sterling 0x04 shift altgr
+threesuperior 0x04 shift altgr
+
+# evdev 5 (0x5), QKeyCode "4", number 0x5
+4 0x05
plus 0x05 shift
dollar 0x05 altgr
+onequarter 0x05 shift altgr
+
+# evdev 6 (0x6), QKeyCode "5", number 0x6
+5 0x06
percent 0x06 shift
onehalf 0x06 altgr
threeeighths 0x06 shift altgr
+
+# evdev 7 (0x7), QKeyCode "6", number 0x7
+6 0x07
ampersand 0x07 shift
-asciicircum 0x07 altgr
-fiveeighths 0x07 shift altgr
+threequarters 0x07 altgr
+VoidSymbol 0x07 shift altgr
+
+# evdev 8 (0x8), QKeyCode "7", number 0x8
+7 0x08
slash 0x08 shift
braceleft 0x08 altgr
-seveneighths 0x08 shift altgr
+VoidSymbol 0x08 shift altgr
+
+# evdev 9 (0x9), QKeyCode "8", number 0x9
+8 0x09
parenleft 0x09 shift
bracketleft 0x09 altgr
-trademark 0x09 shift altgr
+VoidSymbol 0x09 shift altgr
+
+# evdev 10 (0xa), QKeyCode "9", number 0xa
+9 0x0a
parenright 0x0a shift
bracketright 0x0a altgr
plusminus 0x0a shift altgr
+
+# evdev 11 (0xb), QKeyCode "0", number 0xb
+0 0x0b
equal 0x0b shift
braceright 0x0b altgr
degree 0x0b shift altgr
+
+# evdev 12 (0xc), QKeyCode "minus", number 0xc
asterisk 0x0c
question 0x0c shift
backslash 0x0c altgr
questiondown 0x0c shift altgr
+
+# evdev 13 (0xd), QKeyCode "equal", number 0xd
minus 0x0d
underscore 0x0d shift
-dead_cedilla 0x0d altgr
-dead_ogonek 0x0d shift altgr
+bar 0x0d altgr
+VoidSymbol 0x0d shift altgr
+
+# evdev 14 (0xe), QKeyCode "backspace", number 0xe
+BackSpace 0x0e
+
+# evdev 15 (0xf), QKeyCode "tab", number 0xf
+Tab 0x0f
+ISO_Left_Tab 0x0f shift
+
+# evdev 16 (0x10), QKeyCode "q", number 0x10
+q 0x10
+Q 0x10 shift
at 0x10 altgr
Greek_OMEGA 0x10 shift altgr
-lstroke 0x11 altgr
-Lstroke 0x11 shift altgr
+
+# evdev 17 (0x11), QKeyCode "w", number 0x11
+w 0x11
+W 0x11 shift
+VoidSymbol 0x11 altgr
+
+# evdev 18 (0x12), QKeyCode "e", number 0x12
+e 0x12
+E 0x12 shift
EuroSign 0x12 altgr
+VoidSymbol 0x12 shift altgr
+
+# evdev 19 (0x13), QKeyCode "r", number 0x13
+r 0x13
+R 0x13 shift
paragraph 0x13 altgr
registered 0x13 shift altgr
-tslash 0x14 altgr
-Tslash 0x14 shift altgr
+
+# evdev 20 (0x14), QKeyCode "t", number 0x14
+t 0x14
+T 0x14 shift
+U20BA 0x14 altgr
+VoidSymbol 0x14 shift altgr
+
+# evdev 21 (0x15), QKeyCode "y", number 0x15
+y 0x15
+Y 0x15 shift
leftarrow 0x15 altgr
yen 0x15 shift altgr
-downarrow 0x16 altgr
-uparrow 0x16 shift altgr
+
+# evdev 22 (0x16), QKeyCode "u", number 0x16
+u 0x16
+U 0x16 shift
+ucircumflex 0x16 altgr
+Ucircumflex 0x16 shift altgr
+
+# evdev 23 (0x17), QKeyCode "i", number 0x17
idotless 0x17
I 0x17 shift
-rightarrow 0x17 altgr
-oslash 0x18 altgr
-Ooblique 0x18 shift altgr
-thorn 0x19 altgr
-THORN 0x19 shift altgr
+icircumflex 0x17 altgr
+Icircumflex 0x17 shift altgr
+
+# evdev 24 (0x18), QKeyCode "o", number 0x18
+o 0x18
+O 0x18 shift
+ocircumflex 0x18 altgr
+Ocircumflex 0x18 shift altgr
+
+# evdev 25 (0x19), QKeyCode "p", number 0x19
+p 0x19
+P 0x19 shift
+VoidSymbol 0x19 altgr
+
+# evdev 26 (0x1a), QKeyCode "bracket_left", number 0x1a
gbreve 0x1a
Gbreve 0x1a shift
dead_diaeresis 0x1a altgr
dead_abovering 0x1a shift altgr
+
+# evdev 27 (0x1b), QKeyCode "bracket_right", number 0x1b
udiaeresis 0x1b
Udiaeresis 0x1b shift
asciitilde 0x1b altgr
dead_macron 0x1b shift altgr
-ae 0x1e altgr
-AE 0x1e shift altgr
-ssharp 0x1f altgr
-section 0x1f shift altgr
-eth 0x20 altgr
-ETH 0x20 shift altgr
-dstroke 0x21 altgr
-ordfeminine 0x21 shift altgr
-eng 0x22 altgr
-ENG 0x22 shift altgr
-hstroke 0x23 altgr
-Hstroke 0x23 shift altgr
-kra 0x25 altgr
-ampersand 0x25 shift altgr
-lstroke 0x26 altgr
-Lstroke 0x26 shift altgr
+
+# evdev 28 (0x1c), QKeyCode "ret", number 0x1c
+Return 0x1c
+
+# evdev 29 (0x1d), QKeyCode "ctrl", number 0x1d
+Control_L 0x1d
+
+# evdev 30 (0x1e), QKeyCode "a", number 0x1e
+a 0x1e
+A 0x1e shift
+acircumflex 0x1e altgr
+Acircumflex 0x1e shift altgr
+
+# evdev 31 (0x1f), QKeyCode "s", number 0x1f
+s 0x1f
+S 0x1f shift
+section 0x1f altgr
+VoidSymbol 0x1f shift altgr
+
+# evdev 32 (0x20), QKeyCode "d", number 0x20
+d 0x20
+D 0x20 shift
+VoidSymbol 0x20 altgr
+
+# evdev 33 (0x21), QKeyCode "f", number 0x21
+f 0x21
+F 0x21 shift
+ordfeminine 0x21 altgr
+VoidSymbol 0x21 shift altgr
+
+# evdev 34 (0x22), QKeyCode "g", number 0x22
+g 0x22
+G 0x22 shift
+VoidSymbol 0x22 altgr
+
+# evdev 35 (0x23), QKeyCode "h", number 0x23
+h 0x23
+H 0x23 shift
+VoidSymbol 0x23 altgr
+
+# evdev 36 (0x24), QKeyCode "j", number 0x24
+j 0x24
+J 0x24 shift
+dead_hook 0x24 altgr
+dead_horn 0x24 shift altgr
+
+# evdev 37 (0x25), QKeyCode "k", number 0x25
+k 0x25
+K 0x25 shift
+VoidSymbol 0x25 altgr
+
+# evdev 38 (0x26), QKeyCode "l", number 0x26
+l 0x26
+L 0x26 shift
+VoidSymbol 0x26 altgr
+
+# evdev 39 (0x27), QKeyCode "semicolon", number 0x27
scedilla 0x27
Scedilla 0x27 shift
-dead_acute 0x27 altgr
-dead_doubleacute 0x27 shift altgr
+acute 0x27 altgr
+dead_acute 0x27 shift altgr
+
+# evdev 40 (0x28), QKeyCode "apostrophe", number 0x28
i 0x28
Iabovedot 0x28 shift
-dead_circumflex 0x28 altgr
+apostrophe 0x28 altgr
dead_caron 0x28 shift altgr
-backslash 0x29
-quotedbl 0x29 shift
-asciitilde 0x29 altgr
+
+# evdev 41 (0x29), QKeyCode "grave_accent", number 0x29
+quotedbl 0x29
+eacute 0x29 shift
+less 0x29 altgr
+degree 0x29 shift altgr
+
+# evdev 42 (0x2a), QKeyCode "shift", number 0x2a
+Shift_L 0x2a
+
+# evdev 43 (0x2b), QKeyCode "backslash", number 0x2b
comma 0x2b
semicolon 0x2b shift
-bar 0x2b altgr
-dead_breve 0x2b shift altgr
+grave 0x2b altgr
+dead_grave 0x2b shift altgr
+
+# evdev 44 (0x2c), QKeyCode "z", number 0x2c
+z 0x2c
+Z 0x2c shift
guillemotleft 0x2c altgr
less 0x2c shift altgr
+
+# evdev 45 (0x2d), QKeyCode "x", number 0x2d
+x 0x2d
+X 0x2d shift
guillemotright 0x2d altgr
greater 0x2d shift altgr
+
+# evdev 46 (0x2e), QKeyCode "c", number 0x2e
+c 0x2e
+C 0x2e shift
cent 0x2e altgr
copyright 0x2e shift altgr
+
+# evdev 47 (0x2f), QKeyCode "v", number 0x2f
+v 0x2f
+V 0x2f shift
leftdoublequotemark 0x2f altgr
-grave 0x2f shift altgr
+leftsinglequotemark 0x2f shift altgr
+
+# evdev 48 (0x30), QKeyCode "b", number 0x30
+b 0x30
+B 0x30 shift
rightdoublequotemark 0x30 altgr
-apostrophe 0x30 shift altgr
+rightsinglequotemark 0x30 shift altgr
+
+# evdev 49 (0x31), QKeyCode "n", number 0x31
+n 0x31
+N 0x31 shift
+
+# evdev 50 (0x32), QKeyCode "m", number 0x32
+m 0x32
+M 0x32 shift
mu 0x32 altgr
masculine 0x32 shift altgr
+
+# evdev 51 (0x33), QKeyCode "comma", number 0x33
odiaeresis 0x33
Odiaeresis 0x33 shift
-less 0x33 altgr
-multiply 0x33 shift altgr
+multiply 0x33 altgr
+VoidSymbol 0x33 shift altgr
+
+# evdev 52 (0x34), QKeyCode "dot", number 0x34
ccedilla 0x34
Ccedilla 0x34 shift
-greater 0x34 altgr
+periodcentered 0x34 altgr
division 0x34 shift altgr
+
+# evdev 53 (0x35), QKeyCode "slash", number 0x35
period 0x35
colon 0x35 shift
-dead_belowdot 0x35 altgr
-dead_abovedot 0x35 shift altgr
+dead_abovedot 0x35 altgr
+
+# evdev 54 (0x36), QKeyCode "shift_r", number 0x36
+Shift_R 0x36
+
+# evdev 55 (0x37), QKeyCode "kp_multiply", number 0x37
+KP_Multiply 0x37
+
+# evdev 56 (0x38), QKeyCode "alt", number 0x38
+Alt_L 0x38
+Meta_L 0x38 shift
+
+# evdev 57 (0x39), QKeyCode "spc", number 0x39
+space 0x39
+
+# evdev 58 (0x3a), QKeyCode "caps_lock", number 0x3a
+Caps_Lock 0x3a
+
+# evdev 59 (0x3b), QKeyCode "f1", number 0x3b
+F1 0x3b
+
+# evdev 60 (0x3c), QKeyCode "f2", number 0x3c
+F2 0x3c
+
+# evdev 61 (0x3d), QKeyCode "f3", number 0x3d
+F3 0x3d
+
+# evdev 62 (0x3e), QKeyCode "f4", number 0x3e
+F4 0x3e
+
+# evdev 63 (0x3f), QKeyCode "f5", number 0x3f
+F5 0x3f
+
+# evdev 64 (0x40), QKeyCode "f6", number 0x40
+F6 0x40
+
+# evdev 65 (0x41), QKeyCode "f7", number 0x41
+F7 0x41
+
+# evdev 66 (0x42), QKeyCode "f8", number 0x42
+F8 0x42
+
+# evdev 67 (0x43), QKeyCode "f9", number 0x43
+F9 0x43
+
+# evdev 68 (0x44), QKeyCode "f10", number 0x44
+F10 0x44
+
+# evdev 69 (0x45), QKeyCode "num_lock", number 0x45
+Num_Lock 0x45
+
+# evdev 70 (0x46), QKeyCode "scroll_lock", number 0x46
+Scroll_Lock 0x46
+
+# evdev 71 (0x47), QKeyCode "kp_7", number 0x47
+KP_Home 0x47
+KP_7 0x47 numlock
+
+# evdev 72 (0x48), QKeyCode "kp_8", number 0x48
+KP_Up 0x48
+KP_8 0x48 numlock
+
+# evdev 73 (0x49), QKeyCode "kp_9", number 0x49
+KP_Prior 0x49
+KP_9 0x49 numlock
+
+# evdev 74 (0x4a), QKeyCode "kp_subtract", number 0x4a
+KP_Subtract 0x4a
+
+# evdev 75 (0x4b), QKeyCode "kp_4", number 0x4b
+KP_Left 0x4b
+KP_4 0x4b numlock
+
+# evdev 76 (0x4c), QKeyCode "kp_5", number 0x4c
+KP_Begin 0x4c
+KP_5 0x4c numlock
+
+# evdev 77 (0x4d), QKeyCode "kp_6", number 0x4d
+KP_Right 0x4d
+KP_6 0x4d numlock
+
+# evdev 78 (0x4e), QKeyCode "kp_add", number 0x4e
+KP_Add 0x4e
+
+# evdev 79 (0x4f), QKeyCode "kp_1", number 0x4f
+KP_End 0x4f
+KP_1 0x4f numlock
+
+# evdev 80 (0x50), QKeyCode "kp_2", number 0x50
+KP_Down 0x50
+KP_2 0x50 numlock
+
+# evdev 81 (0x51), QKeyCode "kp_3", number 0x51
+KP_Next 0x51
+KP_3 0x51 numlock
+
+# evdev 82 (0x52), QKeyCode "kp_0", number 0x52
+KP_Insert 0x52
+KP_0 0x52 numlock
+
+# evdev 83 (0x53), QKeyCode "kp_decimal", number 0x53
+KP_Delete 0x53
+KP_Separator 0x53 numlock
+
+# evdev 84 (0x54): no evdev -> QKeyCode mapping (xkb keysym ISO_Level3_Shift)
+
+# evdev 85 (0x55): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 86 (0x56), QKeyCode "less", number 0x56
+less 0x56
+greater 0x56 shift
+bar 0x56 altgr
+brokenbar 0x56 shift altgr
+
+# evdev 87 (0x57), QKeyCode "f11", number 0x57
+F11 0x57
+
+# evdev 88 (0x58), QKeyCode "f12", number 0x58
+F12 0x58
+
+# evdev 89 (0x59), QKeyCode "ro", number 0x73
+
+# evdev 90 (0x5a): no evdev -> QKeyCode mapping (xkb keysym Katakana)
+
+# evdev 91 (0x5b), QKeyCode "hiragana", number 0x77
+Hiragana 0x77
+
+# evdev 92 (0x5c), QKeyCode "henkan", number 0x79
+Henkan_Mode 0x79
+
+# evdev 93 (0x5d): no evdev -> QKeyCode mapping (xkb keysym Hiragana_Katakana)
+
+# evdev 94 (0x5e): no evdev -> QKeyCode mapping (xkb keysym Muhenkan)
+
+# evdev 95 (0x5f): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 96 (0x60), QKeyCode "kp_enter", number 0x9c
+KP_Enter 0x9c
+
+# evdev 97 (0x61), QKeyCode "ctrl_r", number 0x9d
+Control_R 0x9d
+
+# evdev 98 (0x62), QKeyCode "kp_divide", number 0xb5
+KP_Divide 0xb5
+
+# evdev 99 (0x63), QKeyCode "sysrq", number 0x54
+Print 0x54
+
+# evdev 100 (0x64), QKeyCode "alt_r", number 0xb8
+ISO_Level3_Shift 0xb8
+
+# evdev 101 (0x65), QKeyCode "lf", number 0x5b
+Linefeed 0x5b
+
+# evdev 102 (0x66), QKeyCode "home", number 0xc7
+Home 0xc7
+
+# evdev 103 (0x67), QKeyCode "up", number 0xc8
+Up 0xc8
+
+# evdev 104 (0x68), QKeyCode "pgup", number 0xc9
+Prior 0xc9
+
+# evdev 105 (0x69), QKeyCode "left", number 0xcb
+Left 0xcb
+
+# evdev 106 (0x6a), QKeyCode "right", number 0xcd
+Right 0xcd
+
+# evdev 107 (0x6b), QKeyCode "end", number 0xcf
+End 0xcf
+
+# evdev 108 (0x6c), QKeyCode "down", number 0xd0
+Down 0xd0
+
+# evdev 109 (0x6d), QKeyCode "pgdn", number 0xd1
+Next 0xd1
+
+# evdev 110 (0x6e), QKeyCode "insert", number 0xd2
+Insert 0xd2
+
+# evdev 111 (0x6f), QKeyCode "delete", number 0xd3
+Delete 0xd3
+
+# evdev 112 (0x70): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 113 (0x71), QKeyCode "audiomute", number 0xa0
+XF86AudioMute 0xa0
+
+# evdev 114 (0x72), QKeyCode "volumedown", number 0xae
+XF86AudioLowerVolume 0xae
+
+# evdev 115 (0x73), QKeyCode "volumeup", number 0xb0
+XF86AudioRaiseVolume 0xb0
+
+# evdev 116 (0x74), QKeyCode "power", number 0xde
+XF86PowerOff 0xde
+
+# evdev 117 (0x75), QKeyCode "kp_equals", number 0x59
+KP_Equal 0x59
+
+# evdev 118 (0x76): no evdev -> QKeyCode mapping (xkb keysym plusminus)
+
+# evdev 119 (0x77), QKeyCode "pause", number 0xc6
+Pause 0xc6
+
+# evdev 120 (0x78): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchA)
+
+# evdev 121 (0x79), QKeyCode "kp_comma", number 0x7e
+KP_Decimal 0x7e
+
+# evdev 122 (0x7a): no evdev -> QKeyCode mapping (xkb keysym Hangul)
+
+# evdev 123 (0x7b): no evdev -> QKeyCode mapping (xkb keysym Hangul_Hanja)
+
+# evdev 124 (0x7c), QKeyCode "yen", number 0x7d
+
+# evdev 125 (0x7d), QKeyCode "meta_l", number 0xdb
+Super_L 0xdb
+
+# evdev 126 (0x7e), QKeyCode "meta_r", number 0xdc
+Super_R 0xdc
+
+# evdev 127 (0x7f), QKeyCode "compose", number 0xdd
+Menu 0xdd
+
+# evdev 128 (0x80), QKeyCode "stop", number 0xe8
+Cancel 0xe8
+
+# evdev 129 (0x81), QKeyCode "again", number 0x85
+Redo 0x85
+
+# evdev 130 (0x82), QKeyCode "props", number 0x86
+SunProps 0x86
+
+# evdev 131 (0x83), QKeyCode "undo", number 0x87
+Undo 0x87
+
+# evdev 132 (0x84), QKeyCode "front", number 0x8c
+SunFront 0x8c
+
+# evdev 133 (0x85), QKeyCode "copy", number 0xf8
+XF86Copy 0xf8
+
+# evdev 134 (0x86), QKeyCode "open", number 0x64
+XF86Open 0x64
+
+# evdev 135 (0x87), QKeyCode "paste", number 0x65
+XF86Paste 0x65
+
+# evdev 136 (0x88), QKeyCode "find", number 0xc1
+Find 0xc1
+
+# evdev 137 (0x89), QKeyCode "cut", number 0xbc
+XF86Cut 0xbc
+
+# evdev 138 (0x8a), QKeyCode "help", number 0xf5
+Help 0xf5
+
+# evdev 139 (0x8b), QKeyCode "menu", number 0x9e
+XF86MenuKB 0x9e
+
+# evdev 140 (0x8c), QKeyCode "calculator", number 0xa1
+XF86Calculator 0xa1
+
+# evdev 141 (0x8d): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 142 (0x8e), QKeyCode "sleep", number 0xdf
+XF86Sleep 0xdf
+
+# evdev 143 (0x8f), QKeyCode "wake", number 0xe3
+XF86WakeUp 0xe3
+
+# evdev 144 (0x90): no evdev -> QKeyCode mapping (xkb keysym XF86Explorer)
+
+# evdev 145 (0x91): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 146 (0x92): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 147 (0x93): no evdev -> QKeyCode mapping (xkb keysym XF86Xfer)
+
+# evdev 148 (0x94): no evdev -> QKeyCode mapping (xkb keysym XF86Launch1)
+
+# evdev 149 (0x95): no evdev -> QKeyCode mapping (xkb keysym XF86Launch2)
+
+# evdev 150 (0x96): no evdev -> QKeyCode mapping (xkb keysym XF86WWW)
+
+# evdev 151 (0x97): no evdev -> QKeyCode mapping (xkb keysym XF86DOS)
+
+# evdev 152 (0x98): no evdev -> QKeyCode mapping (xkb keysym XF86ScreenSaver)
+
+# evdev 153 (0x99): no evdev -> QKeyCode mapping (xkb keysym XF86RotateWindows)
+
+# evdev 154 (0x9a): no evdev -> QKeyCode mapping (xkb keysym XF86TaskPane)
+
+# evdev 155 (0x9b), QKeyCode "mail", number 0xec
+XF86Mail 0xec
+
+# evdev 156 (0x9c), QKeyCode "ac_bookmarks", number 0xe6
+XF86Favorites 0xe6
+
+# evdev 157 (0x9d), QKeyCode "computer", number 0xeb
+XF86MyComputer 0xeb
+
+# evdev 158 (0x9e), QKeyCode "ac_back", number 0xea
+XF86Back 0xea
+
+# evdev 159 (0x9f), QKeyCode "ac_forward", number 0xe9
+XF86Forward 0xe9
+
+# evdev 160 (0xa0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 161 (0xa1): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 162 (0xa2): no evdev -> QKeyCode mapping (xkb keysym XF86Eject)
+
+# evdev 163 (0xa3), QKeyCode "audionext", number 0x99
+XF86AudioNext 0x99
+
+# evdev 164 (0xa4), QKeyCode "audioplay", number 0xa2
+XF86AudioPlay 0xa2
+XF86AudioPause 0xa2 shift
+
+# evdev 165 (0xa5), QKeyCode "audioprev", number 0x90
+XF86AudioPrev 0x90
+
+# evdev 166 (0xa6), QKeyCode "audiostop", number 0xa4
+XF86AudioStop 0xa4
+XF86Eject 0xa4 shift
+
+# evdev 167 (0xa7): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRecord)
+
+# evdev 168 (0xa8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioRewind)
+
+# evdev 169 (0xa9): no evdev -> QKeyCode mapping (xkb keysym XF86Phone)
+
+# evdev 170 (0xaa): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 171 (0xab): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 172 (0xac), QKeyCode "ac_home", number 0xb2
+XF86HomePage 0xb2
+
+# evdev 173 (0xad), QKeyCode "ac_refresh", number 0xe7
+XF86Reload 0xe7
+
+# evdev 174 (0xae): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 175 (0xaf): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 176 (0xb0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 177 (0xb1): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollUp)
+
+# evdev 178 (0xb2): no evdev -> QKeyCode mapping (xkb keysym XF86ScrollDown)
+
+# evdev 179 (0xb3): no evdev -> QKeyCode mapping (xkb keysym parenleft)
+
+# evdev 180 (0xb4): no evdev -> QKeyCode mapping (xkb keysym parenright)
+
+# evdev 181 (0xb5): no evdev -> QKeyCode mapping (xkb keysym XF86New)
+
+# evdev 182 (0xb6): no evdev -> QKeyCode mapping (xkb keysym Redo)
+
+# evdev 183 (0xb7): no evdev -> QKeyCode mapping (xkb keysym XF86Tools)
+
+# evdev 184 (0xb8): no evdev -> QKeyCode mapping (xkb keysym XF86Launch5)
+
+# evdev 185 (0xb9): no evdev -> QKeyCode mapping (xkb keysym XF86Launch6)
+
+# evdev 186 (0xba): no evdev -> QKeyCode mapping (xkb keysym XF86Launch7)
+
+# evdev 187 (0xbb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch8)
+
+# evdev 188 (0xbc): no evdev -> QKeyCode mapping (xkb keysym XF86Launch9)
+
+# evdev 189 (0xbd): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 190 (0xbe): no evdev -> QKeyCode mapping (xkb keysym XF86AudioMicMute)
+
+# evdev 191 (0xbf): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadToggle)
+
+# evdev 192 (0xc0): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOn)
+
+# evdev 193 (0xc1): no evdev -> QKeyCode mapping (xkb keysym XF86TouchpadOff)
+
+# evdev 194 (0xc2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 195 (0xc3): no evdev -> QKeyCode mapping (xkb keysym Mode_switch)
+
+# evdev 196 (0xc4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 197 (0xc5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 198 (0xc6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 199 (0xc7): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 200 (0xc8): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 201 (0xc9): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPause)
+
+# evdev 202 (0xca): no evdev -> QKeyCode mapping (xkb keysym XF86Launch3)
+
+# evdev 203 (0xcb): no evdev -> QKeyCode mapping (xkb keysym XF86Launch4)
+
+# evdev 204 (0xcc): no evdev -> QKeyCode mapping (xkb keysym XF86LaunchB)
+
+# evdev 205 (0xcd): no evdev -> QKeyCode mapping (xkb keysym XF86Suspend)
+
+# evdev 206 (0xce): no evdev -> QKeyCode mapping (xkb keysym XF86Close)
+
+# evdev 207 (0xcf): no evdev -> QKeyCode mapping (xkb keysym XF86AudioPlay)
+
+# evdev 208 (0xd0): no evdev -> QKeyCode mapping (xkb keysym XF86AudioForward)
+
+# evdev 209 (0xd1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 210 (0xd2): no evdev -> QKeyCode mapping (xkb keysym Print)
+
+# evdev 211 (0xd3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 212 (0xd4): no evdev -> QKeyCode mapping (xkb keysym XF86WebCam)
+
+# evdev 213 (0xd5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 214 (0xd6): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 215 (0xd7): no evdev -> QKeyCode mapping (xkb keysym XF86Mail)
+
+# evdev 216 (0xd8): no evdev -> QKeyCode mapping (xkb keysym XF86Messenger)
+
+# evdev 217 (0xd9): no evdev -> QKeyCode mapping (xkb keysym XF86Search)
+
+# evdev 218 (0xda): no evdev -> QKeyCode mapping (xkb keysym XF86Go)
+
+# evdev 219 (0xdb): no evdev -> QKeyCode mapping (xkb keysym XF86Finance)
+
+# evdev 220 (0xdc): no evdev -> QKeyCode mapping (xkb keysym XF86Game)
+
+# evdev 221 (0xdd): no evdev -> QKeyCode mapping (xkb keysym XF86Shop)
+
+# evdev 222 (0xde): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 223 (0xdf): no evdev -> QKeyCode mapping (xkb keysym Cancel)
+
+# evdev 224 (0xe0): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessDown)
+
+# evdev 225 (0xe1): no evdev -> QKeyCode mapping (xkb keysym XF86MonBrightnessUp)
+
+# evdev 226 (0xe2), QKeyCode "mediaselect", number 0xed
+XF86AudioMedia 0xed
+
+# evdev 227 (0xe3): no evdev -> QKeyCode mapping (xkb keysym XF86Display)
+
+# evdev 228 (0xe4): no evdev -> QKeyCode mapping (xkb keysym XF86KbdLightOnOff)
+
+# evdev 229 (0xe5): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessDown)
+
+# evdev 230 (0xe6): no evdev -> QKeyCode mapping (xkb keysym XF86KbdBrightnessUp)
+
+# evdev 231 (0xe7): no evdev -> QKeyCode mapping (xkb keysym XF86Send)
+
+# evdev 232 (0xe8): no evdev -> QKeyCode mapping (xkb keysym XF86Reply)
+
+# evdev 233 (0xe9): no evdev -> QKeyCode mapping (xkb keysym XF86MailForward)
+
+# evdev 234 (0xea): no evdev -> QKeyCode mapping (xkb keysym XF86Save)
+
+# evdev 235 (0xeb): no evdev -> QKeyCode mapping (xkb keysym XF86Documents)
+
+# evdev 236 (0xec): no evdev -> QKeyCode mapping (xkb keysym XF86Battery)
+
+# evdev 237 (0xed): no evdev -> QKeyCode mapping (xkb keysym XF86Bluetooth)
+
+# evdev 238 (0xee): no evdev -> QKeyCode mapping (xkb keysym XF86WLAN)
+
+# evdev 239 (0xef): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 240 (0xf0): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 241 (0xf1): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 242 (0xf2): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 243 (0xf3): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 244 (0xf4): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+# evdev 245 (0xf5): no evdev -> QKeyCode mapping (xkb keysym NoSymbol)
+
+#
+# quirks section start
+#
+# Sometimes multiple keysyms map to the same keycodes.
+# The keycode -> keysym lookup finds only one of the
+# keysyms. So append them here.
+#
+
+Print 0x54
+Sys_Req 0x54
+Execute 0x54
+KP_Decimal 0x53 numlock
+KP_Separator 0x53 numlock
+Alt_R 0xb8
+ISO_Level3_Shift 0xb8
+Mode_switch 0xb8
+
+# quirks section end
diff --git a/qemu-keymap.c b/qemu-keymap.c
new file mode 100644
index 0000000000..49e9167b86
--- /dev/null
+++ b/qemu-keymap.c
@@ -0,0 +1,258 @@
+/*
+ * QEMU keymap utility
+ *
+ * Copyright Red Hat, Inc. 2017
+ *
+ * Authors:
+ * Gerd Hoffmann <kraxel@redhat.com>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ */
+#include "qemu/osdep.h"
+#include "qemu-common.h"
+#include "qapi-types.h"
+#include "qemu/notify.h"
+#include "ui/input.h"
+
+#include <xkbcommon/xkbcommon.h>
+
+struct xkb_rule_names names = {
+ .rules = NULL,
+ .model = "pc105",
+ .layout = "us",
+ .variant = NULL,
+ .options = NULL,
+};
+
+static xkb_mod_mask_t shift;
+static xkb_mod_mask_t ctrl;
+static xkb_mod_mask_t altgr;
+static xkb_mod_mask_t numlock;
+
+static FILE *outfile;
+
+/* ------------------------------------------------------------------------ */
+
+static uint32_t qcode_to_number(uint32_t qcode)
+{
+ KeyValue keyvalue;
+ uint32_t number;
+
+ keyvalue.type = KEY_VALUE_KIND_QCODE;
+ keyvalue.u.qcode.data = qcode;
+ number = qemu_input_key_value_to_number(&keyvalue);
+ assert(number != 0);
+ return number;
+}
+
+static void print_sym(xkb_keysym_t sym, uint32_t qcode, const char *mod)
+{
+ char name[64];
+
+ if (sym == XKB_KEY_NoSymbol) {
+ return;
+ }
+ xkb_keysym_get_name(sym, name, sizeof(name));
+
+ /* TODO: make ui/keymap.c parser accept QKeyCode names */
+ fprintf(outfile, "%s 0x%02x%s\n", name, qcode_to_number(qcode), mod);
+}
+
+static void walk_map(struct xkb_keymap *map, xkb_keycode_t code, void *data)
+{
+ struct xkb_state *state = data;
+ xkb_keysym_t kbase, knumlock, kshift, kaltgr, kaltgrshift;
+ uint32_t evdev, qcode;
+ char name[64];
+
+ fprintf(outfile, "\n");
+
+ /*
+ * map xkb keycode -> QKeyCode
+ *
+ * xkb keycode is linux evdev shifted by 8
+ */
+ evdev = code - 8;
+ qcode = qemu_input_linux_to_qcode(evdev);
+ if (qcode == Q_KEY_CODE_UNMAPPED) {
+ xkb_state_update_mask(state, 0, 0, 0, 0, 0, 0);
+ kbase = xkb_state_key_get_one_sym(state, code);
+ xkb_keysym_get_name(kbase, name, sizeof(name));
+ fprintf(outfile, "# evdev %d (0x%x): no evdev -> QKeyCode mapping"
+ " (xkb keysym %s)\n", evdev, evdev, name);
+ return;
+ }
+ fprintf(outfile, "# evdev %d (0x%x), QKeyCode \"%s\", number 0x%x\n",
+ evdev, evdev,
+ QKeyCode_lookup.array[qcode],
+ qcode_to_number(qcode));
+
+ /*
+ * check which modifier states generate which keysyms
+ */
+ xkb_state_update_mask(state, 0, 0, 0, 0, 0, 0);
+ kbase = xkb_state_key_get_one_sym(state, code);
+ print_sym(kbase, qcode, "");
+
+ xkb_state_update_mask(state, 0, 0, numlock, 0, 0, 0);
+ knumlock = xkb_state_key_get_one_sym(state, code);
+ if (kbase != knumlock) {
+ print_sym(knumlock, qcode, " numlock");
+ }
+
+ xkb_state_update_mask(state, shift, 0, 0, 0, 0, 0);
+ kshift = xkb_state_key_get_one_sym(state, code);
+ if (kbase != kshift && knumlock != kshift) {
+ print_sym(kshift, qcode, " shift");
+ }
+
+ xkb_state_update_mask(state, altgr, 0, 0, 0, 0, 0);
+ kaltgr = xkb_state_key_get_one_sym(state, code);
+ if (kbase != kaltgr) {
+ print_sym(kaltgr, qcode, " altgr");
+ }
+
+ xkb_state_update_mask(state, altgr | shift, 0, 0, 0, 0, 0);
+ kaltgrshift = xkb_state_key_get_one_sym(state, code);
+ if (kshift != kaltgrshift && kaltgr != kaltgrshift) {
+ print_sym(kaltgrshift, qcode, " shift altgr");
+ }
+ return;
+}
+
+static void usage(FILE *out)
+{
+ fprintf(out,
+ "\n"
+ "This tool generates qemu reverse keymaps from xkb keymaps,\n"
+ "which can be used with the qemu \"-k\" command line switch.\n"
+ "\n"
+ "usage: qemu-keymap <options>\n"
+ "options:\n"
+ " -h print this text\n"
+ " -f <file> set output file (default: stdout)\n"
+ " -m <model> set kbd model (default: %s)\n"
+ " -l <layout> set kbd layout (default: %s)\n"
+ " -v <variant> set kbd variant (default: %s)\n"
+ " -o <options> set kbd options (default: %s)\n"
+ "\n",
+ names.model, names.layout,
+ names.variant ?: "-",
+ names.options ?: "-");
+}
+
+int main(int argc, char *argv[])
+{
+ struct xkb_context *ctx;
+ struct xkb_keymap *map;
+ struct xkb_state *state;
+ xkb_mod_index_t mod, mods;
+ int rc;
+
+ for (;;) {
+ rc = getopt(argc, argv, "hm:l:v:o:f:");
+ if (rc == -1) {
+ break;
+ }
+ switch (rc) {
+ case 'm':
+ names.model = optarg;
+ break;
+ case 'l':
+ names.layout = optarg;
+ break;
+ case 'v':
+ names.variant = optarg;
+ break;
+ case 'o':
+ names.options = optarg;
+ break;
+ case 'f':
+ outfile = fopen(optarg, "w");
+ if (outfile == NULL) {
+ fprintf(stderr, "open %s: %s\n", optarg, strerror(errno));
+ exit(1);
+ }
+ break;
+ case 'h':
+ usage(stdout);
+ exit(0);
+ default:
+ usage(stderr);
+ exit(1);
+ }
+ }
+
+ if (outfile == NULL) {
+ outfile = stdout;
+ }
+
+ fprintf(outfile,
+ "#\n"
+ "# generated by qemu-keymap\n"
+ "# model : %s\n"
+ "# layout : %s\n"
+ "# variant : %s\n"
+ "# options : %s\n"
+ "\n",
+ names.model, names.layout,
+ names.variant ?: "-",
+ names.options ?: "-");
+
+ ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
+ map = xkb_keymap_new_from_names(ctx, &names, XKB_KEYMAP_COMPILE_NO_FLAGS);
+ if (!map) {
+ /* libxkbcommon prints error */
+ exit(1);
+ }
+
+ fprintf(outfile, "# name: \"%s\"\n\n",
+ xkb_keymap_layout_get_name(map, 0));
+ fprintf(outfile, "# modifiers\n");
+ mods = xkb_keymap_num_mods(map);
+ for (mod = 0; mod < mods; mod++) {
+ fprintf(outfile, "# %2d: %s\n",
+ mod, xkb_keymap_mod_get_name(map, mod));
+ }
+
+ mod = xkb_keymap_mod_get_index(map, "Shift");
+ shift = (1 << mod);
+ mod = xkb_keymap_mod_get_index(map, "Control");
+ ctrl = (1 << mod);
+ mod = xkb_keymap_mod_get_index(map, "AltGr");
+ altgr = (1 << mod);
+ mod = xkb_keymap_mod_get_index(map, "NumLock");
+ numlock = (1 << mod);
+
+ state = xkb_state_new(map);
+ xkb_keymap_key_for_each(map, walk_map, state);
+
+ /* add quirks */
+ fprintf(outfile,
+ "\n"
+ "#\n"
+ "# quirks section start\n"
+ "#\n"
+ "# Sometimes multiple keysyms map to the same keycodes.\n"
+ "# The keycode -> keysym lookup finds only one of the\n"
+ "# keysyms. So append them here.\n"
+ "#\n"
+ "\n");
+ print_sym(XKB_KEY_Print, Q_KEY_CODE_SYSRQ, "");
+ print_sym(XKB_KEY_Sys_Req, Q_KEY_CODE_SYSRQ, "");
+ print_sym(XKB_KEY_Execute, Q_KEY_CODE_SYSRQ, "");
+
+ print_sym(XKB_KEY_KP_Decimal, Q_KEY_CODE_KP_DECIMAL, " numlock");
+ print_sym(XKB_KEY_KP_Separator, Q_KEY_CODE_KP_DECIMAL, " numlock");
+
+ print_sym(XKB_KEY_Alt_R, Q_KEY_CODE_ALT_R, "");
+ print_sym(XKB_KEY_ISO_Level3_Shift, Q_KEY_CODE_ALT_R, "");
+ print_sym(XKB_KEY_Mode_switch, Q_KEY_CODE_ALT_R, "");
+
+ fprintf(outfile,
+ "\n"
+ "# quirks section end\n");
+
+ exit(0);
+}
diff --git a/scripts/archive-source.sh b/scripts/archive-source.sh
index c4e7d98f4d..4e63774f9a 100755
--- a/scripts/archive-source.sh
+++ b/scripts/archive-source.sh
@@ -18,15 +18,37 @@ if test $# -lt 1; then
error "Usage: $0 <output tarball>"
fi
-tar_file="$1"
-list_file="$1.list"
-submodules=$(git submodule foreach --recursive --quiet 'echo $name')
+tar_file=`realpath "$1"`
+list_file="${tar_file}.list"
+vroot_dir="${tar_file}.vroot"
-if test $? -ne 0; then
- error "git submodule command failed"
+# We want a predictable list of submodules for builds, that is
+# independent of what the developer currently has initialized
+# in their checkout, because the build environment is completely
+# different to the host OS.
+submodules="dtc ui/keycodemapdb"
+
+trap "status=$?; rm -rf \"$list_file\" \"$vroot_dir\"; exit \$status" 0 1 2 3 15
+
+if git diff-index --quiet HEAD -- &>/dev/null
+then
+ HEAD=HEAD
+else
+ HEAD=`git stash create`
fi
+git clone --shared . "$vroot_dir"
+test $? -ne 0 && error "failed to clone into '$vroot_dir'"
+
+cd "$vroot_dir"
+test $? -ne 0 && error "failed to change into '$vroot_dir'"
+
+git checkout $HEAD
+test $? -ne 0 && error "failed to checkout $HEAD revision"
-trap "status=$?; rm -f \"$list_file\"; exit \$status" 0 1 2 3 15
+for sm in $submodules; do
+ git submodule update --init $sm
+ test $? -ne 0 && error "failed to init submodule $sm"
+done
if test -n "$submodules"; then
{
diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh
new file mode 100755
index 0000000000..d8fbc7e47e
--- /dev/null
+++ b/scripts/git-submodule.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+#
+# This code is licensed under the GPL version 2 or later. See
+# the COPYING file in the top-level directory.
+
+set -e
+
+substat=".git-submodule-status"
+
+command=$1
+shift
+modules="$@"
+
+if test -z "$modules"
+then
+ test -e $substat || touch $substat
+ exit 0
+fi
+
+if ! test -e ".git"
+then
+ echo "$0: unexpectedly called with submodules but no git checkout exists"
+ exit 1
+fi
+
+case "$command" in
+status)
+ test -f "$substat" || exit 1
+ trap "rm -f ${substat}.tmp" EXIT
+ git submodule status $modules > "${substat}.tmp"
+ diff "${substat}" "${substat}.tmp" >/dev/null
+ exit $?
+ ;;
+update)
+ git submodule update --init $modules 1>/dev/null 2>&1
+ git submodule status $modules > "${substat}"
+ ;;
+esac
diff --git a/ui/gtk-gl-area.c b/ui/gtk-gl-area.c
index 01ebf2c7de..7080f4e14f 100644
--- a/ui/gtk-gl-area.c
+++ b/ui/gtk-gl-area.c
@@ -178,8 +178,7 @@ void gd_gl_area_scanout_texture(DisplayChangeListener *dcl,
gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area));
- if (vc->gfx.guest_fb.framebuffer == 0 ||
- vc->gfx.w == 0 || vc->gfx.h == 0) {
+ if (backing_id == 0 || vc->gfx.w == 0 || vc->gfx.h == 0) {
gtk_gl_area_set_scanout_mode(vc, false);
return;
}
diff --git a/ui/gtk.c b/ui/gtk.c
index 5bd87c265a..342e96fbe9 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1702,7 +1702,12 @@ static void gd_menu_copy(GtkMenuItem *item, void *opaque)
GtkDisplayState *s = opaque;
VirtualConsole *vc = gd_vc_find_current(s);
+#if VTE_CHECK_VERSION(0, 50, 0)
+ vte_terminal_copy_clipboard_format(VTE_TERMINAL(vc->vte.terminal),
+ VTE_FORMAT_TEXT);
+#else
vte_terminal_copy_clipboard(VTE_TERMINAL(vc->vte.terminal));
+#endif
}
static void gd_vc_adjustment_changed(GtkAdjustment *adjustment, void *opaque)
diff --git a/ui/input-keymap.c b/ui/input-keymap.c
index cf979c2ce9..3a19a169f5 100644
--- a/ui/input-keymap.c
+++ b/ui/input-keymap.c
@@ -5,333 +5,37 @@
#include "standard-headers/linux/input.h"
-static int linux_to_qcode[KEY_CNT] = {
- [KEY_ESC] = Q_KEY_CODE_ESC,
- [KEY_1] = Q_KEY_CODE_1,
- [KEY_2] = Q_KEY_CODE_2,
- [KEY_3] = Q_KEY_CODE_3,
- [KEY_4] = Q_KEY_CODE_4,
- [KEY_5] = Q_KEY_CODE_5,
- [KEY_6] = Q_KEY_CODE_6,
- [KEY_7] = Q_KEY_CODE_7,
- [KEY_8] = Q_KEY_CODE_8,
- [KEY_9] = Q_KEY_CODE_9,
- [KEY_0] = Q_KEY_CODE_0,
- [KEY_MINUS] = Q_KEY_CODE_MINUS,
- [KEY_EQUAL] = Q_KEY_CODE_EQUAL,
- [KEY_BACKSPACE] = Q_KEY_CODE_BACKSPACE,
- [KEY_TAB] = Q_KEY_CODE_TAB,
- [KEY_Q] = Q_KEY_CODE_Q,
- [KEY_W] = Q_KEY_CODE_W,
- [KEY_E] = Q_KEY_CODE_E,
- [KEY_R] = Q_KEY_CODE_R,
- [KEY_T] = Q_KEY_CODE_T,
- [KEY_Y] = Q_KEY_CODE_Y,
- [KEY_U] = Q_KEY_CODE_U,
- [KEY_I] = Q_KEY_CODE_I,
- [KEY_O] = Q_KEY_CODE_O,
- [KEY_P] = Q_KEY_CODE_P,
- [KEY_LEFTBRACE] = Q_KEY_CODE_BRACKET_LEFT,
- [KEY_RIGHTBRACE] = Q_KEY_CODE_BRACKET_RIGHT,
- [KEY_ENTER] = Q_KEY_CODE_RET,
- [KEY_LEFTCTRL] = Q_KEY_CODE_CTRL,
- [KEY_A] = Q_KEY_CODE_A,
- [KEY_S] = Q_KEY_CODE_S,
- [KEY_D] = Q_KEY_CODE_D,
- [KEY_F] = Q_KEY_CODE_F,
- [KEY_G] = Q_KEY_CODE_G,
- [KEY_H] = Q_KEY_CODE_H,
- [KEY_J] = Q_KEY_CODE_J,
- [KEY_K] = Q_KEY_CODE_K,
- [KEY_L] = Q_KEY_CODE_L,
- [KEY_SEMICOLON] = Q_KEY_CODE_SEMICOLON,
- [KEY_APOSTROPHE] = Q_KEY_CODE_APOSTROPHE,
- [KEY_GRAVE] = Q_KEY_CODE_GRAVE_ACCENT,
- [KEY_LEFTSHIFT] = Q_KEY_CODE_SHIFT,
- [KEY_BACKSLASH] = Q_KEY_CODE_BACKSLASH,
- [KEY_102ND] = Q_KEY_CODE_LESS,
- [KEY_Z] = Q_KEY_CODE_Z,
- [KEY_X] = Q_KEY_CODE_X,
- [KEY_C] = Q_KEY_CODE_C,
- [KEY_V] = Q_KEY_CODE_V,
- [KEY_B] = Q_KEY_CODE_B,
- [KEY_N] = Q_KEY_CODE_N,
- [KEY_M] = Q_KEY_CODE_M,
- [KEY_COMMA] = Q_KEY_CODE_COMMA,
- [KEY_DOT] = Q_KEY_CODE_DOT,
- [KEY_SLASH] = Q_KEY_CODE_SLASH,
- [KEY_RIGHTSHIFT] = Q_KEY_CODE_SHIFT_R,
- [KEY_LEFTALT] = Q_KEY_CODE_ALT,
- [KEY_SPACE] = Q_KEY_CODE_SPC,
- [KEY_CAPSLOCK] = Q_KEY_CODE_CAPS_LOCK,
- [KEY_F1] = Q_KEY_CODE_F1,
- [KEY_F2] = Q_KEY_CODE_F2,
- [KEY_F3] = Q_KEY_CODE_F3,
- [KEY_F4] = Q_KEY_CODE_F4,
- [KEY_F5] = Q_KEY_CODE_F5,
- [KEY_F6] = Q_KEY_CODE_F6,
- [KEY_F7] = Q_KEY_CODE_F7,
- [KEY_F8] = Q_KEY_CODE_F8,
- [KEY_F9] = Q_KEY_CODE_F9,
- [KEY_F10] = Q_KEY_CODE_F10,
- [KEY_NUMLOCK] = Q_KEY_CODE_NUM_LOCK,
- [KEY_SCROLLLOCK] = Q_KEY_CODE_SCROLL_LOCK,
- [KEY_KP0] = Q_KEY_CODE_KP_0,
- [KEY_KP1] = Q_KEY_CODE_KP_1,
- [KEY_KP2] = Q_KEY_CODE_KP_2,
- [KEY_KP3] = Q_KEY_CODE_KP_3,
- [KEY_KP4] = Q_KEY_CODE_KP_4,
- [KEY_KP5] = Q_KEY_CODE_KP_5,
- [KEY_KP6] = Q_KEY_CODE_KP_6,
- [KEY_KP7] = Q_KEY_CODE_KP_7,
- [KEY_KP8] = Q_KEY_CODE_KP_8,
- [KEY_KP9] = Q_KEY_CODE_KP_9,
- [KEY_KPMINUS] = Q_KEY_CODE_KP_SUBTRACT,
- [KEY_KPPLUS] = Q_KEY_CODE_KP_ADD,
- [KEY_KPDOT] = Q_KEY_CODE_KP_DECIMAL,
- [KEY_KPENTER] = Q_KEY_CODE_KP_ENTER,
- [KEY_KPSLASH] = Q_KEY_CODE_KP_DIVIDE,
- [KEY_KPASTERISK] = Q_KEY_CODE_KP_MULTIPLY,
- [KEY_F11] = Q_KEY_CODE_F11,
- [KEY_F12] = Q_KEY_CODE_F12,
- [KEY_RO] = Q_KEY_CODE_RO,
- [KEY_HIRAGANA] = Q_KEY_CODE_HIRAGANA,
- [KEY_HENKAN] = Q_KEY_CODE_HENKAN,
- [KEY_RIGHTCTRL] = Q_KEY_CODE_CTRL_R,
- [KEY_SYSRQ] = Q_KEY_CODE_SYSRQ,
- [KEY_RIGHTALT] = Q_KEY_CODE_ALT_R,
- [KEY_HOME] = Q_KEY_CODE_HOME,
- [KEY_UP] = Q_KEY_CODE_UP,
- [KEY_PAGEUP] = Q_KEY_CODE_PGUP,
- [KEY_LEFT] = Q_KEY_CODE_LEFT,
- [KEY_RIGHT] = Q_KEY_CODE_RIGHT,
- [KEY_END] = Q_KEY_CODE_END,
- [KEY_DOWN] = Q_KEY_CODE_DOWN,
- [KEY_PAGEDOWN] = Q_KEY_CODE_PGDN,
- [KEY_INSERT] = Q_KEY_CODE_INSERT,
- [KEY_DELETE] = Q_KEY_CODE_DELETE,
- [KEY_POWER] = Q_KEY_CODE_POWER,
- [KEY_KPCOMMA] = Q_KEY_CODE_KP_COMMA,
- [KEY_YEN] = Q_KEY_CODE_YEN,
- [KEY_LEFTMETA] = Q_KEY_CODE_META_L,
- [KEY_RIGHTMETA] = Q_KEY_CODE_META_R,
- [KEY_MENU] = Q_KEY_CODE_MENU,
- [KEY_PAUSE] = Q_KEY_CODE_PAUSE,
-
- [KEY_SLEEP] = Q_KEY_CODE_SLEEP,
- [KEY_WAKEUP] = Q_KEY_CODE_WAKE,
- [KEY_CALC] = Q_KEY_CODE_CALCULATOR,
- [KEY_MAIL] = Q_KEY_CODE_MAIL,
- [KEY_COMPUTER] = Q_KEY_CODE_COMPUTER,
-
- [KEY_STOP] = Q_KEY_CODE_STOP,
- [KEY_BOOKMARKS] = Q_KEY_CODE_AC_BOOKMARKS,
- [KEY_BACK] = Q_KEY_CODE_AC_BACK,
- [KEY_FORWARD] = Q_KEY_CODE_AC_FORWARD,
- [KEY_HOMEPAGE] = Q_KEY_CODE_AC_HOME,
- [KEY_REFRESH] = Q_KEY_CODE_AC_REFRESH,
- [KEY_FIND] = Q_KEY_CODE_FIND,
-
- [KEY_NEXTSONG] = Q_KEY_CODE_AUDIONEXT,
- [KEY_PREVIOUSSONG] = Q_KEY_CODE_AUDIOPREV,
- [KEY_STOPCD] = Q_KEY_CODE_AUDIOSTOP,
- [KEY_PLAYCD] = Q_KEY_CODE_AUDIOPLAY,
- [KEY_MUTE] = Q_KEY_CODE_AUDIOMUTE,
- [KEY_VOLUMEDOWN] = Q_KEY_CODE_VOLUMEDOWN,
- [KEY_VOLUMEUP] = Q_KEY_CODE_VOLUMEUP,
-};
-
-static const int qcode_to_number[] = {
- [Q_KEY_CODE_SHIFT] = 0x2a,
- [Q_KEY_CODE_SHIFT_R] = 0x36,
-
- [Q_KEY_CODE_ALT] = 0x38,
- [Q_KEY_CODE_ALT_R] = 0xb8,
- [Q_KEY_CODE_CTRL] = 0x1d,
- [Q_KEY_CODE_CTRL_R] = 0x9d,
-
- [Q_KEY_CODE_META_L] = 0xdb,
- [Q_KEY_CODE_META_R] = 0xdc,
- [Q_KEY_CODE_MENU] = 0xdd,
-
- [Q_KEY_CODE_ESC] = 0x01,
-
- [Q_KEY_CODE_1] = 0x02,
- [Q_KEY_CODE_2] = 0x03,
- [Q_KEY_CODE_3] = 0x04,
- [Q_KEY_CODE_4] = 0x05,
- [Q_KEY_CODE_5] = 0x06,
- [Q_KEY_CODE_6] = 0x07,
- [Q_KEY_CODE_7] = 0x08,
- [Q_KEY_CODE_8] = 0x09,
- [Q_KEY_CODE_9] = 0x0a,
- [Q_KEY_CODE_0] = 0x0b,
- [Q_KEY_CODE_MINUS] = 0x0c,
- [Q_KEY_CODE_EQUAL] = 0x0d,
- [Q_KEY_CODE_BACKSPACE] = 0x0e,
-
- [Q_KEY_CODE_TAB] = 0x0f,
- [Q_KEY_CODE_Q] = 0x10,
- [Q_KEY_CODE_W] = 0x11,
- [Q_KEY_CODE_E] = 0x12,
- [Q_KEY_CODE_R] = 0x13,
- [Q_KEY_CODE_T] = 0x14,
- [Q_KEY_CODE_Y] = 0x15,
- [Q_KEY_CODE_U] = 0x16,
- [Q_KEY_CODE_I] = 0x17,
- [Q_KEY_CODE_O] = 0x18,
- [Q_KEY_CODE_P] = 0x19,
- [Q_KEY_CODE_BRACKET_LEFT] = 0x1a,
- [Q_KEY_CODE_BRACKET_RIGHT] = 0x1b,
- [Q_KEY_CODE_RET] = 0x1c,
-
- [Q_KEY_CODE_A] = 0x1e,
- [Q_KEY_CODE_S] = 0x1f,
- [Q_KEY_CODE_D] = 0x20,
- [Q_KEY_CODE_F] = 0x21,
- [Q_KEY_CODE_G] = 0x22,
- [Q_KEY_CODE_H] = 0x23,
- [Q_KEY_CODE_J] = 0x24,
- [Q_KEY_CODE_K] = 0x25,
- [Q_KEY_CODE_L] = 0x26,
- [Q_KEY_CODE_SEMICOLON] = 0x27,
- [Q_KEY_CODE_APOSTROPHE] = 0x28,
- [Q_KEY_CODE_GRAVE_ACCENT] = 0x29,
-
- [Q_KEY_CODE_BACKSLASH] = 0x2b,
- [Q_KEY_CODE_Z] = 0x2c,
- [Q_KEY_CODE_X] = 0x2d,
- [Q_KEY_CODE_C] = 0x2e,
- [Q_KEY_CODE_V] = 0x2f,
- [Q_KEY_CODE_B] = 0x30,
- [Q_KEY_CODE_N] = 0x31,
- [Q_KEY_CODE_M] = 0x32,
- [Q_KEY_CODE_COMMA] = 0x33,
- [Q_KEY_CODE_DOT] = 0x34,
- [Q_KEY_CODE_SLASH] = 0x35,
-
- [Q_KEY_CODE_ASTERISK] = 0x37,
-
- [Q_KEY_CODE_SPC] = 0x39,
- [Q_KEY_CODE_CAPS_LOCK] = 0x3a,
- [Q_KEY_CODE_F1] = 0x3b,
- [Q_KEY_CODE_F2] = 0x3c,
- [Q_KEY_CODE_F3] = 0x3d,
- [Q_KEY_CODE_F4] = 0x3e,
- [Q_KEY_CODE_F5] = 0x3f,
- [Q_KEY_CODE_F6] = 0x40,
- [Q_KEY_CODE_F7] = 0x41,
- [Q_KEY_CODE_F8] = 0x42,
- [Q_KEY_CODE_F9] = 0x43,
- [Q_KEY_CODE_F10] = 0x44,
- [Q_KEY_CODE_NUM_LOCK] = 0x45,
- [Q_KEY_CODE_SCROLL_LOCK] = 0x46,
-
- [Q_KEY_CODE_KP_DIVIDE] = 0xb5,
- [Q_KEY_CODE_KP_MULTIPLY] = 0x37,
- [Q_KEY_CODE_KP_SUBTRACT] = 0x4a,
- [Q_KEY_CODE_KP_ADD] = 0x4e,
- [Q_KEY_CODE_KP_ENTER] = 0x9c,
- [Q_KEY_CODE_KP_DECIMAL] = 0x53,
- [Q_KEY_CODE_SYSRQ] = 0x54,
- [Q_KEY_CODE_PAUSE] = 0xc6,
-
- [Q_KEY_CODE_KP_0] = 0x52,
- [Q_KEY_CODE_KP_1] = 0x4f,
- [Q_KEY_CODE_KP_2] = 0x50,
- [Q_KEY_CODE_KP_3] = 0x51,
- [Q_KEY_CODE_KP_4] = 0x4b,
- [Q_KEY_CODE_KP_5] = 0x4c,
- [Q_KEY_CODE_KP_6] = 0x4d,
- [Q_KEY_CODE_KP_7] = 0x47,
- [Q_KEY_CODE_KP_8] = 0x48,
- [Q_KEY_CODE_KP_9] = 0x49,
-
- [Q_KEY_CODE_LESS] = 0x56,
-
- [Q_KEY_CODE_F11] = 0x57,
- [Q_KEY_CODE_F12] = 0x58,
-
- [Q_KEY_CODE_PRINT] = 0xb7,
-
- [Q_KEY_CODE_HOME] = 0xc7,
- [Q_KEY_CODE_PGUP] = 0xc9,
- [Q_KEY_CODE_PGDN] = 0xd1,
- [Q_KEY_CODE_END] = 0xcf,
-
- [Q_KEY_CODE_LEFT] = 0xcb,
- [Q_KEY_CODE_UP] = 0xc8,
- [Q_KEY_CODE_DOWN] = 0xd0,
- [Q_KEY_CODE_RIGHT] = 0xcd,
-
- [Q_KEY_CODE_INSERT] = 0xd2,
- [Q_KEY_CODE_DELETE] = 0xd3,
-
- [Q_KEY_CODE_RO] = 0x73,
- [Q_KEY_CODE_HIRAGANA] = 0x70,
- [Q_KEY_CODE_HENKAN] = 0x79,
- [Q_KEY_CODE_POWER] = 0xde,
- [Q_KEY_CODE_YEN] = 0x7d,
- [Q_KEY_CODE_KP_COMMA] = 0x7e,
-
- [Q_KEY_CODE_SLEEP] = 0xdf,
- [Q_KEY_CODE_WAKE] = 0xe3,
- [Q_KEY_CODE_CALCULATOR] = 0xa1,
- [Q_KEY_CODE_MAIL] = 0xec,
- [Q_KEY_CODE_COMPUTER] = 0xeb,
-
- [Q_KEY_CODE_STOP] = 0xe8,
- [Q_KEY_CODE_AC_BOOKMARKS] = 0xe6,
- [Q_KEY_CODE_AC_BACK] = 0xea,
- [Q_KEY_CODE_AC_FORWARD] = 0xe9,
- [Q_KEY_CODE_AC_HOME] = 0xb2,
- [Q_KEY_CODE_AC_REFRESH] = 0xe7,
- [Q_KEY_CODE_FIND] = 0xe5,
-
- [Q_KEY_CODE_AUDIONEXT] = 0x99,
- [Q_KEY_CODE_AUDIOPREV] = 0x90,
- [Q_KEY_CODE_AUDIOSTOP] = 0xa4,
- [Q_KEY_CODE_AUDIOPLAY] = 0xa2,
- [Q_KEY_CODE_AUDIOMUTE] = 0xa0,
- [Q_KEY_CODE_VOLUMEDOWN] = 0xae,
- [Q_KEY_CODE_VOLUMEUP] = 0xb0,
-
- [Q_KEY_CODE__MAX] = 0,
-};
-
-static int number_to_qcode[0x100];
+#include "ui/input-keymap-linux-to-qcode.c"
+#include "ui/input-keymap-qcode-to-qnum.c"
+#include "ui/input-keymap-qnum-to-qcode.c"
int qemu_input_linux_to_qcode(unsigned int lnx)
{
- assert(lnx < KEY_CNT);
- return linux_to_qcode[lnx];
+ if (lnx >= qemu_input_map_linux_to_qcode_len) {
+ return 0;
+ }
+ return qemu_input_map_linux_to_qcode[lnx];
}
int qemu_input_key_value_to_number(const KeyValue *value)
{
if (value->type == KEY_VALUE_KIND_QCODE) {
- return qcode_to_number[value->u.qcode.data];
+ if (value->u.qcode.data >= qemu_input_map_qcode_to_qnum_len) {
+ return 0;
+ }
+ return qemu_input_map_qcode_to_qnum[value->u.qcode.data];
} else {
assert(value->type == KEY_VALUE_KIND_NUMBER);
return value->u.number.data;
}
}
-int qemu_input_key_number_to_qcode(uint8_t nr)
+int qemu_input_key_number_to_qcode(unsigned int nr)
{
- static int first = true;
-
- if (first) {
- int qcode, number;
- first = false;
- for (qcode = 0; qcode < Q_KEY_CODE__MAX; qcode++) {
- number = qcode_to_number[qcode];
- assert(number < ARRAY_SIZE(number_to_qcode));
- number_to_qcode[number] = qcode;
- }
+ if (nr >= qemu_input_map_qnum_to_qcode_len) {
+ return 0;
}
-
- return number_to_qcode[nr];
+ return qemu_input_map_qnum_to_qcode[nr];
}
int qemu_input_key_value_to_qcode(const KeyValue *value)
diff --git a/ui/input.c b/ui/input.c
index 3422d4a8ef..290b47354a 100644
--- a/ui/input.c
+++ b/ui/input.c
@@ -157,9 +157,16 @@ void qmp_input_send_event(bool has_device, const char *device,
}
for (e = events; e != NULL; e = e->next) {
- InputEvent *event = e->value;
-
- qemu_input_event_send(con, event);
+ InputEvent *evt = e->value;
+
+ if (evt->type == INPUT_EVENT_KIND_KEY &&
+ evt->u.key.data->key->type == KEY_VALUE_KIND_NUMBER) {
+ KeyValue *key = evt->u.key.data->key;
+ QKeyCode code = qemu_input_key_number_to_qcode(key->u.qcode.data);
+ qemu_input_event_send_key_qcode(con, code, evt->u.key.data->down);
+ } else {
+ qemu_input_event_send(con, evt);
+ }
}
qemu_input_event_sync();
@@ -341,6 +348,11 @@ void qemu_input_event_send_impl(QemuConsole *src, InputEvent *evt)
void qemu_input_event_send(QemuConsole *src, InputEvent *evt)
{
+ /* Expect all parts of QEMU to send events with QCodes exclusively.
+ * Key numbers are only supported as end-user input via QMP */
+ assert(!(evt->type == INPUT_EVENT_KIND_KEY &&
+ evt->u.key.data->key->type == KEY_VALUE_KIND_NUMBER));
+
if (!runstate_is_running() && !runstate_check(RUN_STATE_SUSPENDED)) {
return;
}
@@ -374,7 +386,7 @@ void qemu_input_event_sync(void)
replay_input_sync_event();
}
-InputEvent *qemu_input_event_new_key(KeyValue *key, bool down)
+static InputEvent *qemu_input_event_new_key(KeyValue *key, bool down)
{
InputEvent *evt = g_new0(InputEvent, 1);
evt->u.key.data = g_new0(InputKeyEvent, 1);
@@ -400,10 +412,8 @@ void qemu_input_event_send_key(QemuConsole *src, KeyValue *key, bool down)
void qemu_input_event_send_key_number(QemuConsole *src, int num, bool down)
{
- KeyValue *key = g_new0(KeyValue, 1);
- key->type = KEY_VALUE_KIND_NUMBER;
- key->u.number.data = num;
- qemu_input_event_send_key(src, key, down);
+ QKeyCode code = qemu_input_key_number_to_qcode(num);
+ qemu_input_event_send_key_qcode(src, code, down);
}
void qemu_input_event_send_key_qcode(QemuConsole *src, QKeyCode q, bool down)
diff --git a/ui/keycodemapdb b/ui/keycodemapdb
new file mode 160000
+Subproject 56ce5650d2c6ea216b4580df44b9a6dd3bc92c3