Rabbit Remote Control 0.1.0-bate16
Loading...
Searching...
No Matches
ConvertKeyCode.cpp
1
2
3#include "ConvertKeyCode.h"
4
5#if defined(HAVE_TigerVNC) || defined(HAVE_RabbitVNC)
6// the X11 headers on some systems
7#ifndef XK_VoidSymbol
8#define XK_LATIN1
9#define XK_MISCELLANY
10#define XK_XKB_KEYS
11#include <rfb/keysymdef.h>
12#endif
13#endif
14
15#ifdef HAVE_LIBVNCSERVER
16#include "rfb/rfbclient.h"
17#endif
18
20 : QObject{parent}
21{}
22
30quint32 CConvertKeyCode::QtToRfbKey(int inkey, bool modifier)
31{
32 quint32 k = 5000;
33
34 switch (inkey)
35 {
36 case Qt::Key_Backspace: k = XK_BackSpace; break;
37 case Qt::Key_Tab: k = XK_Tab; break;
38 case Qt::Key_Clear: k = XK_Clear; break;
39 case Qt::Key_Return: k = XK_Return; break;
40 case Qt::Key_Pause: k = XK_Pause; break;
41 case Qt::Key_Escape: k = XK_Escape; break;
42 case Qt::Key_Space: k = XK_space; break;
43 case Qt::Key_Delete: k = XK_Delete; break;
44 case Qt::Key_Period: k = XK_period; break;
45
46 /* International & multi-key character composition */
47 case Qt::Key_Multi_key: k = XK_Multi_key; break;
48#if defined(HAVE_TigerVNC) || defined(HAVE_RabbitVNC)
49 case Qt::Key_Codeinput: k = XK_Codeinput; break;
50#endif
51 case Qt::Key_SingleCandidate: k = XK_SingleCandidate; break;
52 case Qt::Key_MultipleCandidate: k = XK_MultipleCandidate; break;
53 case Qt::Key_PreviousCandidate: k = XK_PreviousCandidate; break;
54
55 /* Japanese keyboard support */
56 case Qt::Key_Kanji: k = XK_Kanji; break;
57 case Qt::Key_Muhenkan: k = XK_Muhenkan; break;
58 case Qt::Key_Henkan: k = XK_Henkan; break;
59 case Qt::Key_Romaji: k = XK_Romaji; break;
60 case Qt::Key_Hiragana: k = XK_Hiragana; break;
61 case Qt::Key_Katakana: k = XK_Katakana; break;
62 case Qt::Key_Hiragana_Katakana: k = XK_Hiragana_Katakana;break;
63 case Qt::Key_Zenkaku: k = XK_Zenkaku; break;
64 case Qt::Key_Hankaku: k = XK_Hankaku; break;
65 case Qt::Key_Zenkaku_Hankaku: k = XK_Zenkaku_Hankaku; break;
66 case Qt::Key_Touroku: k = XK_Touroku; break;
67 case Qt::Key_Massyo: k = XK_Massyo; break;
68 case Qt::Key_Kana_Lock: k = XK_Kana_Lock; break;
69 case Qt::Key_Kana_Shift: k = XK_Kana_Shift; break;
70 case Qt::Key_Eisu_Shift: k = XK_Eisu_Shift; break;
71 case Qt::Key_Eisu_toggle: k = XK_Eisu_toggle; break;
72
73 //special keyboard char
74 case Qt::Key_Exclam: k = XK_exclam; break;
75 case Qt::Key_QuoteDbl: k = XK_quotedbl; break; //"
76 case Qt::Key_NumberSign: k = XK_numbersign; break; //#
77 case Qt::Key_Percent: k = XK_percent; break; //%
78 case Qt::Key_Dollar: k = XK_dollar; break; //$
79 case Qt::Key_Ampersand: k = XK_ampersand; break; //&
80 case Qt::Key_Apostrophe: k = XK_apostrophe; break;
81 case Qt::Key_ParenLeft: k = XK_parenleft; break; // (
82 case Qt::Key_ParenRight: k = XK_parenright; break; // )
83
84 case Qt::Key_Slash: k = XK_slash; break; // /
85 case Qt::Key_Asterisk: k = XK_asterisk; break; //*
86 case Qt::Key_Minus: k = XK_minus; break; //-
87 case Qt::Key_Plus: k = XK_plus; break; //+
88 case Qt::Key_Enter: k = XK_Return; break; //
89 case Qt::Key_Equal: k = XK_equal; break; //=
90 case Qt::Key_Comma: return XK_comma; //,
91
92 case Qt::Key_Colon: k = XK_colon;break; // :
93 case Qt::Key_Semicolon: k = XK_semicolon; break; //;
94 case Qt::Key_Less: k = XK_less; break; // <
95 case Qt::Key_Greater: k = XK_greater; break; // >
96 case Qt::Key_Question: k = XK_question; break; //?
97 case Qt::Key_At: k = XK_at; break; //@
98
99 case Qt::Key_BracketLeft: k = XK_bracketleft; break;
100 case Qt::Key_Backslash: k = XK_backslash;break;
101 case Qt::Key_BracketRight: k = XK_bracketright;break;
102 case Qt::Key_AsciiCircum: k = XK_asciicircum;break;
103 case Qt::Key_Underscore: k = XK_underscore;break;
104 case Qt::Key_QuoteLeft: k = XK_quoteleft;break;
105 case Qt::Key_BraceLeft: k = XK_braceleft;break;
106 case Qt::Key_Bar: k = XK_bar; break;
107 case Qt::Key_BraceRight: k = XK_braceright;break;
108 case Qt::Key_AsciiTilde: k = XK_asciitilde;break;
109 case Qt::Key_nobreakspace: k = XK_nobreakspace;break;
110 case Qt::Key_exclamdown: k = XK_exclamdown;break;
111 case Qt::Key_cent: k = XK_cent;break;
112 case Qt::Key_sterling: k = XK_sterling;break;
113 case Qt::Key_currency: k = XK_currency;break;
114 case Qt::Key_yen: k = XK_yen;break;
115 case Qt::Key_brokenbar: k = XK_brokenbar;break;
116 case Qt::Key_section: k = XK_section;break;
117 case Qt::Key_diaeresis: k = XK_diaeresis;break;
118 case Qt::Key_copyright: k = XK_copyright; break;
119 case Qt::Key_ordfeminine: k = XK_ordfeminine; break;
120 case Qt::Key_guillemotleft: k = XK_guillemotleft; break;
121 case Qt::Key_guillemotright: k = XK_guillemotright; break;
122 case Qt::Key_notsign: k = XK_notsign; break;
123 case Qt::Key_hyphen: k = XK_hyphen; break;
124 case Qt::Key_registered: k = XK_registered; break;
125
126 case Qt::Key_Up: k = XK_Up; break;
127 case Qt::Key_Down: k = XK_Down; break;
128 case Qt::Key_Right: k = XK_Right; break;
129 case Qt::Key_Left: k = XK_Left; break;
130 case Qt::Key_Insert: k = XK_Insert; break;
131 case Qt::Key_Home: k = XK_Home; break;
132 case Qt::Key_End: k = XK_End; break;
133 case Qt::Key_PageUp: k = XK_Page_Up; break;
134 case Qt::Key_PageDown: k = XK_Page_Down; break;
135 case Qt::Key_MediaPrevious: k = XK_Prior; break;
136 case Qt::Key_MediaNext: k = XK_Next; break;
137 case Qt::Key_MediaPlay: k = XK_Begin; break;
138
139 /* Misc Functions */
140 case Qt::Key_Select: k = XK_Select; break;
141 case Qt::Key_Printer: k = XK_Print; break;
142 case Qt::Key_Execute: k = XK_Execute; break;
143 case Qt::Key_Undo: k = XK_Undo; break;
144 case Qt::Key_Redo: k = XK_Redo; break;
145 case Qt::Key_Menu: k = XK_Menu; break;
146 case Qt::Key_Find: k = XK_Find; break;
147 case Qt::Key_Exit:
148 case Qt::Key_Cancel:
149 case Qt::Key_Stop:
150 k = XK_Cancel;
151 break;
152 case Qt::Key_Mode_switch: k = XK_Mode_switch; break;
153
154 case Qt::Key_F1: k = XK_F1; break;
155 case Qt::Key_F2: k = XK_F2; break;
156 case Qt::Key_F3: k = XK_F3; break;
157 case Qt::Key_F4: k = XK_F4; break;
158 case Qt::Key_F5: k = XK_F5; break;
159 case Qt::Key_F6: k = XK_F6; break;
160 case Qt::Key_F7: k = XK_F7; break;
161 case Qt::Key_F8: k = XK_F8; break;
162 case Qt::Key_F9: k = XK_F9; break;
163 case Qt::Key_F10: k = XK_F10; break;
164 case Qt::Key_F11: k = XK_F11; break;
165 case Qt::Key_F12: k = XK_F12; break;
166 case Qt::Key_F13: k = XK_F13; break;
167 case Qt::Key_F14: k = XK_F14; break;
168 case Qt::Key_F15: k = XK_F15; break;
169 case Qt::Key_F16: k = XK_F16; break;
170 case Qt::Key_F17: k = XK_F17; break;
171 case Qt::Key_F18: k = XK_F18; break;
172 case Qt::Key_F19: k = XK_F19; break;
173 case Qt::Key_F20: k = XK_F20; break;
174 case Qt::Key_F21: k = XK_F21; break;
175 case Qt::Key_F22: k = XK_F22; break;
176 case Qt::Key_F23: k = XK_F23; break;
177 case Qt::Key_F24: k = XK_F24; break;
178 case Qt::Key_F25: k = XK_F25; break;
179 case Qt::Key_F26: k = XK_F26; break;
180 case Qt::Key_F27: k = XK_F27; break;
181 case Qt::Key_F28: k = XK_F28; break;
182 case Qt::Key_F29: k = XK_F29; break;
183 case Qt::Key_F30: k = XK_F30; break;
184 case Qt::Key_F31: k = XK_F31; break;
185 case Qt::Key_F32: k = XK_F32; break;
186 case Qt::Key_F33: k = XK_F33; break;
187 case Qt::Key_F34: k = XK_F34; break;
188 case Qt::Key_F35: k = XK_F35; break;
189
190 case Qt::Key_NumLock: k = XK_Num_Lock; break;
191 case Qt::Key_CapsLock: k = XK_Caps_Lock; break;
192 case Qt::Key_ScrollLock: k = XK_Scroll_Lock; break;
193
194 case Qt::Key_Shift: k = XK_Shift_L; break; //k = XK_Shift_R; break;
195 case Qt::Key_Control: k = XK_Control_L; break;// k = XK_Control_R; break;
196 case Qt::Key_Alt: k = XK_Alt_L; break;//k = XK_Alt_R; break;
197 case Qt::Key_Meta: k = XK_Meta_L; break;//k = XK_Meta_R; break;*/
198
199 case Qt::Key_Super_L: k = XK_Super_L; break; /* left "windows" key */
200 case Qt::Key_Super_R: k = XK_Super_R; break; /* right "windows" key */
201
202 case Qt::Key_Hyper_L: k = XK_Hyper_L; break;
203 case Qt::Key_Hyper_R: k = XK_Hyper_R; break;
204
205 case Qt::Key_Help: k = XK_Help; break;
206 case Qt::Key_Print: k = XK_Print; break;
207 case Qt::Key_SysReq: k = XK_Sys_Req; break;
208 case Qt::Key_0: k = XK_0;break;
209 case Qt::Key_1: k = XK_1;break;
210 case Qt::Key_2: k = XK_2;break;
211 case Qt::Key_3: k = XK_3;break;
212 case Qt::Key_4: k = XK_4;break;
213 case Qt::Key_5: k = XK_5;break;
214 case Qt::Key_6: k = XK_6;break;
215 case Qt::Key_7: k = XK_7;break;
216 case Qt::Key_8: k = XK_8;break;
217 case Qt::Key_9: k = XK_9;break;
218 }
219
220 if (k == 5000)
221 {
222
223 if (!modifier)
224 {
225 switch (inkey)
226 {
227 case Qt::Key_A: k = XK_a;break;
228 case Qt::Key_B: k = XK_b;break;
229 case Qt::Key_C: k = XK_c;break;
230 case Qt::Key_D: k = XK_d;break;
231 case Qt::Key_E: k = XK_e;break;
232 case Qt::Key_F: k = XK_f;break;
233 case Qt::Key_G: k = XK_g;break;
234 case Qt::Key_H: k = XK_h;break;
235 case Qt::Key_I: k = XK_i;break;
236 case Qt::Key_J: k = XK_j;break;
237 case Qt::Key_K: k = XK_k;break;
238 case Qt::Key_L: k = XK_l;break;
239 case Qt::Key_M: k = XK_m;break;
240 case Qt::Key_N: k = XK_n;break;
241 case Qt::Key_O: k = XK_o;break;
242 case Qt::Key_P: k = XK_p;break;
243 case Qt::Key_Q: k = XK_q;break;
244 case Qt::Key_R: k = XK_r;break;
245 case Qt::Key_S: k = XK_s;break;
246 case Qt::Key_T: k = XK_t;break;
247 case Qt::Key_U: k = XK_u;break;
248 case Qt::Key_V: k = XK_v;break;
249 case Qt::Key_W: k = XK_w;break;
250 case Qt::Key_X: k = XK_x;break;
251 case Qt::Key_Y: k = XK_y;break;
252 case Qt::Key_Z: k = XK_z;break;
253 }
254 }
255 else
256 {
257 switch (inkey)
258 {
259 case Qt::Key_A: k = XK_A;break;
260 case Qt::Key_B: k = XK_B;break;
261 case Qt::Key_C: k = XK_C;break;
262 case Qt::Key_D: k = XK_D;break;
263 case Qt::Key_E: k = XK_E;break;
264 case Qt::Key_F: k = XK_F;break;
265 case Qt::Key_G: k = XK_G;break;
266 case Qt::Key_H: k = XK_H;break;
267 case Qt::Key_I: k = XK_I;break;
268 case Qt::Key_J: k = XK_J;break;
269 case Qt::Key_K: k = XK_K;break;
270 case Qt::Key_L: k = XK_L;break;
271 case Qt::Key_M: k = XK_M;break;
272 case Qt::Key_N: k = XK_N;break;
273 case Qt::Key_O: k = XK_O;break;
274 case Qt::Key_P: k = XK_P;break;
275 case Qt::Key_Q: k = XK_Q;break;
276 case Qt::Key_R: k = XK_R;break;
277 case Qt::Key_S: k = XK_S;break;
278 case Qt::Key_T: k = XK_T;break;
279 case Qt::Key_U: k = XK_U;break;
280 case Qt::Key_V: k = XK_V;break;
281 case Qt::Key_W: k = XK_W;break;
282 case Qt::Key_X: k = XK_X;break;
283 case Qt::Key_Y: k = XK_Y;break;
284 case Qt::Key_Z: k = XK_Z;break;
285 }
286 }
287 }
288
289 return k;
290
291}
static quint32 QtToRfbKey(int inkey, bool modifier)
CConvertKeyCode::QtToRfbKey.
CConvertKeyCode()
Author: Kang Lin kl222@126.com.