1 | /****************************************************************************
|
---|
2 | **
|
---|
3 | ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
---|
4 | ** All rights reserved.
|
---|
5 | ** Contact: Nokia Corporation (qt-info@nokia.com)
|
---|
6 | **
|
---|
7 | ** This file is part of the plugins of the Qt Toolkit.
|
---|
8 | **
|
---|
9 | ** $QT_BEGIN_LICENSE:LGPL$
|
---|
10 | ** Commercial Usage
|
---|
11 | ** Licensees holding valid Qt Commercial licenses may use this file in
|
---|
12 | ** accordance with the Qt Commercial License Agreement provided with the
|
---|
13 | ** Software or, alternatively, in accordance with the terms contained in
|
---|
14 | ** a written agreement between you and Nokia.
|
---|
15 | **
|
---|
16 | ** GNU Lesser General Public License Usage
|
---|
17 | ** Alternatively, this file may be used under the terms of the GNU Lesser
|
---|
18 | ** General Public License version 2.1 as published by the Free Software
|
---|
19 | ** Foundation and appearing in the file LICENSE.LGPL included in the
|
---|
20 | ** packaging of this file. Please review the following information to
|
---|
21 | ** ensure the GNU Lesser General Public License version 2.1 requirements
|
---|
22 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
---|
23 | **
|
---|
24 | ** In addition, as a special exception, Nokia gives you certain additional
|
---|
25 | ** rights. These rights are described in the Nokia Qt LGPL Exception
|
---|
26 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
---|
27 | **
|
---|
28 | ** GNU General Public License Usage
|
---|
29 | ** Alternatively, this file may be used under the terms of the GNU
|
---|
30 | ** General Public License version 3.0 as published by the Free Software
|
---|
31 | ** Foundation and appearing in the file LICENSE.GPL included in the
|
---|
32 | ** packaging of this file. Please review the following information to
|
---|
33 | ** ensure the GNU General Public License version 3.0 requirements will be
|
---|
34 | ** met: http://www.gnu.org/copyleft/gpl.html.
|
---|
35 | **
|
---|
36 | ** If you have questions regarding the use of this file, please contact
|
---|
37 | ** Nokia at qt-info@nokia.com.
|
---|
38 | ** $QT_END_LICENSE$
|
---|
39 | **
|
---|
40 | ****************************************************************************/
|
---|
41 |
|
---|
42 | #include "qdirectfbkeyboard.h"
|
---|
43 |
|
---|
44 | #ifndef QT_NO_QWS_DIRECTFB
|
---|
45 |
|
---|
46 | #include "qdirectfbscreen.h"
|
---|
47 | #include <qobject.h>
|
---|
48 | #include <qsocketnotifier.h>
|
---|
49 | #include <qhash.h>
|
---|
50 |
|
---|
51 | #include <directfb.h>
|
---|
52 | #include <unistd.h>
|
---|
53 | #include <fcntl.h>
|
---|
54 | #include <errno.h>
|
---|
55 |
|
---|
56 | QT_BEGIN_NAMESPACE
|
---|
57 |
|
---|
58 | class KeyMap : public QHash<DFBInputDeviceKeySymbol, Qt::Key>
|
---|
59 | {
|
---|
60 | public:
|
---|
61 | KeyMap();
|
---|
62 | };
|
---|
63 |
|
---|
64 | Q_GLOBAL_STATIC(KeyMap, keymap);
|
---|
65 |
|
---|
66 | class QDirectFBKeyboardHandlerPrivate : public QObject
|
---|
67 | {
|
---|
68 | Q_OBJECT
|
---|
69 | public:
|
---|
70 | QDirectFBKeyboardHandlerPrivate(QDirectFBKeyboardHandler *handler);
|
---|
71 | ~QDirectFBKeyboardHandlerPrivate();
|
---|
72 |
|
---|
73 | void suspend();
|
---|
74 | void resume();
|
---|
75 |
|
---|
76 | private:
|
---|
77 | QDirectFBKeyboardHandler *handler;
|
---|
78 | IDirectFBEventBuffer *eventBuffer;
|
---|
79 | QSocketNotifier *keyboardNotifier;
|
---|
80 | DFBEvent event;
|
---|
81 | int bytesRead;
|
---|
82 | int lastUnicode, lastKeycode;
|
---|
83 | Qt::KeyboardModifiers lastModifiers;
|
---|
84 | private Q_SLOTS:
|
---|
85 | void readKeyboardData();
|
---|
86 | };
|
---|
87 |
|
---|
88 | QDirectFBKeyboardHandlerPrivate::QDirectFBKeyboardHandlerPrivate(QDirectFBKeyboardHandler *h)
|
---|
89 | : handler(h), eventBuffer(0), keyboardNotifier(0), bytesRead(0),
|
---|
90 | lastUnicode(0), lastKeycode(0), lastModifiers(0)
|
---|
91 | {
|
---|
92 | Q_ASSERT(qt_screen);
|
---|
93 |
|
---|
94 | IDirectFB *fb = QDirectFBScreen::instance()->dfb();
|
---|
95 | if (!fb) {
|
---|
96 | qCritical("QDirectFBKeyboardHandler: DirectFB not initialized");
|
---|
97 | return;
|
---|
98 | }
|
---|
99 |
|
---|
100 | DFBResult result;
|
---|
101 | result = fb->CreateInputEventBuffer(fb, DICAPS_KEYS, DFB_TRUE,
|
---|
102 | &eventBuffer);
|
---|
103 | if (result != DFB_OK) {
|
---|
104 | DirectFBError("QDirectFBKeyboardHandler: "
|
---|
105 | "Unable to create input event buffer", result);
|
---|
106 | return;
|
---|
107 | }
|
---|
108 |
|
---|
109 | int fd;
|
---|
110 | result = eventBuffer->CreateFileDescriptor(eventBuffer, &fd);
|
---|
111 | if (result != DFB_OK) {
|
---|
112 | DirectFBError("QDirectFBKeyboardHandler: "
|
---|
113 | "Unable to create file descriptor", result);
|
---|
114 | return;
|
---|
115 | }
|
---|
116 |
|
---|
117 | int flags = ::fcntl(fd, F_GETFL, 0);
|
---|
118 | ::fcntl(fd, F_SETFL, flags | O_NONBLOCK);
|
---|
119 |
|
---|
120 | memset(&event, 0, sizeof(event));
|
---|
121 |
|
---|
122 | keyboardNotifier = new QSocketNotifier(fd, QSocketNotifier::Read, this);
|
---|
123 | connect(keyboardNotifier, SIGNAL(activated(int)),
|
---|
124 | this, SLOT(readKeyboardData()));
|
---|
125 | resume();
|
---|
126 | }
|
---|
127 |
|
---|
128 | void QDirectFBKeyboardHandlerPrivate::suspend()
|
---|
129 | {
|
---|
130 | keyboardNotifier->setEnabled(false);
|
---|
131 | }
|
---|
132 |
|
---|
133 | void QDirectFBKeyboardHandlerPrivate::resume()
|
---|
134 | {
|
---|
135 | eventBuffer->Reset(eventBuffer);
|
---|
136 | keyboardNotifier->setEnabled(true);
|
---|
137 | }
|
---|
138 |
|
---|
139 | QDirectFBKeyboardHandlerPrivate::~QDirectFBKeyboardHandlerPrivate()
|
---|
140 | {
|
---|
141 | if (eventBuffer)
|
---|
142 | eventBuffer->Release(eventBuffer);
|
---|
143 | }
|
---|
144 |
|
---|
145 | void QDirectFBKeyboardHandlerPrivate::readKeyboardData()
|
---|
146 | {
|
---|
147 | if(!qt_screen)
|
---|
148 | return;
|
---|
149 |
|
---|
150 | for (;;) {
|
---|
151 | // GetEvent returns DFB_UNSUPPORTED after CreateFileDescriptor().
|
---|
152 | // This seems stupid and I really hope it's a bug which will be fixed.
|
---|
153 |
|
---|
154 | // DFBResult ret = eventBuffer->GetEvent(eventBuffer, &event);
|
---|
155 |
|
---|
156 | char *buf = reinterpret_cast<char*>(&event);
|
---|
157 | int ret = ::read(keyboardNotifier->socket(),
|
---|
158 | buf + bytesRead, sizeof(DFBEvent) - bytesRead);
|
---|
159 | if (ret == -1) {
|
---|
160 | if (errno != EAGAIN)
|
---|
161 | qWarning("QDirectFBKeyboardHandlerPrivate::readKeyboardData(): %s",
|
---|
162 | strerror(errno));
|
---|
163 | return;
|
---|
164 | }
|
---|
165 |
|
---|
166 | Q_ASSERT(ret >= 0);
|
---|
167 | bytesRead += ret;
|
---|
168 | if (bytesRead < int(sizeof(DFBEvent)))
|
---|
169 | break;
|
---|
170 | bytesRead = 0;
|
---|
171 |
|
---|
172 | Q_ASSERT(event.clazz == DFEC_INPUT);
|
---|
173 |
|
---|
174 | const DFBInputEvent input = event.input;
|
---|
175 |
|
---|
176 | Qt::KeyboardModifiers modifiers = Qt::NoModifier;
|
---|
177 |
|
---|
178 | // Not implemented:
|
---|
179 | // if (input.modifiers & DIMM_SUPER)
|
---|
180 | // if (input.modifiers & DIMM_HYPER)
|
---|
181 |
|
---|
182 | if (!(input.flags & DIEF_KEYSYMBOL) ||
|
---|
183 | !(input.flags & DIEF_KEYID) ||
|
---|
184 | !(input.type & (DIET_KEYPRESS|DIET_KEYRELEASE)))
|
---|
185 | {
|
---|
186 | static bool first = true;
|
---|
187 | if (first) {
|
---|
188 | qWarning("QDirectFBKeyboardHandler - Getting unexpected non-keyboard related events");
|
---|
189 | first = false;
|
---|
190 | }
|
---|
191 | break;
|
---|
192 | }
|
---|
193 |
|
---|
194 | if (input.flags & DIEF_MODIFIERS) {
|
---|
195 | if (input.modifiers & DIMM_SHIFT)
|
---|
196 | modifiers |= Qt::ShiftModifier;
|
---|
197 | if (input.modifiers & DIMM_CONTROL)
|
---|
198 | modifiers |= Qt::ControlModifier;
|
---|
199 | if (input.modifiers & DIMM_ALT)
|
---|
200 | modifiers |= Qt::AltModifier;
|
---|
201 | if (input.modifiers & DIMM_ALTGR)
|
---|
202 | modifiers |= Qt::AltModifier;
|
---|
203 | if (input.modifiers & DIMM_META)
|
---|
204 | modifiers |= Qt::MetaModifier;
|
---|
205 | }
|
---|
206 |
|
---|
207 |
|
---|
208 | const bool press = input.type & DIET_KEYPRESS;
|
---|
209 | DFBInputDeviceKeySymbol symbol = input.key_symbol;
|
---|
210 | int unicode = -1;
|
---|
211 | int keycode = 0;
|
---|
212 |
|
---|
213 | keycode = keymap()->value(symbol);
|
---|
214 | if (DFB_KEY_TYPE(symbol) == DIKT_UNICODE)
|
---|
215 | unicode = symbol;
|
---|
216 |
|
---|
217 | if (unicode != -1 || keycode != 0) {
|
---|
218 | bool autoRepeat = false;
|
---|
219 | if (press) {
|
---|
220 | if (unicode == lastUnicode && keycode == lastKeycode && modifiers == lastModifiers) {
|
---|
221 | autoRepeat = true;
|
---|
222 | } else {
|
---|
223 | lastUnicode = unicode;
|
---|
224 | lastKeycode = keycode;
|
---|
225 | lastModifiers = modifiers;
|
---|
226 | }
|
---|
227 | } else {
|
---|
228 | lastUnicode = lastKeycode = -1;
|
---|
229 | lastModifiers = 0;
|
---|
230 | }
|
---|
231 | if (autoRepeat) {
|
---|
232 | handler->processKeyEvent(unicode, keycode,
|
---|
233 | modifiers, false, autoRepeat);
|
---|
234 |
|
---|
235 | }
|
---|
236 |
|
---|
237 | handler->processKeyEvent(unicode, keycode,
|
---|
238 | modifiers, press, autoRepeat);
|
---|
239 | }
|
---|
240 | }
|
---|
241 | }
|
---|
242 |
|
---|
243 | QDirectFBKeyboardHandler::QDirectFBKeyboardHandler(const QString &device)
|
---|
244 | : QWSKeyboardHandler()
|
---|
245 | {
|
---|
246 | Q_UNUSED(device);
|
---|
247 | d = new QDirectFBKeyboardHandlerPrivate(this);
|
---|
248 | }
|
---|
249 |
|
---|
250 | QDirectFBKeyboardHandler::~QDirectFBKeyboardHandler()
|
---|
251 | {
|
---|
252 | delete d;
|
---|
253 | }
|
---|
254 |
|
---|
255 | KeyMap::KeyMap()
|
---|
256 | {
|
---|
257 | insert(DIKS_BACKSPACE , Qt::Key_Backspace);
|
---|
258 | insert(DIKS_TAB , Qt::Key_Tab);
|
---|
259 | insert(DIKS_RETURN , Qt::Key_Return);
|
---|
260 | insert(DIKS_ESCAPE , Qt::Key_Escape);
|
---|
261 | insert(DIKS_DELETE , Qt::Key_Delete);
|
---|
262 |
|
---|
263 | insert(DIKS_CURSOR_LEFT , Qt::Key_Left);
|
---|
264 | insert(DIKS_CURSOR_RIGHT , Qt::Key_Right);
|
---|
265 | insert(DIKS_CURSOR_UP , Qt::Key_Up);
|
---|
266 | insert(DIKS_CURSOR_DOWN , Qt::Key_Down);
|
---|
267 | insert(DIKS_INSERT , Qt::Key_Insert);
|
---|
268 | insert(DIKS_HOME , Qt::Key_Home);
|
---|
269 | insert(DIKS_END , Qt::Key_End);
|
---|
270 | insert(DIKS_PAGE_UP , Qt::Key_PageUp);
|
---|
271 | insert(DIKS_PAGE_DOWN , Qt::Key_PageDown);
|
---|
272 | insert(DIKS_PRINT , Qt::Key_Print);
|
---|
273 | insert(DIKS_PAUSE , Qt::Key_Pause);
|
---|
274 | insert(DIKS_SELECT , Qt::Key_Select);
|
---|
275 | insert(DIKS_GOTO , Qt::Key_OpenUrl);
|
---|
276 | insert(DIKS_CLEAR , Qt::Key_Clear);
|
---|
277 | insert(DIKS_MENU , Qt::Key_Menu);
|
---|
278 | insert(DIKS_HELP , Qt::Key_Help);
|
---|
279 |
|
---|
280 | insert(DIKS_INTERNET , Qt::Key_HomePage);
|
---|
281 | insert(DIKS_MAIL , Qt::Key_LaunchMail);
|
---|
282 | insert(DIKS_FAVORITES , Qt::Key_Favorites);
|
---|
283 |
|
---|
284 | insert(DIKS_BACK , Qt::Key_Back);
|
---|
285 | insert(DIKS_FORWARD , Qt::Key_Forward);
|
---|
286 | insert(DIKS_VOLUME_UP , Qt::Key_VolumeUp);
|
---|
287 | insert(DIKS_VOLUME_DOWN , Qt::Key_VolumeDown);
|
---|
288 | insert(DIKS_MUTE , Qt::Key_VolumeMute);
|
---|
289 | insert(DIKS_PLAYPAUSE , Qt::Key_Pause);
|
---|
290 | insert(DIKS_PLAY , Qt::Key_MediaPlay);
|
---|
291 | insert(DIKS_STOP , Qt::Key_MediaStop);
|
---|
292 | insert(DIKS_RECORD , Qt::Key_MediaRecord);
|
---|
293 | insert(DIKS_PREVIOUS , Qt::Key_MediaPrevious);
|
---|
294 | insert(DIKS_NEXT , Qt::Key_MediaNext);
|
---|
295 |
|
---|
296 | insert(DIKS_F1 , Qt::Key_F1);
|
---|
297 | insert(DIKS_F2 , Qt::Key_F2);
|
---|
298 | insert(DIKS_F3 , Qt::Key_F3);
|
---|
299 | insert(DIKS_F4 , Qt::Key_F4);
|
---|
300 | insert(DIKS_F5 , Qt::Key_F5);
|
---|
301 | insert(DIKS_F6 , Qt::Key_F6);
|
---|
302 | insert(DIKS_F7 , Qt::Key_F7);
|
---|
303 | insert(DIKS_F8 , Qt::Key_F8);
|
---|
304 | insert(DIKS_F9 , Qt::Key_F9);
|
---|
305 | insert(DIKS_F10 , Qt::Key_F10);
|
---|
306 | insert(DIKS_F11 , Qt::Key_F11);
|
---|
307 | insert(DIKS_F12 , Qt::Key_F12);
|
---|
308 |
|
---|
309 | insert(DIKS_SHIFT , Qt::Key_Shift);
|
---|
310 | insert(DIKS_CONTROL , Qt::Key_Control);
|
---|
311 | insert(DIKS_ALT , Qt::Key_Alt);
|
---|
312 | insert(DIKS_ALTGR , Qt::Key_AltGr);
|
---|
313 |
|
---|
314 | insert(DIKS_META , Qt::Key_Meta);
|
---|
315 | insert(DIKS_SUPER , Qt::Key_Super_L); // ???
|
---|
316 | insert(DIKS_HYPER , Qt::Key_Hyper_L); // ???
|
---|
317 |
|
---|
318 | insert(DIKS_CAPS_LOCK , Qt::Key_CapsLock);
|
---|
319 | insert(DIKS_NUM_LOCK , Qt::Key_NumLock);
|
---|
320 | insert(DIKS_SCROLL_LOCK , Qt::Key_ScrollLock);
|
---|
321 |
|
---|
322 | insert(DIKS_DEAD_ABOVEDOT , Qt::Key_Dead_Abovedot);
|
---|
323 | insert(DIKS_DEAD_ABOVERING , Qt::Key_Dead_Abovering);
|
---|
324 | insert(DIKS_DEAD_ACUTE , Qt::Key_Dead_Acute);
|
---|
325 | insert(DIKS_DEAD_BREVE , Qt::Key_Dead_Breve);
|
---|
326 | insert(DIKS_DEAD_CARON , Qt::Key_Dead_Caron);
|
---|
327 | insert(DIKS_DEAD_CEDILLA , Qt::Key_Dead_Cedilla);
|
---|
328 | insert(DIKS_DEAD_CIRCUMFLEX , Qt::Key_Dead_Circumflex);
|
---|
329 | insert(DIKS_DEAD_DIAERESIS , Qt::Key_Dead_Diaeresis);
|
---|
330 | insert(DIKS_DEAD_DOUBLEACUTE , Qt::Key_Dead_Doubleacute);
|
---|
331 | insert(DIKS_DEAD_GRAVE , Qt::Key_Dead_Grave);
|
---|
332 | insert(DIKS_DEAD_IOTA , Qt::Key_Dead_Iota);
|
---|
333 | insert(DIKS_DEAD_MACRON , Qt::Key_Dead_Macron);
|
---|
334 | insert(DIKS_DEAD_OGONEK , Qt::Key_Dead_Ogonek);
|
---|
335 | insert(DIKS_DEAD_SEMIVOICED_SOUND , Qt::Key_Dead_Semivoiced_Sound);
|
---|
336 | insert(DIKS_DEAD_TILDE , Qt::Key_Dead_Tilde);
|
---|
337 | insert(DIKS_DEAD_VOICED_SOUND , Qt::Key_Dead_Voiced_Sound);
|
---|
338 | insert(DIKS_SPACE , Qt::Key_Space);
|
---|
339 | insert(DIKS_EXCLAMATION_MARK , Qt::Key_Exclam);
|
---|
340 | insert(DIKS_QUOTATION , Qt::Key_QuoteDbl);
|
---|
341 | insert(DIKS_NUMBER_SIGN , Qt::Key_NumberSign);
|
---|
342 | insert(DIKS_DOLLAR_SIGN , Qt::Key_Dollar);
|
---|
343 | insert(DIKS_PERCENT_SIGN , Qt::Key_Percent);
|
---|
344 | insert(DIKS_AMPERSAND , Qt::Key_Ampersand);
|
---|
345 | insert(DIKS_APOSTROPHE , Qt::Key_Apostrophe);
|
---|
346 | insert(DIKS_PARENTHESIS_LEFT , Qt::Key_ParenLeft);
|
---|
347 | insert(DIKS_PARENTHESIS_RIGHT , Qt::Key_ParenRight);
|
---|
348 | insert(DIKS_ASTERISK , Qt::Key_Asterisk);
|
---|
349 | insert(DIKS_PLUS_SIGN , Qt::Key_Plus);
|
---|
350 | insert(DIKS_COMMA , Qt::Key_Comma);
|
---|
351 | insert(DIKS_MINUS_SIGN , Qt::Key_Minus);
|
---|
352 | insert(DIKS_PERIOD , Qt::Key_Period);
|
---|
353 | insert(DIKS_SLASH , Qt::Key_Slash);
|
---|
354 | insert(DIKS_0 , Qt::Key_0);
|
---|
355 | insert(DIKS_1 , Qt::Key_1);
|
---|
356 | insert(DIKS_2 , Qt::Key_2);
|
---|
357 | insert(DIKS_3 , Qt::Key_3);
|
---|
358 | insert(DIKS_4 , Qt::Key_4);
|
---|
359 | insert(DIKS_5 , Qt::Key_5);
|
---|
360 | insert(DIKS_6 , Qt::Key_6);
|
---|
361 | insert(DIKS_7 , Qt::Key_7);
|
---|
362 | insert(DIKS_8 , Qt::Key_8);
|
---|
363 | insert(DIKS_9 , Qt::Key_9);
|
---|
364 | insert(DIKS_COLON , Qt::Key_Colon);
|
---|
365 | insert(DIKS_SEMICOLON , Qt::Key_Semicolon);
|
---|
366 | insert(DIKS_LESS_THAN_SIGN , Qt::Key_Less);
|
---|
367 | insert(DIKS_EQUALS_SIGN , Qt::Key_Equal);
|
---|
368 | insert(DIKS_GREATER_THAN_SIGN , Qt::Key_Greater);
|
---|
369 | insert(DIKS_QUESTION_MARK , Qt::Key_Question);
|
---|
370 | insert(DIKS_AT , Qt::Key_At);
|
---|
371 | insert(DIKS_CAPITAL_A , Qt::Key_A);
|
---|
372 | insert(DIKS_CAPITAL_B , Qt::Key_B);
|
---|
373 | insert(DIKS_CAPITAL_C , Qt::Key_C);
|
---|
374 | insert(DIKS_CAPITAL_D , Qt::Key_D);
|
---|
375 | insert(DIKS_CAPITAL_E , Qt::Key_E);
|
---|
376 | insert(DIKS_CAPITAL_F , Qt::Key_F);
|
---|
377 | insert(DIKS_CAPITAL_G , Qt::Key_G);
|
---|
378 | insert(DIKS_CAPITAL_H , Qt::Key_H);
|
---|
379 | insert(DIKS_CAPITAL_I , Qt::Key_I);
|
---|
380 | insert(DIKS_CAPITAL_J , Qt::Key_J);
|
---|
381 | insert(DIKS_CAPITAL_K , Qt::Key_K);
|
---|
382 | insert(DIKS_CAPITAL_L , Qt::Key_L);
|
---|
383 | insert(DIKS_CAPITAL_M , Qt::Key_M);
|
---|
384 | insert(DIKS_CAPITAL_N , Qt::Key_N);
|
---|
385 | insert(DIKS_CAPITAL_O , Qt::Key_O);
|
---|
386 | insert(DIKS_CAPITAL_P , Qt::Key_P);
|
---|
387 | insert(DIKS_CAPITAL_Q , Qt::Key_Q);
|
---|
388 | insert(DIKS_CAPITAL_R , Qt::Key_R);
|
---|
389 | insert(DIKS_CAPITAL_S , Qt::Key_S);
|
---|
390 | insert(DIKS_CAPITAL_T , Qt::Key_T);
|
---|
391 | insert(DIKS_CAPITAL_U , Qt::Key_U);
|
---|
392 | insert(DIKS_CAPITAL_V , Qt::Key_V);
|
---|
393 | insert(DIKS_CAPITAL_W , Qt::Key_W);
|
---|
394 | insert(DIKS_CAPITAL_X , Qt::Key_X);
|
---|
395 | insert(DIKS_CAPITAL_Y , Qt::Key_Y);
|
---|
396 | insert(DIKS_CAPITAL_Z , Qt::Key_Z);
|
---|
397 | insert(DIKS_SQUARE_BRACKET_LEFT , Qt::Key_BracketLeft);
|
---|
398 | insert(DIKS_BACKSLASH , Qt::Key_Backslash);
|
---|
399 | insert(DIKS_SQUARE_BRACKET_RIGHT , Qt::Key_BracketRight);
|
---|
400 | insert(DIKS_CIRCUMFLEX_ACCENT , Qt::Key_AsciiCircum);
|
---|
401 | insert(DIKS_UNDERSCORE , Qt::Key_Underscore);
|
---|
402 | insert(DIKS_SMALL_A , Qt::Key_A);
|
---|
403 | insert(DIKS_SMALL_B , Qt::Key_B);
|
---|
404 | insert(DIKS_SMALL_C , Qt::Key_C);
|
---|
405 | insert(DIKS_SMALL_D , Qt::Key_D);
|
---|
406 | insert(DIKS_SMALL_E , Qt::Key_E);
|
---|
407 | insert(DIKS_SMALL_F , Qt::Key_F);
|
---|
408 | insert(DIKS_SMALL_G , Qt::Key_G);
|
---|
409 | insert(DIKS_SMALL_H , Qt::Key_H);
|
---|
410 | insert(DIKS_SMALL_I , Qt::Key_I);
|
---|
411 | insert(DIKS_SMALL_J , Qt::Key_J);
|
---|
412 | insert(DIKS_SMALL_K , Qt::Key_K);
|
---|
413 | insert(DIKS_SMALL_L , Qt::Key_L);
|
---|
414 | insert(DIKS_SMALL_M , Qt::Key_M);
|
---|
415 | insert(DIKS_SMALL_N , Qt::Key_N);
|
---|
416 | insert(DIKS_SMALL_O , Qt::Key_O);
|
---|
417 | insert(DIKS_SMALL_P , Qt::Key_P);
|
---|
418 | insert(DIKS_SMALL_Q , Qt::Key_Q);
|
---|
419 | insert(DIKS_SMALL_R , Qt::Key_R);
|
---|
420 | insert(DIKS_SMALL_S , Qt::Key_S);
|
---|
421 | insert(DIKS_SMALL_T , Qt::Key_T);
|
---|
422 | insert(DIKS_SMALL_U , Qt::Key_U);
|
---|
423 | insert(DIKS_SMALL_V , Qt::Key_V);
|
---|
424 | insert(DIKS_SMALL_W , Qt::Key_W);
|
---|
425 | insert(DIKS_SMALL_X , Qt::Key_X);
|
---|
426 | insert(DIKS_SMALL_Y , Qt::Key_Y);
|
---|
427 | insert(DIKS_SMALL_Z , Qt::Key_Z);
|
---|
428 | insert(DIKS_CURLY_BRACKET_LEFT , Qt::Key_BraceLeft);
|
---|
429 | insert(DIKS_VERTICAL_BAR , Qt::Key_Bar);
|
---|
430 | insert(DIKS_CURLY_BRACKET_RIGHT , Qt::Key_BraceRight);
|
---|
431 | insert(DIKS_TILDE , Qt::Key_AsciiTilde);
|
---|
432 | }
|
---|
433 |
|
---|
434 | QT_END_NAMESPACE
|
---|
435 | #include "qdirectfbkeyboard.moc"
|
---|
436 | #endif // QT_NO_QWS_DIRECTFB
|
---|