ia64/xen-unstable

view tools/ioemu/vnc_keysym.h @ 12789:c7f4a89eb054

Fix numpad handling in QEMU's VNC server. The keymaps that we have include
information on which keys change depending upon the numlock setting, but
this isn't being used. By forcing numlock on and off as necessary, when
receiving these keysyms through the VNC connection, we ensure that the
server's numlock status is the same as the client's.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
author Ewan Mellor <ewan@xensource.com>
date Mon Dec 04 17:52:33 2006 +0000 (2006-12-04)
parents ea1ffa51b412
children 1ddaf2650633
line source
1 typedef struct {
2 const char* name;
3 int keysym;
4 } name2keysym_t;
5 static name2keysym_t name2keysym[]={
6 /* ascii */
7 { "space", 0x020},
8 { "exclam", 0x021},
9 { "quotedbl", 0x022},
10 { "numbersign", 0x023},
11 { "dollar", 0x024},
12 { "percent", 0x025},
13 { "ampersand", 0x026},
14 { "apostrophe", 0x027},
15 { "parenleft", 0x028},
16 { "parenright", 0x029},
17 { "asterisk", 0x02a},
18 { "plus", 0x02b},
19 { "comma", 0x02c},
20 { "minus", 0x02d},
21 { "period", 0x02e},
22 { "slash", 0x02f},
23 { "0", 0x030},
24 { "1", 0x031},
25 { "2", 0x032},
26 { "3", 0x033},
27 { "4", 0x034},
28 { "5", 0x035},
29 { "6", 0x036},
30 { "7", 0x037},
31 { "8", 0x038},
32 { "9", 0x039},
33 { "colon", 0x03a},
34 { "semicolon", 0x03b},
35 { "less", 0x03c},
36 { "equal", 0x03d},
37 { "greater", 0x03e},
38 { "question", 0x03f},
39 { "at", 0x040},
40 { "A", 0x041},
41 { "B", 0x042},
42 { "C", 0x043},
43 { "D", 0x044},
44 { "E", 0x045},
45 { "F", 0x046},
46 { "G", 0x047},
47 { "H", 0x048},
48 { "I", 0x049},
49 { "J", 0x04a},
50 { "K", 0x04b},
51 { "L", 0x04c},
52 { "M", 0x04d},
53 { "N", 0x04e},
54 { "O", 0x04f},
55 { "P", 0x050},
56 { "Q", 0x051},
57 { "R", 0x052},
58 { "S", 0x053},
59 { "T", 0x054},
60 { "U", 0x055},
61 { "V", 0x056},
62 { "W", 0x057},
63 { "X", 0x058},
64 { "Y", 0x059},
65 { "Z", 0x05a},
66 { "bracketleft", 0x05b},
67 { "backslash", 0x05c},
68 { "bracketright", 0x05d},
69 { "asciicircum", 0x05e},
70 { "underscore", 0x05f},
71 { "grave", 0x060},
72 { "a", 0x061},
73 { "b", 0x062},
74 { "c", 0x063},
75 { "d", 0x064},
76 { "e", 0x065},
77 { "f", 0x066},
78 { "g", 0x067},
79 { "h", 0x068},
80 { "i", 0x069},
81 { "j", 0x06a},
82 { "k", 0x06b},
83 { "l", 0x06c},
84 { "m", 0x06d},
85 { "n", 0x06e},
86 { "o", 0x06f},
87 { "p", 0x070},
88 { "q", 0x071},
89 { "r", 0x072},
90 { "s", 0x073},
91 { "t", 0x074},
92 { "u", 0x075},
93 { "v", 0x076},
94 { "w", 0x077},
95 { "x", 0x078},
96 { "y", 0x079},
97 { "z", 0x07a},
98 { "braceleft", 0x07b},
99 { "bar", 0x07c},
100 { "braceright", 0x07d},
101 { "asciitilde", 0x07e},
103 /* latin 1 extensions */
104 { "nobreakspace", 0x0a0},
105 { "exclamdown", 0x0a1},
106 { "cent", 0x0a2},
107 { "sterling", 0x0a3},
108 { "currency", 0x0a4},
109 { "yen", 0x0a5},
110 { "brokenbar", 0x0a6},
111 { "section", 0x0a7},
112 { "diaeresis", 0x0a8},
113 { "copyright", 0x0a9},
114 { "ordfeminine", 0x0aa},
115 { "guillemotleft", 0x0ab},
116 { "notsign", 0x0ac},
117 { "hyphen", 0x0ad},
118 { "registered", 0x0ae},
119 { "macron", 0x0af},
120 { "degree", 0x0b0},
121 { "plusminus", 0x0b1},
122 { "twosuperior", 0x0b2},
123 { "threesuperior", 0x0b3},
124 { "acute", 0x0b4},
125 { "mu", 0x0b5},
126 { "paragraph", 0x0b6},
127 { "periodcentered", 0x0b7},
128 { "cedilla", 0x0b8},
129 { "onesuperior", 0x0b9},
130 { "masculine", 0x0ba},
131 { "guillemotright", 0x0bb},
132 { "onequarter", 0x0bc},
133 { "onehalf", 0x0bd},
134 { "threequarters", 0x0be},
135 { "questiondown", 0x0bf},
136 { "Agrave", 0x0c0},
137 { "Aacute", 0x0c1},
138 { "Acircumflex", 0x0c2},
139 { "Atilde", 0x0c3},
140 { "Adiaeresis", 0x0c4},
141 { "Aring", 0x0c5},
142 { "AE", 0x0c6},
143 { "Ccedilla", 0x0c7},
144 { "Egrave", 0x0c8},
145 { "Eacute", 0x0c9},
146 { "Ecircumflex", 0x0ca},
147 { "Ediaeresis", 0x0cb},
148 { "Igrave", 0x0cc},
149 { "Iacute", 0x0cd},
150 { "Icircumflex", 0x0ce},
151 { "Idiaeresis", 0x0cf},
152 { "ETH", 0x0d0},
153 { "Eth", 0x0d0},
154 { "Ntilde", 0x0d1},
155 { "Ograve", 0x0d2},
156 { "Oacute", 0x0d3},
157 { "Ocircumflex", 0x0d4},
158 { "Otilde", 0x0d5},
159 { "Odiaeresis", 0x0d6},
160 { "multiply", 0x0d7},
161 { "Ooblique", 0x0d8},
162 { "Oslash", 0x0d8},
163 { "Ugrave", 0x0d9},
164 { "Uacute", 0x0da},
165 { "Ucircumflex", 0x0db},
166 { "Udiaeresis", 0x0dc},
167 { "Yacute", 0x0dd},
168 { "THORN", 0x0de},
169 { "Thorn", 0x0de},
170 { "ssharp", 0x0df},
171 { "agrave", 0x0e0},
172 { "aacute", 0x0e1},
173 { "acircumflex", 0x0e2},
174 { "atilde", 0x0e3},
175 { "adiaeresis", 0x0e4},
176 { "aring", 0x0e5},
177 { "ae", 0x0e6},
178 { "ccedilla", 0x0e7},
179 { "egrave", 0x0e8},
180 { "eacute", 0x0e9},
181 { "ecircumflex", 0x0ea},
182 { "ediaeresis", 0x0eb},
183 { "igrave", 0x0ec},
184 { "iacute", 0x0ed},
185 { "icircumflex", 0x0ee},
186 { "idiaeresis", 0x0ef},
187 { "eth", 0x0f0},
188 { "ntilde", 0x0f1},
189 { "ograve", 0x0f2},
190 { "oacute", 0x0f3},
191 { "ocircumflex", 0x0f4},
192 { "otilde", 0x0f5},
193 { "odiaeresis", 0x0f6},
194 { "division", 0x0f7},
195 { "oslash", 0x0f8},
196 { "ooblique", 0x0f8},
197 { "ugrave", 0x0f9},
198 { "uacute", 0x0fa},
199 { "ucircumflex", 0x0fb},
200 { "udiaeresis", 0x0fc},
201 { "yacute", 0x0fd},
202 { "thorn", 0x0fe},
203 { "ydiaeresis", 0x0ff},
204 {"EuroSign", 0x20ac}, /* XK_EuroSign */
206 /* modifiers */
207 {"Control_L", 0xffe3}, /* XK_Control_L */
208 {"Control_R", 0xffe4}, /* XK_Control_R */
209 {"Alt_L", 0xffe9}, /* XK_Alt_L */
210 {"Alt_R", 0xffea}, /* XK_Alt_R */
211 {"Caps_Lock", 0xffe5}, /* XK_Caps_Lock */
212 {"Meta_L", 0xffe7}, /* XK_Meta_L */
213 {"Meta_R", 0xffe8}, /* XK_Meta_R */
214 {"Shift_L", 0xffe1}, /* XK_Shift_L */
215 {"Shift_R", 0xffe2}, /* XK_Shift_R */
216 {"Super_L", 0xffeb}, /* XK_Super_L */
217 {"Super_R", 0xffec}, /* XK_Super_R */
219 /* special keys */
220 {"BackSpace", 0xff08}, /* XK_BackSpace */
221 {"Tab", 0xff09}, /* XK_Tab */
222 {"Return", 0xff0d}, /* XK_Return */
223 {"Right", 0xff53}, /* XK_Right */
224 {"Left", 0xff51}, /* XK_Left */
225 {"Up", 0xff52}, /* XK_Up */
226 {"Down", 0xff54}, /* XK_Down */
227 {"Page_Down", 0xff56}, /* XK_Page_Down */
228 {"Page_Up", 0xff55}, /* XK_Page_Up */
229 {"Insert", 0xff63}, /* XK_Insert */
230 {"Delete", 0xffff}, /* XK_Delete */
231 {"Home", 0xff50}, /* XK_Home */
232 {"End", 0xff57}, /* XK_End */
233 {"Scroll_Lock", 0xff14}, /* XK_Scroll_Lock */
234 {"KP_Home", 0xff95},
235 {"KP_Left", 0xff96},
236 {"KP_Up", 0xff97},
237 {"KP_Right", 0xff98},
238 {"KP_Down", 0xff99},
239 {"KP_Prior", 0xff9a},
240 {"KP_Page_Up", 0xff9a},
241 {"KP_Next", 0xff9b},
242 {"KP_Page_Down", 0xff9b},
243 {"KP_End", 0xff9c},
244 {"KP_Begin", 0xff9d},
245 {"KP_Insert", 0xff9e},
246 {"KP_Delete", 0xff9f},
247 {"F1", 0xffbe}, /* XK_F1 */
248 {"F2", 0xffbf}, /* XK_F2 */
249 {"F3", 0xffc0}, /* XK_F3 */
250 {"F4", 0xffc1}, /* XK_F4 */
251 {"F5", 0xffc2}, /* XK_F5 */
252 {"F6", 0xffc3}, /* XK_F6 */
253 {"F7", 0xffc4}, /* XK_F7 */
254 {"F8", 0xffc5}, /* XK_F8 */
255 {"F9", 0xffc6}, /* XK_F9 */
256 {"F10", 0xffc7}, /* XK_F10 */
257 {"F11", 0xffc8}, /* XK_F11 */
258 {"F12", 0xffc9}, /* XK_F12 */
259 {"F13", 0xffca}, /* XK_F13 */
260 {"F14", 0xffcb}, /* XK_F14 */
261 {"F15", 0xffcc}, /* XK_F15 */
262 {"Sys_Req", 0xff15}, /* XK_Sys_Req */
263 {"KP_0", 0xffb0}, /* XK_KP_0 */
264 {"KP_1", 0xffb1}, /* XK_KP_1 */
265 {"KP_2", 0xffb2}, /* XK_KP_2 */
266 {"KP_3", 0xffb3}, /* XK_KP_3 */
267 {"KP_4", 0xffb4}, /* XK_KP_4 */
268 {"KP_5", 0xffb5}, /* XK_KP_5 */
269 {"KP_6", 0xffb6}, /* XK_KP_6 */
270 {"KP_7", 0xffb7}, /* XK_KP_7 */
271 {"KP_8", 0xffb8}, /* XK_KP_8 */
272 {"KP_9", 0xffb9}, /* XK_KP_9 */
273 {"KP_Add", 0xffab}, /* XK_KP_Add */
274 {"KP_Separator", 0xffac},/* XK_KP_Separator */
275 {"KP_Decimal", 0xffae}, /* XK_KP_Decimal */
276 {"KP_Divide", 0xffaf}, /* XK_KP_Divide */
277 {"KP_Enter", 0xff8d}, /* XK_KP_Enter */
278 {"KP_Equal", 0xffbd}, /* XK_KP_Equal */
279 {"KP_Multiply", 0xffaa}, /* XK_KP_Multiply */
280 {"KP_Subtract", 0xffad}, /* XK_KP_Subtract */
281 {"help", 0xff6a}, /* XK_Help */
282 {"Menu", 0xff67}, /* XK_Menu */
283 {"Print", 0xff61}, /* XK_Print */
284 {"Mode_switch", 0xff7e}, /* XK_Mode_switch */
285 {"Num_Lock", 0xff7f}, /* XK_Num_Lock */
286 {"Pause", 0xff13}, /* XK_Pause */
287 {"Escape", 0xff1b}, /* XK_Escape */
289 /* localized keys */
290 {"BackApostrophe", 0xff21},
291 {"Muhenkan", 0xff22},
292 {"Katakana", 0xff25},
293 {"Zenkaku_Hankaku", 0xff29},
294 {"Henkan_Mode_Real", 0xff23},
295 {"Henkan_Mode_Ultra", 0xff3e},
296 {"backslash_ja", 0xffa5},
298 {0,0},
299 };