1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40#ifndef QEVDEVKEYBOARDHANDLER_DEFAULTMAP_P_H
41#define QEVDEVKEYBOARDHANDLER_DEFAULTMAP_P_H
42
43//
44// W A R N I N G
45// -------------
46//
47// This file is not part of the Qt API. It exists purely as an
48// implementation detail. This header file may change from version to
49// version without notice, or even be removed.
50//
51// We mean it.
52//
53
54#include "qnamespace.h"
55#ifdef Q_OS_FREEBSD
56#include <dev/evdev/input.h>
57#else
58#include "linux/input.h"
59#endif
60
61// no QT_BEGIN_NAMESPACE, since we include it internally...
62
63const QEvdevKeyboardMap::Mapping QEvdevKeyboardHandler::s_keymap_default[] = {
64 { .keycode: 1, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
65 { .keycode: 2, .unicode: 0x0031, .qtcode: 0x00000031, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
66 { .keycode: 2, .unicode: 0x0021, .qtcode: 0x00000021, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
67 { .keycode: 3, .unicode: 0x0032, .qtcode: 0x00000032, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
68 { .keycode: 3, .unicode: 0x0040, .qtcode: 0x00000040, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
69 { .keycode: 3, .unicode: 0x0040, .qtcode: 0x00000040, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
70 { .keycode: 4, .unicode: 0x0033, .qtcode: 0x00000033, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
71 { .keycode: 4, .unicode: 0x0023, .qtcode: 0x00000023, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
72 { .keycode: 4, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
73 { .keycode: 5, .unicode: 0x0034, .qtcode: 0x00000034, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
74 { .keycode: 5, .unicode: 0x0024, .qtcode: 0x00000024, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
75 { .keycode: 5, .unicode: 0x0024, .qtcode: 0x00000024, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
76 { .keycode: 5, .unicode: 0x005c, .qtcode: 0x0400005c, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
77 { .keycode: 6, .unicode: 0x0035, .qtcode: 0x00000035, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
78 { .keycode: 6, .unicode: 0x0025, .qtcode: 0x00000025, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
79 { .keycode: 6, .unicode: 0x005d, .qtcode: 0x0400005d, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
80 { .keycode: 7, .unicode: 0x0036, .qtcode: 0x00000036, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
81 { .keycode: 7, .unicode: 0x005e, .qtcode: 0x0000005e, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
82 { .keycode: 7, .unicode: 0x005e, .qtcode: 0x01001252, .modifiers: 0x02, .flags: 0x01, .special: 0x0000 },
83 { .keycode: 7, .unicode: 0x005e, .qtcode: 0x0400005e, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
84 { .keycode: 8, .unicode: 0x0037, .qtcode: 0x00000037, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
85 { .keycode: 8, .unicode: 0x0026, .qtcode: 0x00000026, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
86 { .keycode: 8, .unicode: 0x007b, .qtcode: 0x0000007b, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
87 { .keycode: 8, .unicode: 0x005f, .qtcode: 0x0400005f, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
88 { .keycode: 9, .unicode: 0x0038, .qtcode: 0x00000038, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
89 { .keycode: 9, .unicode: 0x002a, .qtcode: 0x0000002a, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
90 { .keycode: 9, .unicode: 0x005b, .qtcode: 0x0000005b, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
91 { .keycode: 9, .unicode: 0xffff, .qtcode: 0x01000003, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
92 { .keycode: 10, .unicode: 0x0039, .qtcode: 0x00000039, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
93 { .keycode: 10, .unicode: 0x0028, .qtcode: 0x00000028, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
94 { .keycode: 10, .unicode: 0x005d, .qtcode: 0x0000005d, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
95 { .keycode: 11, .unicode: 0x0030, .qtcode: 0x00000030, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
96 { .keycode: 11, .unicode: 0x0029, .qtcode: 0x00000029, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
97 { .keycode: 11, .unicode: 0x007d, .qtcode: 0x0000007d, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
98 { .keycode: 12, .unicode: 0x002d, .qtcode: 0x0000002d, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
99 { .keycode: 12, .unicode: 0x005f, .qtcode: 0x0000005f, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
100 { .keycode: 12, .unicode: 0x005c, .qtcode: 0x0000005c, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
101 { .keycode: 12, .unicode: 0x005f, .qtcode: 0x0400005f, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
102 { .keycode: 12, .unicode: 0x005f, .qtcode: 0x0400005f, .modifiers: 0x05, .flags: 0x00, .special: 0x0000 },
103 { .keycode: 13, .unicode: 0x003d, .qtcode: 0x0000003d, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
104 { .keycode: 13, .unicode: 0x002b, .qtcode: 0x0000002b, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
105 { .keycode: 14, .unicode: 0xffff, .qtcode: 0x01000003, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
106 { .keycode: 14, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0300 },
107 { .keycode: 15, .unicode: 0xffff, .qtcode: 0x01000001, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
108 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x00000051, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
109 { .keycode: 16, .unicode: 0x0051, .qtcode: 0x00000051, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
110 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x00000051, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
111 { .keycode: 16, .unicode: 0x0051, .qtcode: 0x00000051, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
112 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x04000051, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
113 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x04000051, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
114 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x04000051, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
115 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x04000051, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
116 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x08000051, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
117 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x08000051, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
118 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x08000051, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
119 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x08000051, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
120 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x0c000051, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
121 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x0c000051, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
122 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x0c000051, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
123 { .keycode: 16, .unicode: 0x0071, .qtcode: 0x0c000051, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
124 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x00000057, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
125 { .keycode: 17, .unicode: 0x0057, .qtcode: 0x00000057, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
126 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x00000057, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
127 { .keycode: 17, .unicode: 0x0057, .qtcode: 0x00000057, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
128 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x04000057, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
129 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x04000057, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
130 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x04000057, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
131 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x04000057, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
132 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x08000057, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
133 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x08000057, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
134 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x08000057, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
135 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x08000057, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
136 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x0c000057, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
137 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x0c000057, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
138 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x0c000057, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
139 { .keycode: 17, .unicode: 0x0077, .qtcode: 0x0c000057, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
140 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x00000045, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
141 { .keycode: 18, .unicode: 0x0045, .qtcode: 0x00000045, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
142 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x00000045, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
143 { .keycode: 18, .unicode: 0x0045, .qtcode: 0x00000045, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
144 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x04000045, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
145 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x04000045, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
146 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x04000045, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
147 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x04000045, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
148 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x08000045, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
149 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x08000045, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
150 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x08000045, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
151 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x08000045, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
152 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x0c000045, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
153 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x0c000045, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
154 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x0c000045, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
155 { .keycode: 18, .unicode: 0x0065, .qtcode: 0x0c000045, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
156 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x00000052, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
157 { .keycode: 19, .unicode: 0x0052, .qtcode: 0x00000052, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
158 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x00000052, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
159 { .keycode: 19, .unicode: 0x0052, .qtcode: 0x00000052, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
160 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x04000052, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
161 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x04000052, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
162 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x04000052, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
163 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x04000052, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
164 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x08000052, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
165 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x08000052, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
166 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x08000052, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
167 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x08000052, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
168 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x0c000052, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
169 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x0c000052, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
170 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x0c000052, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
171 { .keycode: 19, .unicode: 0x0072, .qtcode: 0x0c000052, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
172 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x00000054, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
173 { .keycode: 20, .unicode: 0x0054, .qtcode: 0x00000054, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
174 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x00000054, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
175 { .keycode: 20, .unicode: 0x0054, .qtcode: 0x00000054, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
176 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x04000054, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
177 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x04000054, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
178 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x04000054, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
179 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x04000054, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
180 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x08000054, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
181 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x08000054, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
182 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x08000054, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
183 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x08000054, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
184 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x0c000054, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
185 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x0c000054, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
186 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x0c000054, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
187 { .keycode: 20, .unicode: 0x0074, .qtcode: 0x0c000054, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
188 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x00000059, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
189 { .keycode: 21, .unicode: 0x0059, .qtcode: 0x00000059, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
190 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x00000059, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
191 { .keycode: 21, .unicode: 0x0059, .qtcode: 0x00000059, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
192 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x04000059, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
193 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x04000059, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
194 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x04000059, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
195 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x04000059, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
196 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x08000059, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
197 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x08000059, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
198 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x08000059, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
199 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x08000059, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
200 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x0c000059, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
201 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x0c000059, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
202 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x0c000059, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
203 { .keycode: 21, .unicode: 0x0079, .qtcode: 0x0c000059, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
204 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x00000055, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
205 { .keycode: 22, .unicode: 0x0055, .qtcode: 0x00000055, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
206 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x00000055, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
207 { .keycode: 22, .unicode: 0x0055, .qtcode: 0x00000055, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
208 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x04000055, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
209 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x04000055, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
210 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x04000055, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
211 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x04000055, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
212 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x08000055, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
213 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x08000055, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
214 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x08000055, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
215 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x08000055, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
216 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x0c000055, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
217 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x0c000055, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
218 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x0c000055, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
219 { .keycode: 22, .unicode: 0x0075, .qtcode: 0x0c000055, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
220 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x00000049, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
221 { .keycode: 23, .unicode: 0x0049, .qtcode: 0x00000049, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
222 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x00000049, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
223 { .keycode: 23, .unicode: 0x0049, .qtcode: 0x00000049, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
224 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x04000049, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
225 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x04000049, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
226 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x04000049, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
227 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x04000049, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
228 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x08000049, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
229 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x08000049, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
230 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x08000049, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
231 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x08000049, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
232 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x0c000049, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
233 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x0c000049, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
234 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x0c000049, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
235 { .keycode: 23, .unicode: 0x0069, .qtcode: 0x0c000049, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
236 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0000004f, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
237 { .keycode: 24, .unicode: 0x004f, .qtcode: 0x0000004f, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
238 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0000004f, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
239 { .keycode: 24, .unicode: 0x004f, .qtcode: 0x0000004f, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
240 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0400004f, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
241 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0400004f, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
242 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0400004f, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
243 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0400004f, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
244 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0800004f, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
245 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0800004f, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
246 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0800004f, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
247 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0800004f, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
248 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0c00004f, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
249 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0c00004f, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
250 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0c00004f, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
251 { .keycode: 24, .unicode: 0x006f, .qtcode: 0x0c00004f, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
252 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x00000050, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
253 { .keycode: 25, .unicode: 0x0050, .qtcode: 0x00000050, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
254 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x00000050, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
255 { .keycode: 25, .unicode: 0x0050, .qtcode: 0x00000050, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
256 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x04000050, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
257 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x04000050, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
258 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x04000050, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
259 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x04000050, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
260 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x08000050, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
261 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x08000050, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
262 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x08000050, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
263 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x08000050, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
264 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x0c000050, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
265 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x0c000050, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
266 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x0c000050, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
267 { .keycode: 25, .unicode: 0x0070, .qtcode: 0x0c000050, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
268 { .keycode: 26, .unicode: 0x005b, .qtcode: 0x0000005b, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
269 { .keycode: 26, .unicode: 0x007b, .qtcode: 0x0000007b, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
270 { .keycode: 26, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
271 { .keycode: 27, .unicode: 0x005d, .qtcode: 0x0000005d, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
272 { .keycode: 27, .unicode: 0x007d, .qtcode: 0x0000007d, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
273 { .keycode: 27, .unicode: 0x007e, .qtcode: 0x0000007e, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
274 { .keycode: 27, .unicode: 0x005d, .qtcode: 0x0400005d, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
275 { .keycode: 28, .unicode: 0xffff, .qtcode: 0x01000004, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
276 { .keycode: 28, .unicode: 0x006d, .qtcode: 0x0c00004d, .modifiers: 0x08, .flags: 0x00, .special: 0x0000 },
277 { .keycode: 29, .unicode: 0xffff, .qtcode: 0x01000021, .modifiers: 0x00, .flags: 0x04, .special: 0x0004 },
278 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x00000041, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
279 { .keycode: 30, .unicode: 0x0041, .qtcode: 0x00000041, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
280 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x00000041, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
281 { .keycode: 30, .unicode: 0x0041, .qtcode: 0x00000041, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
282 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x04000041, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
283 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x04000041, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
284 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x04000041, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
285 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x04000041, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
286 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x08000041, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
287 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x08000041, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
288 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x08000041, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
289 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x08000041, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
290 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x0c000041, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
291 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x0c000041, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
292 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x0c000041, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
293 { .keycode: 30, .unicode: 0x0061, .qtcode: 0x0c000041, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
294 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x00000053, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
295 { .keycode: 31, .unicode: 0x0053, .qtcode: 0x00000053, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
296 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x00000053, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
297 { .keycode: 31, .unicode: 0x0053, .qtcode: 0x00000053, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
298 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x04000053, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
299 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x04000053, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
300 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x04000053, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
301 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x04000053, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
302 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x08000053, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
303 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x08000053, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
304 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x08000053, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
305 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x08000053, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
306 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x0c000053, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
307 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x0c000053, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
308 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x0c000053, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
309 { .keycode: 31, .unicode: 0x0073, .qtcode: 0x0c000053, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
310 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x00000044, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
311 { .keycode: 32, .unicode: 0x0044, .qtcode: 0x00000044, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
312 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x00000044, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
313 { .keycode: 32, .unicode: 0x0044, .qtcode: 0x00000044, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
314 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x04000044, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
315 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x04000044, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
316 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x04000044, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
317 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x04000044, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
318 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x08000044, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
319 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x08000044, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
320 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x08000044, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
321 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x08000044, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
322 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x0c000044, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
323 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x0c000044, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
324 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x0c000044, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
325 { .keycode: 32, .unicode: 0x0064, .qtcode: 0x0c000044, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
326 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x00000046, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
327 { .keycode: 33, .unicode: 0x0046, .qtcode: 0x00000046, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
328 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x00000046, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
329 { .keycode: 33, .unicode: 0x0046, .qtcode: 0x00000046, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
330 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x04000046, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
331 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x04000046, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
332 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x04000046, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
333 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x04000046, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
334 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x08000046, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
335 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x08000046, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
336 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x08000046, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
337 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x08000046, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
338 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x0c000046, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
339 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x0c000046, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
340 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x0c000046, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
341 { .keycode: 33, .unicode: 0x0066, .qtcode: 0x0c000046, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
342 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x00000047, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
343 { .keycode: 34, .unicode: 0x0047, .qtcode: 0x00000047, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
344 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x00000047, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
345 { .keycode: 34, .unicode: 0x0047, .qtcode: 0x00000047, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
346 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x04000047, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
347 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x04000047, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
348 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x04000047, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
349 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x04000047, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
350 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x08000047, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
351 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x08000047, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
352 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x08000047, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
353 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x08000047, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
354 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x0c000047, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
355 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x0c000047, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
356 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x0c000047, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
357 { .keycode: 34, .unicode: 0x0067, .qtcode: 0x0c000047, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
358 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x00000048, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
359 { .keycode: 35, .unicode: 0x0048, .qtcode: 0x00000048, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
360 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x00000048, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
361 { .keycode: 35, .unicode: 0x0048, .qtcode: 0x00000048, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
362 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x04000048, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
363 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x04000048, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
364 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x04000048, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
365 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x04000048, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
366 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x08000048, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
367 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x08000048, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
368 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x08000048, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
369 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x08000048, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
370 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x0c000048, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
371 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x0c000048, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
372 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x0c000048, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
373 { .keycode: 35, .unicode: 0x0068, .qtcode: 0x0c000048, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
374 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0000004a, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
375 { .keycode: 36, .unicode: 0x004a, .qtcode: 0x0000004a, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
376 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0000004a, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
377 { .keycode: 36, .unicode: 0x004a, .qtcode: 0x0000004a, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
378 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0400004a, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
379 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0400004a, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
380 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0400004a, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
381 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0400004a, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
382 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0800004a, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
383 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0800004a, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
384 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0800004a, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
385 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0800004a, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
386 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0c00004a, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
387 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0c00004a, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
388 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0c00004a, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
389 { .keycode: 36, .unicode: 0x006a, .qtcode: 0x0c00004a, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
390 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0000004b, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
391 { .keycode: 37, .unicode: 0x004b, .qtcode: 0x0000004b, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
392 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0000004b, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
393 { .keycode: 37, .unicode: 0x004b, .qtcode: 0x0000004b, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
394 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0400004b, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
395 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0400004b, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
396 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0400004b, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
397 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0400004b, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
398 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0800004b, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
399 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0800004b, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
400 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0800004b, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
401 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0800004b, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
402 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0c00004b, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
403 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0c00004b, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
404 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0c00004b, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
405 { .keycode: 37, .unicode: 0x006b, .qtcode: 0x0c00004b, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
406 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0000004c, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
407 { .keycode: 38, .unicode: 0x004c, .qtcode: 0x0000004c, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
408 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0000004c, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
409 { .keycode: 38, .unicode: 0x004c, .qtcode: 0x0000004c, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
410 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0400004c, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
411 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0400004c, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
412 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0400004c, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
413 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0400004c, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
414 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0800004c, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
415 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0800004c, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
416 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0800004c, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
417 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0800004c, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
418 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0c00004c, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
419 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0c00004c, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
420 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0c00004c, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
421 { .keycode: 38, .unicode: 0x006c, .qtcode: 0x0c00004c, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
422 { .keycode: 39, .unicode: 0x003b, .qtcode: 0x0000003b, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
423 { .keycode: 39, .unicode: 0x003a, .qtcode: 0x0000003a, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
424 { .keycode: 40, .unicode: 0x0027, .qtcode: 0x00000027, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
425 { .keycode: 40, .unicode: 0x0022, .qtcode: 0x00000022, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
426 { .keycode: 40, .unicode: 0x0027, .qtcode: 0x01001251, .modifiers: 0x02, .flags: 0x01, .special: 0x0000 },
427 { .keycode: 40, .unicode: 0x0022, .qtcode: 0x01001257, .modifiers: 0x03, .flags: 0x01, .special: 0x0000 },
428 { .keycode: 40, .unicode: 0x0067, .qtcode: 0x04000047, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
429 { .keycode: 41, .unicode: 0x0060, .qtcode: 0x00000060, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
430 { .keycode: 41, .unicode: 0x007e, .qtcode: 0x0000007e, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
431 { .keycode: 41, .unicode: 0x0060, .qtcode: 0x01001250, .modifiers: 0x02, .flags: 0x01, .special: 0x0000 },
432 { .keycode: 41, .unicode: 0x007e, .qtcode: 0x01001253, .modifiers: 0x03, .flags: 0x01, .special: 0x0000 },
433 { .keycode: 42, .unicode: 0xffff, .qtcode: 0x01000020, .modifiers: 0x00, .flags: 0x04, .special: 0x0001 },
434 { .keycode: 43, .unicode: 0x005c, .qtcode: 0x0000005c, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
435 { .keycode: 43, .unicode: 0x007c, .qtcode: 0x0000007c, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
436 { .keycode: 43, .unicode: 0x005c, .qtcode: 0x0400005c, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
437 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0000005a, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
438 { .keycode: 44, .unicode: 0x005a, .qtcode: 0x0000005a, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
439 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0000005a, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
440 { .keycode: 44, .unicode: 0x005a, .qtcode: 0x0000005a, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
441 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0400005a, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
442 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0400005a, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
443 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0400005a, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
444 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0400005a, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
445 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0800005a, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
446 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0800005a, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
447 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0800005a, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
448 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0800005a, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
449 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0c00005a, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
450 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0c00005a, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
451 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0c00005a, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
452 { .keycode: 44, .unicode: 0x007a, .qtcode: 0x0c00005a, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
453 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x00000058, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
454 { .keycode: 45, .unicode: 0x0058, .qtcode: 0x00000058, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
455 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x00000058, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
456 { .keycode: 45, .unicode: 0x0058, .qtcode: 0x00000058, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
457 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x04000058, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
458 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x04000058, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
459 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x04000058, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
460 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x04000058, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
461 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x08000058, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
462 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x08000058, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
463 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x08000058, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
464 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x08000058, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
465 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x0c000058, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
466 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x0c000058, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
467 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x0c000058, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
468 { .keycode: 45, .unicode: 0x0078, .qtcode: 0x0c000058, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
469 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x00000043, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
470 { .keycode: 46, .unicode: 0x0043, .qtcode: 0x00000043, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
471 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x00000043, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
472 { .keycode: 46, .unicode: 0x0043, .qtcode: 0x00000043, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
473 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x04000043, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
474 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x04000043, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
475 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x04000043, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
476 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x04000043, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
477 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x08000043, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
478 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x08000043, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
479 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x08000043, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
480 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x08000043, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
481 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x0c000043, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
482 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x0c000043, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
483 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x0c000043, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
484 { .keycode: 46, .unicode: 0x0063, .qtcode: 0x0c000043, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
485 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x00000056, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
486 { .keycode: 47, .unicode: 0x0056, .qtcode: 0x00000056, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
487 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x00000056, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
488 { .keycode: 47, .unicode: 0x0056, .qtcode: 0x00000056, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
489 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x04000056, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
490 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x04000056, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
491 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x04000056, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
492 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x04000056, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
493 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x08000056, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
494 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x08000056, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
495 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x08000056, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
496 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x08000056, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
497 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x0c000056, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
498 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x0c000056, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
499 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x0c000056, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
500 { .keycode: 47, .unicode: 0x0076, .qtcode: 0x0c000056, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
501 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x00000042, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
502 { .keycode: 48, .unicode: 0x0042, .qtcode: 0x00000042, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
503 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x00000042, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
504 { .keycode: 48, .unicode: 0x0042, .qtcode: 0x00000042, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
505 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x04000042, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
506 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x04000042, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
507 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x04000042, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
508 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x04000042, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
509 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x08000042, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
510 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x08000042, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
511 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x08000042, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
512 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x08000042, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
513 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x0c000042, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
514 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x0c000042, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
515 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x0c000042, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
516 { .keycode: 48, .unicode: 0x0062, .qtcode: 0x0c000042, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
517 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0000004e, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
518 { .keycode: 49, .unicode: 0x004e, .qtcode: 0x0000004e, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
519 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0000004e, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
520 { .keycode: 49, .unicode: 0x004e, .qtcode: 0x0000004e, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
521 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0400004e, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
522 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0400004e, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
523 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0400004e, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
524 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0400004e, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
525 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0800004e, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
526 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0800004e, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
527 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0800004e, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
528 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0800004e, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
529 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0c00004e, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
530 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0c00004e, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
531 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0c00004e, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
532 { .keycode: 49, .unicode: 0x006e, .qtcode: 0x0c00004e, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
533 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0000004d, .modifiers: 0x00, .flags: 0x02, .special: 0x0000 },
534 { .keycode: 50, .unicode: 0x004d, .qtcode: 0x0000004d, .modifiers: 0x01, .flags: 0x02, .special: 0x0000 },
535 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0000004d, .modifiers: 0x02, .flags: 0x02, .special: 0x0000 },
536 { .keycode: 50, .unicode: 0x004d, .qtcode: 0x0000004d, .modifiers: 0x03, .flags: 0x02, .special: 0x0000 },
537 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0400004d, .modifiers: 0x04, .flags: 0x02, .special: 0x0000 },
538 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0400004d, .modifiers: 0x05, .flags: 0x02, .special: 0x0000 },
539 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0400004d, .modifiers: 0x06, .flags: 0x02, .special: 0x0000 },
540 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0400004d, .modifiers: 0x07, .flags: 0x02, .special: 0x0000 },
541 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0800004d, .modifiers: 0x08, .flags: 0x02, .special: 0x0000 },
542 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0800004d, .modifiers: 0x09, .flags: 0x02, .special: 0x0000 },
543 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0800004d, .modifiers: 0x0a, .flags: 0x02, .special: 0x0000 },
544 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0800004d, .modifiers: 0x0b, .flags: 0x02, .special: 0x0000 },
545 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0c00004d, .modifiers: 0x0c, .flags: 0x02, .special: 0x0000 },
546 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0c00004d, .modifiers: 0x0d, .flags: 0x02, .special: 0x0000 },
547 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0c00004d, .modifiers: 0x0e, .flags: 0x02, .special: 0x0000 },
548 { .keycode: 50, .unicode: 0x006d, .qtcode: 0x0c00004d, .modifiers: 0x0f, .flags: 0x02, .special: 0x0000 },
549 { .keycode: 51, .unicode: 0x002c, .qtcode: 0x0000002c, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
550 { .keycode: 51, .unicode: 0x003c, .qtcode: 0x0000003c, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
551 { .keycode: 51, .unicode: 0x002c, .qtcode: 0x0100125b, .modifiers: 0x02, .flags: 0x01, .special: 0x0000 },
552 { .keycode: 52, .unicode: 0x002e, .qtcode: 0x0000002e, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
553 { .keycode: 52, .unicode: 0x003e, .qtcode: 0x0000003e, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
554 { .keycode: 52, .unicode: 0xffff, .qtcode: 0x01001120, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
555 { .keycode: 53, .unicode: 0x002f, .qtcode: 0x0000002f, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
556 { .keycode: 53, .unicode: 0x003f, .qtcode: 0x0000003f, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
557 { .keycode: 53, .unicode: 0xffff, .qtcode: 0x01000003, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
558 { .keycode: 54, .unicode: 0xffff, .qtcode: 0x01000020, .modifiers: 0x00, .flags: 0x04, .special: 0x0001 },
559 { .keycode: 55, .unicode: 0x002a, .qtcode: 0x2000002a, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
560 { .keycode: 56, .unicode: 0xffff, .qtcode: 0x01000023, .modifiers: 0x00, .flags: 0x04, .special: 0x0008 },
561 { .keycode: 57, .unicode: 0x0020, .qtcode: 0x00000020, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
562 { .keycode: 58, .unicode: 0xffff, .qtcode: 0x01000024, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
563 { .keycode: 59, .unicode: 0xffff, .qtcode: 0x01000030, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
564 { .keycode: 59, .unicode: 0xffff, .qtcode: 0x0100003c, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
565 { .keycode: 59, .unicode: 0xffff, .qtcode: 0x01000048, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
566 { .keycode: 59, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0100 },
567 { .keycode: 60, .unicode: 0xffff, .qtcode: 0x01000031, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
568 { .keycode: 60, .unicode: 0xffff, .qtcode: 0x0100003d, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
569 { .keycode: 60, .unicode: 0xffff, .qtcode: 0x01000049, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
570 { .keycode: 60, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0101 },
571 { .keycode: 61, .unicode: 0xffff, .qtcode: 0x01000032, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
572 { .keycode: 61, .unicode: 0xffff, .qtcode: 0x0100003e, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
573 { .keycode: 61, .unicode: 0xffff, .qtcode: 0x0100004a, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
574 { .keycode: 61, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0102 },
575 { .keycode: 62, .unicode: 0xffff, .qtcode: 0x01000033, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
576 { .keycode: 62, .unicode: 0xffff, .qtcode: 0x0100003f, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
577 { .keycode: 62, .unicode: 0xffff, .qtcode: 0x0100004b, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
578 { .keycode: 62, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0103 },
579 { .keycode: 63, .unicode: 0xffff, .qtcode: 0x01000034, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
580 { .keycode: 63, .unicode: 0xffff, .qtcode: 0x01000040, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
581 { .keycode: 63, .unicode: 0xffff, .qtcode: 0x0100004c, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
582 { .keycode: 63, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0104 },
583 { .keycode: 64, .unicode: 0xffff, .qtcode: 0x01000035, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
584 { .keycode: 64, .unicode: 0xffff, .qtcode: 0x01000041, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
585 { .keycode: 64, .unicode: 0xffff, .qtcode: 0x0100004d, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
586 { .keycode: 64, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0105 },
587 { .keycode: 65, .unicode: 0xffff, .qtcode: 0x01000036, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
588 { .keycode: 65, .unicode: 0xffff, .qtcode: 0x01000042, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
589 { .keycode: 65, .unicode: 0xffff, .qtcode: 0x0100004e, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
590 { .keycode: 65, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0106 },
591 { .keycode: 66, .unicode: 0xffff, .qtcode: 0x01000037, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
592 { .keycode: 66, .unicode: 0xffff, .qtcode: 0x01000043, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
593 { .keycode: 66, .unicode: 0xffff, .qtcode: 0x0100004f, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
594 { .keycode: 66, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0107 },
595 { .keycode: 67, .unicode: 0xffff, .qtcode: 0x01000038, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
596 { .keycode: 67, .unicode: 0xffff, .qtcode: 0x01000044, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
597 { .keycode: 67, .unicode: 0xffff, .qtcode: 0x01000050, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
598 { .keycode: 67, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0108 },
599 { .keycode: 68, .unicode: 0xffff, .qtcode: 0x01000039, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
600 { .keycode: 68, .unicode: 0xffff, .qtcode: 0x01000045, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
601 { .keycode: 68, .unicode: 0xffff, .qtcode: 0x01000051, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
602 { .keycode: 68, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0109 },
603 { .keycode: 69, .unicode: 0xffff, .qtcode: 0x01000025, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
604 { .keycode: 70, .unicode: 0xffff, .qtcode: 0x01000026, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
605 { .keycode: 70, .unicode: 0xffff, .qtcode: 0x01000026, .modifiers: 0x08, .flags: 0x00, .special: 0x0000 },
606 { .keycode: 71, .unicode: 0x0037, .qtcode: 0x20000037, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
607 { .keycode: 72, .unicode: 0x0038, .qtcode: 0x20000038, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
608 { .keycode: 73, .unicode: 0x0039, .qtcode: 0x20000039, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
609 { .keycode: 74, .unicode: 0x002d, .qtcode: 0x2000002d, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
610 { .keycode: 75, .unicode: 0x0034, .qtcode: 0x20000034, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
611 { .keycode: 76, .unicode: 0x0035, .qtcode: 0x20000035, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
612 { .keycode: 77, .unicode: 0x0036, .qtcode: 0x20000036, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
613 { .keycode: 78, .unicode: 0x002b, .qtcode: 0x2000002b, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
614 { .keycode: 79, .unicode: 0x0031, .qtcode: 0x20000031, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
615 { .keycode: 80, .unicode: 0x0032, .qtcode: 0x20000032, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
616 { .keycode: 81, .unicode: 0x0033, .qtcode: 0x20000033, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
617 { .keycode: 82, .unicode: 0x0030, .qtcode: 0x20000030, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
618 { .keycode: 83, .unicode: 0x002e, .qtcode: 0x2000002e, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
619 { .keycode: 83, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x06, .flags: 0x08, .special: 0x0200 },
620 { .keycode: 83, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0200 },
621 { .keycode: 86, .unicode: 0x003c, .qtcode: 0x0000003c, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
622 { .keycode: 86, .unicode: 0x003e, .qtcode: 0x0000003e, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
623 { .keycode: 86, .unicode: 0x007c, .qtcode: 0x0000007c, .modifiers: 0x02, .flags: 0x00, .special: 0x0000 },
624 { .keycode: 87, .unicode: 0xffff, .qtcode: 0x0100003a, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
625 { .keycode: 87, .unicode: 0xffff, .qtcode: 0x01000046, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
626 { .keycode: 87, .unicode: 0xffff, .qtcode: 0x01000052, .modifiers: 0x04, .flags: 0x00, .special: 0x0000 },
627 { .keycode: 87, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x010a },
628 { .keycode: 88, .unicode: 0xffff, .qtcode: 0x0100003b, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
629 { .keycode: 88, .unicode: 0xffff, .qtcode: 0x01000047, .modifiers: 0x01, .flags: 0x00, .special: 0x0000 },
630 { .keycode: 88, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x010b },
631 { .keycode: 96, .unicode: 0xffff, .qtcode: 0x21000005, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
632 { .keycode: 97, .unicode: 0xffff, .qtcode: 0x01000021, .modifiers: 0x00, .flags: 0x04, .special: 0x0004 },
633 { .keycode: 98, .unicode: 0x002f, .qtcode: 0x2000002f, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
634 { .keycode: 99, .unicode: 0x005c, .qtcode: 0x0400005c, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
635 { .keycode: 100, .unicode: 0xffff, .qtcode: 0x01001103, .modifiers: 0x00, .flags: 0x04, .special: 0x0002 },
636 { .keycode: 102, .unicode: 0xffff, .qtcode: 0x01000010, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
637 { .keycode: 103, .unicode: 0xffff, .qtcode: 0x01000013, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
638 { .keycode: 104, .unicode: 0xffff, .qtcode: 0x01000016, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
639 { .keycode: 105, .unicode: 0xffff, .qtcode: 0x01000012, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
640 { .keycode: 105, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0180 },
641 { .keycode: 106, .unicode: 0xffff, .qtcode: 0x01000014, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
642 { .keycode: 106, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0181 },
643 { .keycode: 107, .unicode: 0xffff, .qtcode: 0x01000011, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
644 { .keycode: 108, .unicode: 0xffff, .qtcode: 0x01000015, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
645 { .keycode: 109, .unicode: 0xffff, .qtcode: 0x01000017, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
646 { .keycode: 110, .unicode: 0xffff, .qtcode: 0x01000006, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
647 { .keycode: 111, .unicode: 0xffff, .qtcode: 0x01000007, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
648 { .keycode: 111, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x06, .flags: 0x08, .special: 0x0200 },
649 { .keycode: 111, .unicode: 0xffff, .qtcode: 0x01000000, .modifiers: 0x0c, .flags: 0x08, .special: 0x0200 },
650
651 // 113 -> 248
652 { KEY_MUTE, .unicode: 0xffff, .qtcode: Qt::Key_VolumeMute, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
653 { KEY_VOLUMEDOWN, .unicode: 0xffff, .qtcode: Qt::Key_VolumeDown, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
654 { KEY_VOLUMEUP, .unicode: 0xffff, .qtcode: Qt::Key_VolumeUp, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
655 { KEY_POWER, .unicode: 0xffff, .qtcode: Qt::Key_PowerOff, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
656 { KEY_PAUSE, .unicode: 0xffff, .qtcode: Qt::Key_Pause, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
657 { KEY_STOP, .unicode: 0xffff, .qtcode: Qt::Key_Stop, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
658 { KEY_SETUP, .unicode: 0xffff, .qtcode: Qt::Key_Settings, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
659 { KEY_RECORD, .unicode: 0xffff, .qtcode: Qt::Key_MediaRecord, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
660 { KEY_REWIND, .unicode: 0xffff, .qtcode: Qt::Key_AudioRewind, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
661 { KEY_PLAYPAUSE, .unicode: 0xffff, .qtcode: Qt::Key_MediaTogglePlayPause, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
662 { KEY_PLAY, .unicode: 0xffff, .qtcode: Qt::Key_MediaPlay, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
663 { KEY_FASTFORWARD, .unicode: 0xffff, .qtcode: Qt::Key_AudioForward, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
664 { KEY_CANCEL, .unicode: 0xffff, .qtcode: Qt::Key_Cancel, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
665 { .keycode: 248, .unicode: 0xffff, .qtcode: Qt::Key_MicMute, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
666 // 0x160 ->
667 { KEY_SELECT, .unicode: 0xffff, .qtcode: Qt::Key_Select, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
668 { KEY_CLEAR, .unicode: 0xffff, .qtcode: Qt::Key_Clear, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
669 { KEY_EXIT, .unicode: 0xffff, .qtcode: Qt::Key_Exit, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
670 { KEY_INFO, .unicode: 0xffff, .qtcode: Qt::Key_Info, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
671 { KEY_PROGRAM, .unicode: 0xffff, .qtcode: Qt::Key_Guide, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
672 { KEY_CALENDAR, .unicode: 0xffff, .qtcode: Qt::Key_Calendar, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
673 { KEY_RED, .unicode: 0xffff, .qtcode: Qt::Key_Red, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
674 { KEY_GREEN, .unicode: 0xffff, .qtcode: Qt::Key_Green, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
675 { KEY_YELLOW, .unicode: 0xffff, .qtcode: Qt::Key_Yellow, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
676 { KEY_BLUE, .unicode: 0xffff, .qtcode: Qt::Key_Blue, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
677 { KEY_CHANNELUP, .unicode: 0xffff, .qtcode: Qt::Key_ChannelUp, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
678 { KEY_CHANNELDOWN, .unicode: 0xffff, .qtcode: Qt::Key_ChannelDown, .modifiers: 0x00, .flags: 0x00, .special: 0x0000 },
679};
680
681const QEvdevKeyboardMap::Composing QEvdevKeyboardHandler::s_keycompose_default[] = {
682 { .first: 0x0060, .second: 0x0041, .result: 0x00c0 },
683 { .first: 0x0060, .second: 0x0061, .result: 0x00e0 },
684 { .first: 0x0027, .second: 0x0041, .result: 0x00c1 },
685 { .first: 0x0027, .second: 0x0061, .result: 0x00e1 },
686 { .first: 0x005e, .second: 0x0041, .result: 0x00c2 },
687 { .first: 0x005e, .second: 0x0061, .result: 0x00e2 },
688 { .first: 0x007e, .second: 0x0041, .result: 0x00c3 },
689 { .first: 0x007e, .second: 0x0061, .result: 0x00e3 },
690 { .first: 0x0022, .second: 0x0041, .result: 0x00c4 },
691 { .first: 0x0022, .second: 0x0061, .result: 0x00e4 },
692 { .first: 0x002d, .second: 0x0061, .result: 0x00aa },
693 { .first: 0x002d, .second: 0x0041, .result: 0x00aa },
694 { .first: 0x004f, .second: 0x0041, .result: 0x00c5 },
695 { .first: 0x006f, .second: 0x0061, .result: 0x00e5 },
696 { .first: 0x0030, .second: 0x0041, .result: 0x00c5 },
697 { .first: 0x0030, .second: 0x0061, .result: 0x00e5 },
698 { .first: 0x0041, .second: 0x0041, .result: 0x00c5 },
699 { .first: 0x0061, .second: 0x0061, .result: 0x00e5 },
700 { .first: 0x00b0, .second: 0x0041, .result: 0x00c5 },
701 { .first: 0x00b0, .second: 0x0061, .result: 0x00e5 },
702 { .first: 0x0041, .second: 0x0045, .result: 0x00c6 },
703 { .first: 0x0061, .second: 0x0065, .result: 0x00e6 },
704 { .first: 0x002c, .second: 0x0043, .result: 0x00c7 },
705 { .first: 0x002c, .second: 0x0063, .result: 0x00e7 },
706 { .first: 0x005e, .second: 0x0043, .result: 0x00c7 },
707 { .first: 0x005e, .second: 0x0063, .result: 0x00e7 },
708 { .first: 0x0060, .second: 0x0045, .result: 0x00c8 },
709 { .first: 0x0060, .second: 0x0065, .result: 0x00e8 },
710 { .first: 0x0027, .second: 0x0045, .result: 0x00c9 },
711 { .first: 0x0027, .second: 0x0065, .result: 0x00e9 },
712 { .first: 0x005e, .second: 0x0045, .result: 0x00ca },
713 { .first: 0x005e, .second: 0x0065, .result: 0x00ea },
714 { .first: 0x0022, .second: 0x0045, .result: 0x00cb },
715 { .first: 0x0022, .second: 0x0065, .result: 0x00eb },
716 { .first: 0x0060, .second: 0x0049, .result: 0x00cc },
717 { .first: 0x0060, .second: 0x0069, .result: 0x00ec },
718 { .first: 0x0027, .second: 0x0049, .result: 0x00cd },
719 { .first: 0x0027, .second: 0x0069, .result: 0x00ed },
720 { .first: 0x005e, .second: 0x0049, .result: 0x00ce },
721 { .first: 0x005e, .second: 0x0069, .result: 0x00ee },
722 { .first: 0x0022, .second: 0x0049, .result: 0x00cf },
723 { .first: 0x0022, .second: 0x0069, .result: 0x00ef },
724 { .first: 0x002d, .second: 0x0044, .result: 0x00d0 },
725 { .first: 0x002d, .second: 0x0064, .result: 0x00f0 },
726 { .first: 0x005e, .second: 0x0044, .result: 0x00d0 },
727 { .first: 0x005e, .second: 0x0064, .result: 0x00f0 },
728 { .first: 0x007e, .second: 0x004e, .result: 0x00d1 },
729 { .first: 0x007e, .second: 0x006e, .result: 0x00f1 },
730 { .first: 0x005e, .second: 0x004e, .result: 0x00d1 },
731 { .first: 0x005e, .second: 0x006e, .result: 0x00f1 },
732 { .first: 0x0060, .second: 0x004f, .result: 0x00d2 },
733 { .first: 0x0060, .second: 0x006f, .result: 0x00f2 },
734 { .first: 0x0027, .second: 0x004f, .result: 0x00d3 },
735 { .first: 0x0027, .second: 0x006f, .result: 0x00f3 },
736 { .first: 0x005e, .second: 0x004f, .result: 0x00d4 },
737 { .first: 0x005e, .second: 0x006f, .result: 0x00f4 },
738 { .first: 0x007e, .second: 0x004f, .result: 0x00d5 },
739 { .first: 0x007e, .second: 0x006f, .result: 0x00f5 },
740 { .first: 0x0022, .second: 0x004f, .result: 0x00d6 },
741 { .first: 0x0022, .second: 0x006f, .result: 0x00f6 },
742 { .first: 0x002f, .second: 0x004f, .result: 0x00d8 },
743 { .first: 0x002f, .second: 0x006f, .result: 0x00f8 },
744 { .first: 0x002d, .second: 0x006f, .result: 0x00ba },
745 { .first: 0x002d, .second: 0x004f, .result: 0x00ba },
746 { .first: 0x0060, .second: 0x0055, .result: 0x00d9 },
747 { .first: 0x0060, .second: 0x0075, .result: 0x00f9 },
748 { .first: 0x0027, .second: 0x0055, .result: 0x00da },
749 { .first: 0x0027, .second: 0x0075, .result: 0x00fa },
750 { .first: 0x005e, .second: 0x0055, .result: 0x00db },
751 { .first: 0x005e, .second: 0x0075, .result: 0x00fb },
752 { .first: 0x0022, .second: 0x0055, .result: 0x00dc },
753 { .first: 0x0022, .second: 0x0075, .result: 0x00fc },
754 { .first: 0x0027, .second: 0x0059, .result: 0x00dd },
755 { .first: 0x0027, .second: 0x0079, .result: 0x00fd },
756 { .first: 0x0054, .second: 0x0048, .result: 0x00de },
757 { .first: 0x0074, .second: 0x0068, .result: 0x00fe },
758 { .first: 0x0073, .second: 0x0073, .result: 0x00df },
759 { .first: 0x0022, .second: 0x0079, .result: 0x00ff },
760 { .first: 0x0073, .second: 0x007a, .result: 0x00df },
761 { .first: 0x006e, .second: 0x006e, .result: 0x00f1 },
762 { .first: 0x006e, .second: 0x0068, .result: 0x00f1 },
763 { .first: 0x004e, .second: 0x0059, .result: 0x00d1 },
764 { .first: 0x004e, .second: 0x004e, .result: 0x00d1 },
765 { .first: 0x004e, .second: 0x0048, .result: 0x00d1 },
766 { .first: 0x004e, .second: 0x0079, .result: 0x00d1 },
767 { .first: 0x004e, .second: 0x006e, .result: 0x00d1 },
768 { .first: 0x004e, .second: 0x0068, .result: 0x00d1 },
769 { .first: 0x002d, .second: 0x004c, .result: 0x00a3 },
770 { .first: 0x003c, .second: 0x003c, .result: 0x00ab },
771 { .first: 0x003e, .second: 0x003e, .result: 0x00bb },
772 { .first: 0x003f, .second: 0x003f, .result: 0x00bf },
773 { .first: 0x005e, .second: 0x003f, .result: 0x00bf },
774 { .first: 0x0021, .second: 0x0021, .result: 0x00a1 },
775 { .first: 0x005e, .second: 0x0021, .result: 0x00a1 },
776 { .first: 0x005e, .second: 0x0031, .result: 0x00b9 },
777 { .first: 0x005e, .second: 0x0032, .result: 0x00b2 },
778 { .first: 0x005e, .second: 0x0033, .result: 0x00b3 },
779 { .first: 0x002b, .second: 0x002d, .result: 0x00b1 },
780 { .first: 0x0063, .second: 0x003d, .result: 0x00a2 },
781 { .first: 0x0063, .second: 0x002f, .result: 0x00a2 },
782 { .first: 0x002f, .second: 0x0063, .result: 0x00a2 },
783 { .first: 0x002d, .second: 0x0063, .result: 0x00a2 },
784 { .first: 0x002d, .second: 0x0043, .result: 0x00a2 },
785 { .first: 0x004c, .second: 0x003d, .result: 0x00a3 },
786 { .first: 0x002d, .second: 0x004c, .result: 0x00a3 },
787 { .first: 0x002d, .second: 0x006c, .result: 0x00a3 },
788 { .first: 0x005e, .second: 0x002a, .result: 0x00d7 },
789 { .first: 0x005e, .second: 0x0078, .result: 0x00d7 },
790 { .first: 0x0078, .second: 0x0078, .result: 0x00d7 },
791 { .first: 0x005e, .second: 0x002e, .result: 0x00b7 },
792 { .first: 0x002e, .second: 0x002e, .result: 0x00b7 },
793 { .first: 0x005e, .second: 0x002f, .result: 0x00f7 },
794 { .first: 0x005e, .second: 0x003a, .result: 0x00f7 },
795 { .first: 0x002d, .second: 0x003a, .result: 0x00f7 },
796 { .first: 0x003a, .second: 0x002d, .result: 0x00f7 },
797 { .first: 0x0059, .second: 0x003d, .result: 0x00a5 },
798 { .first: 0x002d, .second: 0x0059, .result: 0x00a5 },
799 { .first: 0x002d, .second: 0x006c, .result: 0x00a5 },
800 { .first: 0x0028, .second: 0x0063, .result: 0x00a9 },
801 { .first: 0x0022, .second: 0x0063, .result: 0x00a9 },
802 { .first: 0x002d, .second: 0x0061, .result: 0x00aa },
803 { .first: 0x002d, .second: 0x0041, .result: 0x00aa },
804 { .first: 0x002d, .second: 0x006f, .result: 0x00ba },
805 { .first: 0x002d, .second: 0x004f, .result: 0x00ba },
806 { .first: 0x0028, .second: 0x0072, .result: 0x00ae },
807 { .first: 0x0022, .second: 0x0072, .result: 0x00ae },
808 { .first: 0x006d, .second: 0x0075, .result: 0x00b5 },
809 { .first: 0x0031, .second: 0x0034, .result: 0x0152 },
810 { .first: 0x0031, .second: 0x0032, .result: 0x0153 },
811 { .first: 0x0033, .second: 0x0034, .result: 0x0178 },
812 { .first: 0x0065, .second: 0x003d, .result: 0x20ac },
813 { .first: 0x002d, .second: 0x0065, .result: 0x20ac },
814 { .first: 0x002d, .second: 0x0045, .result: 0x20ac },
815 { .first: 0x0076, .second: 0x0053, .result: 0x0160 },
816 { .first: 0x005e, .second: 0x0053, .result: 0x0160 },
817 { .first: 0x0076, .second: 0x0073, .result: 0x0161 },
818 { .first: 0x005e, .second: 0x0073, .result: 0x0161 },
819 { .first: 0x0076, .second: 0x005a, .result: 0x017d },
820 { .first: 0x005e, .second: 0x005a, .result: 0x017d },
821 { .first: 0x0076, .second: 0x007a, .result: 0x017e },
822 { .first: 0x005e, .second: 0x007a, .result: 0x017e },
823 { .first: 0x004f, .second: 0x0045, .result: 0x0152 },
824 { .first: 0x004f, .second: 0x0065, .result: 0x0152 },
825 { .first: 0x006f, .second: 0x0065, .result: 0x0153 },
826 { .first: 0x0022, .second: 0x0059, .result: 0x0178 },
827 { .first: 0x0069, .second: 0x006a, .result: 0x00ff },
828 { .first: 0x0049, .second: 0x004a, .result: 0x0178 },
829};
830
831#endif // QEVDEVKEYBOARDHANDLER_DEFAULTMAP_P_H
832

source code of qtbase/src/platformsupport/input/evdevkeyboard/qevdevkeyboard_defaultmap_p.h