Blob Blame History Raw
From 1e23fbdd90c3004fcf833222801dc69cc524bdca Mon Sep 17 00:00:00 2001
From: Gerd Hoffmann <kraxel@redhat.com>
Date: Mon, 23 Oct 2017 12:29:35 +0200
Subject: [PATCH 2/9] pc-bios/keymaps: keymaps update

RH-Author: Gerd Hoffmann <kraxel@redhat.com>
Message-id: <20171023122935.11297-2-kraxel@redhat.com>
Patchwork-id: 77430
O-Subject: [RHV7.5 qemu-kvm-rhev PATCH 1/1] pc-bios/keymaps: keymaps update
Bugzilla: 1503128
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>

Update the keymaps with the ones generated by qemu-keymap

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 20171005153330.19210-4-kraxel@redhat.com
(cherry picked from commit a7815faffb2bd594b92aa3542d7b799cc89c5414)
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
 pc-bios/keymaps/ar    |  819 ++++++++++++++++++++++++++++++++----
 pc-bios/keymaps/bepo  | 1108 ++++++++++++++++++++++++++++++++++---------------
 pc-bios/keymaps/cz    |  853 ++++++++++++++++++++++++++++++++++---
 pc-bios/keymaps/da    |  732 +++++++++++++++++++++++++++++++-
 pc-bios/keymaps/de    |  767 +++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/de-ch |  921 ++++++++++++++++++++++++++++++++++------
 pc-bios/keymaps/en-gb |  724 +++++++++++++++++++++++++++++++-
 pc-bios/keymaps/en-us |  718 +++++++++++++++++++++++++++++++-
 pc-bios/keymaps/es    |  744 ++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/et    |  818 ++++++++++++++++++++++++++++++++----
 pc-bios/keymaps/fi    |  814 +++++++++++++++++++++++++++++++++---
 pc-bios/keymaps/fo    |  879 ++++++++++++++++++++++++++++++++++++---
 pc-bios/keymaps/fr    |  706 +++++++++++++++++++++++++++++--
 pc-bios/keymaps/fr-be |  724 +++++++++++++++++++++++++++++++-
 pc-bios/keymaps/fr-ca |  802 ++++++++++++++++++++++++++++++++---
 pc-bios/keymaps/fr-ch |  800 +++++++++++++++++++++++++++++++++--
 pc-bios/keymaps/hr    |  752 ++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/hu    |  883 +++++++++++++++++++++++++++++++++++----
 pc-bios/keymaps/is    |  802 ++++++++++++++++++++++++++++++++---
 pc-bios/keymaps/it    |  757 ++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/ja    |  792 +++++++++++++++++++++++++++++++----
 pc-bios/keymaps/lt    |  844 +++++++++++++++++++++++++++++++++++--
 pc-bios/keymaps/lv    |  766 ++++++++++++++++++++++++++++++++--
 pc-bios/keymaps/mk    |  814 ++++++++++++++++++++++++++++++++----
 pc-bios/keymaps/nl    |  794 ++++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/no    |  758 ++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/pl    |  789 +++++++++++++++++++++++++++++++++--
 pc-bios/keymaps/pt    |  737 +++++++++++++++++++++++++++++++-
 pc-bios/keymaps/pt-br |  775 +++++++++++++++++++++++++++++++++-
 pc-bios/keymaps/ru    |  835 ++++++++++++++++++++++++++++++++-----
 pc-bios/keymaps/th    |  878 +++++++++++++++++++++++++++++++++------
 pc-bios/keymaps/tr    |  819 +++++++++++++++++++++++++++++++++---
 32 files changed, 24007 insertions(+), 1717 deletions(-)

diff --git a/pc-bios/keymaps/ar b/pc-bios/keymaps/ar
index c430c03..a763c9a 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 d40041a..dbe8daa 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 6584bfb..46b3775 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 3884dcf..f7cdad7 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 ed929c7..d0b4715 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 852f8b8..ad37f6c 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 b45f06c..999cca7 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 f5784bb..a70e03a 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 0c29eec..53e66e8 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 85541a3..7bed679 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 4be7586..1c7653d 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 c00d9d4..e69575b 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 ba5a176..5b25227 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 62f7128..9d2ac5d 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 13a0306..736897b 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 4620d20..40e1fef 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 613aa69..6b89f09 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 8aba444..a6bd66d 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 935ac1d..063675d 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 00ca73a..abc3ed1 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 9d90a78..aae93e8 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 3d9d619..4101367 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 1d91727..27260ce 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 18c1504..30a597c 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 b4892f9..ae7c8f5 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 40a6479..8afd199 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 09c600d..df27206 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 c6941f6..ab59001 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 54bafc5..fe9ec81 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 8f652d5..7566052 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 b65b6da..56a0135 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 5650e1e..4d1a4c3 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
-- 
1.8.3.1