Line 0
Link Here
|
|
|
1 |
#ifndef KEYMAPPER_X11_H |
2 |
#define KEYMAPPER_X11_H |
3 |
|
4 |
// (davidsansome) Nicked from qkeymapper_x11.cpp |
5 |
|
6 |
#include <Qt> |
7 |
|
8 |
#define XK_MISCELLANY |
9 |
#define XK_LATIN1 |
10 |
#define XK_KOREAN |
11 |
#define XK_XKB_KEYS |
12 |
#include <X11/keysymdef.h> |
13 |
|
14 |
// |
15 |
// Keyboard event translation |
16 |
// |
17 |
|
18 |
#ifndef XK_ISO_Left_Tab |
19 |
#define XK_ISO_Left_Tab 0xFE20 |
20 |
#endif |
21 |
|
22 |
#ifndef XK_dead_hook |
23 |
#define XK_dead_hook 0xFE61 |
24 |
#endif |
25 |
|
26 |
#ifndef XK_dead_horn |
27 |
#define XK_dead_horn 0xFE62 |
28 |
#endif |
29 |
|
30 |
#ifndef XK_Codeinput |
31 |
#define XK_Codeinput 0xFF37 |
32 |
#endif |
33 |
|
34 |
#ifndef XK_Kanji_Bangou |
35 |
#define XK_Kanji_Bangou 0xFF37 /* same as codeinput */ |
36 |
#endif |
37 |
|
38 |
// Fix old X libraries |
39 |
#ifndef XK_KP_Home |
40 |
#define XK_KP_Home 0xFF95 |
41 |
#endif |
42 |
#ifndef XK_KP_Left |
43 |
#define XK_KP_Left 0xFF96 |
44 |
#endif |
45 |
#ifndef XK_KP_Up |
46 |
#define XK_KP_Up 0xFF97 |
47 |
#endif |
48 |
#ifndef XK_KP_Right |
49 |
#define XK_KP_Right 0xFF98 |
50 |
#endif |
51 |
#ifndef XK_KP_Down |
52 |
#define XK_KP_Down 0xFF99 |
53 |
#endif |
54 |
#ifndef XK_KP_Prior |
55 |
#define XK_KP_Prior 0xFF9A |
56 |
#endif |
57 |
#ifndef XK_KP_Next |
58 |
#define XK_KP_Next 0xFF9B |
59 |
#endif |
60 |
#ifndef XK_KP_End |
61 |
#define XK_KP_End 0xFF9C |
62 |
#endif |
63 |
#ifndef XK_KP_Insert |
64 |
#define XK_KP_Insert 0xFF9E |
65 |
#endif |
66 |
#ifndef XK_KP_Delete |
67 |
#define XK_KP_Delete 0xFF9F |
68 |
#endif |
69 |
|
70 |
// the next lines are taken from XFree > 4.0 (X11/XF86keysyms.h), defining some special |
71 |
// multimedia keys. They are included here as not every system has them. |
72 |
#define XF86XK_Standby 0x1008FF10 |
73 |
#define XF86XK_AudioLowerVolume 0x1008FF11 |
74 |
#define XF86XK_AudioMute 0x1008FF12 |
75 |
#define XF86XK_AudioRaiseVolume 0x1008FF13 |
76 |
#define XF86XK_AudioPlay 0x1008FF14 |
77 |
#define XF86XK_AudioStop 0x1008FF15 |
78 |
#define XF86XK_AudioPrev 0x1008FF16 |
79 |
#define XF86XK_AudioNext 0x1008FF17 |
80 |
#define XF86XK_HomePage 0x1008FF18 |
81 |
#define XF86XK_Calculator 0x1008FF1D |
82 |
#define XF86XK_Mail 0x1008FF19 |
83 |
#define XF86XK_Start 0x1008FF1A |
84 |
#define XF86XK_Search 0x1008FF1B |
85 |
#define XF86XK_AudioRecord 0x1008FF1C |
86 |
#define XF86XK_Back 0x1008FF26 |
87 |
#define XF86XK_Forward 0x1008FF27 |
88 |
#define XF86XK_Stop 0x1008FF28 |
89 |
#define XF86XK_Refresh 0x1008FF29 |
90 |
#define XF86XK_Favorites 0x1008FF30 |
91 |
#define XF86XK_AudioPause 0x1008FF31 |
92 |
#define XF86XK_AudioMedia 0x1008FF32 |
93 |
#define XF86XK_MyComputer 0x1008FF33 |
94 |
#define XF86XK_OpenURL 0x1008FF38 |
95 |
#define XF86XK_Launch0 0x1008FF40 |
96 |
#define XF86XK_Launch1 0x1008FF41 |
97 |
#define XF86XK_Launch2 0x1008FF42 |
98 |
#define XF86XK_Launch3 0x1008FF43 |
99 |
#define XF86XK_Launch4 0x1008FF44 |
100 |
#define XF86XK_Launch5 0x1008FF45 |
101 |
#define XF86XK_Launch6 0x1008FF46 |
102 |
#define XF86XK_Launch7 0x1008FF47 |
103 |
#define XF86XK_Launch8 0x1008FF48 |
104 |
#define XF86XK_Launch9 0x1008FF49 |
105 |
#define XF86XK_LaunchA 0x1008FF4A |
106 |
#define XF86XK_LaunchB 0x1008FF4B |
107 |
#define XF86XK_LaunchC 0x1008FF4C |
108 |
#define XF86XK_LaunchD 0x1008FF4D |
109 |
#define XF86XK_LaunchE 0x1008FF4E |
110 |
#define XF86XK_LaunchF 0x1008FF4F |
111 |
// end of XF86keysyms.h |
112 |
|
113 |
// Special keys used by Qtopia, mapped into the X11 private keypad range. |
114 |
#define QTOPIAXK_Select 0x11000601 |
115 |
#define QTOPIAXK_Yes 0x11000602 |
116 |
#define QTOPIAXK_No 0x11000603 |
117 |
#define QTOPIAXK_Cancel 0x11000604 |
118 |
#define QTOPIAXK_Printer 0x11000605 |
119 |
#define QTOPIAXK_Execute 0x11000606 |
120 |
#define QTOPIAXK_Sleep 0x11000607 |
121 |
#define QTOPIAXK_Play 0x11000608 |
122 |
#define QTOPIAXK_Zoom 0x11000609 |
123 |
#define QTOPIAXK_Context1 0x1100060A |
124 |
#define QTOPIAXK_Context2 0x1100060B |
125 |
#define QTOPIAXK_Context3 0x1100060C |
126 |
#define QTOPIAXK_Context4 0x1100060D |
127 |
#define QTOPIAXK_Call 0x1100060E |
128 |
#define QTOPIAXK_Hangup 0x1100060F |
129 |
#define QTOPIAXK_Flip 0x11000610 |
130 |
|
131 |
// keyboard mapping table |
132 |
static const unsigned int KeyTbl[] = { |
133 |
|
134 |
// misc keys |
135 |
|
136 |
XK_Escape, Qt::Key_Escape, |
137 |
XK_Tab, Qt::Key_Tab, |
138 |
XK_ISO_Left_Tab, Qt::Key_Backtab, |
139 |
XK_BackSpace, Qt::Key_Backspace, |
140 |
XK_Return, Qt::Key_Return, |
141 |
XK_Insert, Qt::Key_Insert, |
142 |
XK_Delete, Qt::Key_Delete, |
143 |
XK_Clear, Qt::Key_Delete, |
144 |
XK_Pause, Qt::Key_Pause, |
145 |
XK_Print, Qt::Key_Print, |
146 |
0x1005FF60, Qt::Key_SysReq, // hardcoded Sun SysReq |
147 |
0x1007ff00, Qt::Key_SysReq, // hardcoded X386 SysReq |
148 |
|
149 |
// cursor movement |
150 |
|
151 |
XK_Home, Qt::Key_Home, |
152 |
XK_End, Qt::Key_End, |
153 |
XK_Left, Qt::Key_Left, |
154 |
XK_Up, Qt::Key_Up, |
155 |
XK_Right, Qt::Key_Right, |
156 |
XK_Down, Qt::Key_Down, |
157 |
XK_Prior, Qt::Key_PageUp, |
158 |
XK_Next, Qt::Key_PageDown, |
159 |
|
160 |
// modifiers |
161 |
|
162 |
XK_Shift_L, Qt::Key_Shift, |
163 |
XK_Shift_R, Qt::Key_Shift, |
164 |
XK_Shift_Lock, Qt::Key_Shift, |
165 |
XK_Control_L, Qt::Key_Control, |
166 |
XK_Control_R, Qt::Key_Control, |
167 |
XK_Meta_L, Qt::Key_Meta, |
168 |
XK_Meta_R, Qt::Key_Meta, |
169 |
XK_Alt_L, Qt::Key_Alt, |
170 |
XK_Alt_R, Qt::Key_Alt, |
171 |
XK_Caps_Lock, Qt::Key_CapsLock, |
172 |
XK_Num_Lock, Qt::Key_NumLock, |
173 |
XK_Scroll_Lock, Qt::Key_ScrollLock, |
174 |
XK_Super_L, Qt::Key_Super_L, |
175 |
XK_Super_R, Qt::Key_Super_R, |
176 |
XK_Menu, Qt::Key_Menu, |
177 |
XK_Hyper_L, Qt::Key_Hyper_L, |
178 |
XK_Hyper_R, Qt::Key_Hyper_R, |
179 |
XK_Help, Qt::Key_Help, |
180 |
0x1000FF74, Qt::Key_Backtab, // hardcoded HP backtab |
181 |
0x1005FF10, Qt::Key_F11, // hardcoded Sun F36 (labeled F11) |
182 |
0x1005FF11, Qt::Key_F12, // hardcoded Sun F37 (labeled F12) |
183 |
|
184 |
// numeric and function keypad keys |
185 |
|
186 |
XK_KP_Space, Qt::Key_Space, |
187 |
XK_KP_Tab, Qt::Key_Tab, |
188 |
XK_KP_Enter, Qt::Key_Enter, |
189 |
//XK_KP_F1, Qt::Key_F1, |
190 |
//XK_KP_F2, Qt::Key_F2, |
191 |
//XK_KP_F3, Qt::Key_F3, |
192 |
//XK_KP_F4, Qt::Key_F4, |
193 |
XK_KP_Home, Qt::Key_Home, |
194 |
XK_KP_Left, Qt::Key_Left, |
195 |
XK_KP_Up, Qt::Key_Up, |
196 |
XK_KP_Right, Qt::Key_Right, |
197 |
XK_KP_Down, Qt::Key_Down, |
198 |
XK_KP_Prior, Qt::Key_PageUp, |
199 |
XK_KP_Next, Qt::Key_PageDown, |
200 |
XK_KP_End, Qt::Key_End, |
201 |
XK_KP_Begin, Qt::Key_Clear, |
202 |
XK_KP_Insert, Qt::Key_Insert, |
203 |
XK_KP_Delete, Qt::Key_Delete, |
204 |
XK_KP_Equal, Qt::Key_Equal, |
205 |
XK_KP_Multiply, Qt::Key_Asterisk, |
206 |
XK_KP_Add, Qt::Key_Plus, |
207 |
XK_KP_Separator, Qt::Key_Comma, |
208 |
XK_KP_Subtract, Qt::Key_Minus, |
209 |
XK_KP_Decimal, Qt::Key_Period, |
210 |
XK_KP_Divide, Qt::Key_Slash, |
211 |
|
212 |
// International input method support keys |
213 |
|
214 |
// International & multi-key character composition |
215 |
XK_ISO_Level3_Shift, Qt::Key_AltGr, |
216 |
XK_Multi_key, Qt::Key_Multi_key, |
217 |
XK_Codeinput, Qt::Key_Codeinput, |
218 |
XK_SingleCandidate, Qt::Key_SingleCandidate, |
219 |
XK_MultipleCandidate, Qt::Key_MultipleCandidate, |
220 |
XK_PreviousCandidate, Qt::Key_PreviousCandidate, |
221 |
|
222 |
// Misc Functions |
223 |
XK_Mode_switch, Qt::Key_Mode_switch, |
224 |
XK_script_switch, Qt::Key_Mode_switch, |
225 |
|
226 |
// Japanese keyboard support |
227 |
XK_Kanji, Qt::Key_Kanji, |
228 |
XK_Muhenkan, Qt::Key_Muhenkan, |
229 |
//XK_Henkan_Mode, Qt::Key_Henkan_Mode, |
230 |
XK_Henkan_Mode, Qt::Key_Henkan, |
231 |
XK_Henkan, Qt::Key_Henkan, |
232 |
XK_Romaji, Qt::Key_Romaji, |
233 |
XK_Hiragana, Qt::Key_Hiragana, |
234 |
XK_Katakana, Qt::Key_Katakana, |
235 |
XK_Hiragana_Katakana, Qt::Key_Hiragana_Katakana, |
236 |
XK_Zenkaku, Qt::Key_Zenkaku, |
237 |
XK_Hankaku, Qt::Key_Hankaku, |
238 |
XK_Zenkaku_Hankaku, Qt::Key_Zenkaku_Hankaku, |
239 |
XK_Touroku, Qt::Key_Touroku, |
240 |
XK_Massyo, Qt::Key_Massyo, |
241 |
XK_Kana_Lock, Qt::Key_Kana_Lock, |
242 |
XK_Kana_Shift, Qt::Key_Kana_Shift, |
243 |
XK_Eisu_Shift, Qt::Key_Eisu_Shift, |
244 |
XK_Eisu_toggle, Qt::Key_Eisu_toggle, |
245 |
//XK_Kanji_Bangou, Qt::Key_Kanji_Bangou, |
246 |
//XK_Zen_Koho, Qt::Key_Zen_Koho, |
247 |
//XK_Mae_Koho, Qt::Key_Mae_Koho, |
248 |
XK_Kanji_Bangou, Qt::Key_Codeinput, |
249 |
XK_Zen_Koho, Qt::Key_MultipleCandidate, |
250 |
XK_Mae_Koho, Qt::Key_PreviousCandidate, |
251 |
|
252 |
#ifdef XK_KOREAN |
253 |
// Korean keyboard support |
254 |
XK_Hangul, Qt::Key_Hangul, |
255 |
XK_Hangul_Start, Qt::Key_Hangul_Start, |
256 |
XK_Hangul_End, Qt::Key_Hangul_End, |
257 |
XK_Hangul_Hanja, Qt::Key_Hangul_Hanja, |
258 |
XK_Hangul_Jamo, Qt::Key_Hangul_Jamo, |
259 |
XK_Hangul_Romaja, Qt::Key_Hangul_Romaja, |
260 |
//XK_Hangul_Codeinput, Qt::Key_Hangul_Codeinput, |
261 |
XK_Hangul_Codeinput, Qt::Key_Codeinput, |
262 |
XK_Hangul_Jeonja, Qt::Key_Hangul_Jeonja, |
263 |
XK_Hangul_Banja, Qt::Key_Hangul_Banja, |
264 |
XK_Hangul_PreHanja, Qt::Key_Hangul_PreHanja, |
265 |
XK_Hangul_PostHanja, Qt::Key_Hangul_PostHanja, |
266 |
//XK_Hangul_SingleCandidate,Qt::Key_Hangul_SingleCandidate, |
267 |
//XK_Hangul_MultipleCandidate,Qt::Key_Hangul_MultipleCandidate, |
268 |
//XK_Hangul_PreviousCandidate,Qt::Key_Hangul_PreviousCandidate, |
269 |
XK_Hangul_SingleCandidate, Qt::Key_SingleCandidate, |
270 |
XK_Hangul_MultipleCandidate,Qt::Key_MultipleCandidate, |
271 |
XK_Hangul_PreviousCandidate,Qt::Key_PreviousCandidate, |
272 |
XK_Hangul_Special, Qt::Key_Hangul_Special, |
273 |
//XK_Hangul_switch, Qt::Key_Hangul_switch, |
274 |
XK_Hangul_switch, Qt::Key_Mode_switch, |
275 |
#endif // XK_KOREAN |
276 |
|
277 |
// dead keys |
278 |
XK_dead_grave, Qt::Key_Dead_Grave, |
279 |
XK_dead_acute, Qt::Key_Dead_Acute, |
280 |
XK_dead_circumflex, Qt::Key_Dead_Circumflex, |
281 |
XK_dead_tilde, Qt::Key_Dead_Tilde, |
282 |
XK_dead_macron, Qt::Key_Dead_Macron, |
283 |
XK_dead_breve, Qt::Key_Dead_Breve, |
284 |
XK_dead_abovedot, Qt::Key_Dead_Abovedot, |
285 |
XK_dead_diaeresis, Qt::Key_Dead_Diaeresis, |
286 |
XK_dead_abovering, Qt::Key_Dead_Abovering, |
287 |
XK_dead_doubleacute, Qt::Key_Dead_Doubleacute, |
288 |
XK_dead_caron, Qt::Key_Dead_Caron, |
289 |
XK_dead_cedilla, Qt::Key_Dead_Cedilla, |
290 |
XK_dead_ogonek, Qt::Key_Dead_Ogonek, |
291 |
XK_dead_iota, Qt::Key_Dead_Iota, |
292 |
XK_dead_voiced_sound, Qt::Key_Dead_Voiced_Sound, |
293 |
XK_dead_semivoiced_sound, Qt::Key_Dead_Semivoiced_Sound, |
294 |
XK_dead_belowdot, Qt::Key_Dead_Belowdot, |
295 |
XK_dead_hook, Qt::Key_Dead_Hook, |
296 |
XK_dead_horn, Qt::Key_Dead_Horn, |
297 |
|
298 |
// Special multimedia keys |
299 |
// currently only tested with MS internet keyboard |
300 |
|
301 |
// browsing keys |
302 |
XF86XK_Back, Qt::Key_Back, |
303 |
XF86XK_Forward, Qt::Key_Forward, |
304 |
XF86XK_Stop, Qt::Key_Stop, |
305 |
XF86XK_Refresh, Qt::Key_Refresh, |
306 |
XF86XK_Favorites, Qt::Key_Favorites, |
307 |
XF86XK_AudioMedia, Qt::Key_LaunchMedia, |
308 |
XF86XK_OpenURL, Qt::Key_OpenUrl, |
309 |
XF86XK_HomePage, Qt::Key_HomePage, |
310 |
XF86XK_Search, Qt::Key_Search, |
311 |
|
312 |
// media keys |
313 |
XF86XK_AudioLowerVolume, Qt::Key_VolumeDown, |
314 |
XF86XK_AudioMute, Qt::Key_VolumeMute, |
315 |
XF86XK_AudioRaiseVolume, Qt::Key_VolumeUp, |
316 |
XF86XK_AudioPlay, Qt::Key_MediaPlay, |
317 |
XF86XK_AudioStop, Qt::Key_MediaStop, |
318 |
XF86XK_AudioPrev, Qt::Key_MediaPrevious, |
319 |
XF86XK_AudioNext, Qt::Key_MediaNext, |
320 |
XF86XK_AudioRecord, Qt::Key_MediaRecord, |
321 |
|
322 |
// launch keys |
323 |
XF86XK_Mail, Qt::Key_LaunchMail, |
324 |
XF86XK_MyComputer, Qt::Key_Launch0, |
325 |
XF86XK_Calculator, Qt::Key_Launch1, |
326 |
XF86XK_Standby, Qt::Key_Standby, |
327 |
|
328 |
XF86XK_Launch0, Qt::Key_Launch2, |
329 |
XF86XK_Launch1, Qt::Key_Launch3, |
330 |
XF86XK_Launch2, Qt::Key_Launch4, |
331 |
XF86XK_Launch3, Qt::Key_Launch5, |
332 |
XF86XK_Launch4, Qt::Key_Launch6, |
333 |
XF86XK_Launch5, Qt::Key_Launch7, |
334 |
XF86XK_Launch6, Qt::Key_Launch8, |
335 |
XF86XK_Launch7, Qt::Key_Launch9, |
336 |
XF86XK_Launch8, Qt::Key_LaunchA, |
337 |
XF86XK_Launch9, Qt::Key_LaunchB, |
338 |
XF86XK_LaunchA, Qt::Key_LaunchC, |
339 |
XF86XK_LaunchB, Qt::Key_LaunchD, |
340 |
XF86XK_LaunchC, Qt::Key_LaunchE, |
341 |
XF86XK_LaunchD, Qt::Key_LaunchF, |
342 |
|
343 |
// Qtopia keys |
344 |
QTOPIAXK_Select, Qt::Key_Select, |
345 |
QTOPIAXK_Yes, Qt::Key_Yes, |
346 |
QTOPIAXK_No, Qt::Key_No, |
347 |
QTOPIAXK_Cancel, Qt::Key_Cancel, |
348 |
QTOPIAXK_Printer, Qt::Key_Printer, |
349 |
QTOPIAXK_Execute, Qt::Key_Execute, |
350 |
QTOPIAXK_Sleep, Qt::Key_Sleep, |
351 |
QTOPIAXK_Play, Qt::Key_Play, |
352 |
QTOPIAXK_Zoom, Qt::Key_Zoom, |
353 |
QTOPIAXK_Context1, Qt::Key_Context1, |
354 |
QTOPIAXK_Context2, Qt::Key_Context2, |
355 |
QTOPIAXK_Context3, Qt::Key_Context3, |
356 |
QTOPIAXK_Context4, Qt::Key_Context4, |
357 |
QTOPIAXK_Call, Qt::Key_Call, |
358 |
QTOPIAXK_Hangup, Qt::Key_Hangup, |
359 |
QTOPIAXK_Flip, Qt::Key_Flip, |
360 |
|
361 |
0, 0 |
362 |
}; |
363 |
|
364 |
#endif // KEYMAPPER_X11_H |