Commit 6070dd07e91bc8621e506e80057bd07b5c76c970

Authored by ths
1 parent e6a71ae3

Split out SDL X keymap, by Bernhard Fischer.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2354 c046a42c-6fe2-441c-8c8c-71466251a162
Makefile.target
... ... @@ -406,7 +406,7 @@ ifdef CONFIG_GDBSTUB
406 406 VL_OBJS+=gdbstub.o
407 407 endif
408 408 ifdef CONFIG_SDL
409   -VL_OBJS+=sdl.o
  409 +VL_OBJS+=sdl.o x_keymap.o
410 410 endif
411 411 VL_OBJS+=vnc.o
412 412 ifdef CONFIG_COCOA
... ...
... ... @@ -122,88 +122,6 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
122 122  
123 123 #else
124 124  
125   -static const uint8_t x_keycode_to_pc_keycode[115] = {
126   - 0xc7, /* 97 Home */
127   - 0xc8, /* 98 Up */
128   - 0xc9, /* 99 PgUp */
129   - 0xcb, /* 100 Left */
130   - 0x4c, /* 101 KP-5 */
131   - 0xcd, /* 102 Right */
132   - 0xcf, /* 103 End */
133   - 0xd0, /* 104 Down */
134   - 0xd1, /* 105 PgDn */
135   - 0xd2, /* 106 Ins */
136   - 0xd3, /* 107 Del */
137   - 0x9c, /* 108 Enter */
138   - 0x9d, /* 109 Ctrl-R */
139   - 0x0, /* 110 Pause */
140   - 0xb7, /* 111 Print */
141   - 0xb5, /* 112 Divide */
142   - 0xb8, /* 113 Alt-R */
143   - 0xc6, /* 114 Break */
144   - 0x0, /* 115 */
145   - 0x0, /* 116 */
146   - 0x0, /* 117 */
147   - 0x0, /* 118 */
148   - 0x0, /* 119 */
149   - 0x0, /* 120 */
150   - 0x0, /* 121 */
151   - 0x0, /* 122 */
152   - 0x0, /* 123 */
153   - 0x0, /* 124 */
154   - 0x0, /* 125 */
155   - 0x0, /* 126 */
156   - 0x0, /* 127 */
157   - 0x0, /* 128 */
158   - 0x79, /* 129 Henkan */
159   - 0x0, /* 130 */
160   - 0x7b, /* 131 Muhenkan */
161   - 0x0, /* 132 */
162   - 0x7d, /* 133 Yen */
163   - 0x0, /* 134 */
164   - 0x0, /* 135 */
165   - 0x47, /* 136 KP_7 */
166   - 0x48, /* 137 KP_8 */
167   - 0x49, /* 138 KP_9 */
168   - 0x4b, /* 139 KP_4 */
169   - 0x4c, /* 140 KP_5 */
170   - 0x4d, /* 141 KP_6 */
171   - 0x4f, /* 142 KP_1 */
172   - 0x50, /* 143 KP_2 */
173   - 0x51, /* 144 KP_3 */
174   - 0x52, /* 145 KP_0 */
175   - 0x53, /* 146 KP_. */
176   - 0x47, /* 147 KP_HOME */
177   - 0x48, /* 148 KP_UP */
178   - 0x49, /* 149 KP_PgUp */
179   - 0x4b, /* 150 KP_Left */
180   - 0x4c, /* 151 KP_ */
181   - 0x4d, /* 152 KP_Right */
182   - 0x4f, /* 153 KP_End */
183   - 0x50, /* 154 KP_Down */
184   - 0x51, /* 155 KP_PgDn */
185   - 0x52, /* 156 KP_Ins */
186   - 0x53, /* 157 KP_Del */
187   - 0x0, /* 158 */
188   - 0x0, /* 159 */
189   - 0x0, /* 160 */
190   - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 170 */
191   - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 180 */
192   - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 190 */
193   - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 200 */
194   - 0x0, /* 201 */
195   - 0x0, /* 202 */
196   - 0x0, /* 203 */
197   - 0x0, /* 204 */
198   - 0x0, /* 205 */
199   - 0x0, /* 206 */
200   - 0x0, /* 207 */
201   - 0x70, /* 208 Hiragana_Katakana */
202   - 0x0, /* 209 */
203   - 0x0, /* 210 */
204   - 0x73, /* 211 backslash */
205   -};
206   -
207 125 static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
208 126 {
209 127 int keycode;
... ... @@ -216,7 +134,7 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
216 134 keycode -= 8; /* just an offset */
217 135 } else if (keycode < 212) {
218 136 /* use conversion table */
219   - keycode = x_keycode_to_pc_keycode[keycode - 97];
  137 + keycode = _translate_keycode(keycode - 97);
220 138 } else {
221 139 keycode = 0;
222 140 }
... ...
... ... @@ -908,6 +908,9 @@ void cocoa_display_init(DisplayState *ds, int full_screen);
908 908 /* vnc.c */
909 909 void vnc_display_init(DisplayState *ds, const char *display);
910 910  
  911 +/* x_keymap.c */
  912 +extern uint8_t _translate_keycode(const int key);
  913 +
911 914 /* ide.c */
912 915 #define MAX_DISKS 4
913 916  
... ...
x_keymap.c 0 → 100644
  1 +/*
  2 + * QEMU SDL display driver
  3 + *
  4 + * Copyright (c) 2003 Fabrice Bellard
  5 + *
  6 + * Permission is hereby granted, free of charge, to any person obtaining a copy
  7 + * of this software and associated documentation files (the "Software"), to deal
  8 + * in the Software without restriction, including without limitation the rights
  9 + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10 + * copies of the Software, and to permit persons to whom the Software is
  11 + * furnished to do so, subject to the following conditions:
  12 + *
  13 + * The above copyright notice and this permission notice shall be included in
  14 + * all copies or substantial portions of the Software.
  15 + *
  16 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17 + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18 + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  19 + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20 + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21 + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22 + * THE SOFTWARE.
  23 + */
  24 +#include "vl.h"
  25 +static const uint8_t x_keycode_to_pc_keycode[115] = {
  26 + 0xc7, /* 97 Home */
  27 + 0xc8, /* 98 Up */
  28 + 0xc9, /* 99 PgUp */
  29 + 0xcb, /* 100 Left */
  30 + 0x4c, /* 101 KP-5 */
  31 + 0xcd, /* 102 Right */
  32 + 0xcf, /* 103 End */
  33 + 0xd0, /* 104 Down */
  34 + 0xd1, /* 105 PgDn */
  35 + 0xd2, /* 106 Ins */
  36 + 0xd3, /* 107 Del */
  37 + 0x9c, /* 108 Enter */
  38 + 0x9d, /* 109 Ctrl-R */
  39 + 0x0, /* 110 Pause */
  40 + 0xb7, /* 111 Print */
  41 + 0xb5, /* 112 Divide */
  42 + 0xb8, /* 113 Alt-R */
  43 + 0xc6, /* 114 Break */
  44 + 0x0, /* 115 */
  45 + 0x0, /* 116 */
  46 + 0x0, /* 117 */
  47 + 0x0, /* 118 */
  48 + 0x0, /* 119 */
  49 + 0x0, /* 120 */
  50 + 0x0, /* 121 */
  51 + 0x0, /* 122 */
  52 + 0x0, /* 123 */
  53 + 0x0, /* 124 */
  54 + 0x0, /* 125 */
  55 + 0x0, /* 126 */
  56 + 0x0, /* 127 */
  57 + 0x0, /* 128 */
  58 + 0x79, /* 129 Henkan */
  59 + 0x0, /* 130 */
  60 + 0x7b, /* 131 Muhenkan */
  61 + 0x0, /* 132 */
  62 + 0x7d, /* 133 Yen */
  63 + 0x0, /* 134 */
  64 + 0x0, /* 135 */
  65 + 0x47, /* 136 KP_7 */
  66 + 0x48, /* 137 KP_8 */
  67 + 0x49, /* 138 KP_9 */
  68 + 0x4b, /* 139 KP_4 */
  69 + 0x4c, /* 140 KP_5 */
  70 + 0x4d, /* 141 KP_6 */
  71 + 0x4f, /* 142 KP_1 */
  72 + 0x50, /* 143 KP_2 */
  73 + 0x51, /* 144 KP_3 */
  74 + 0x52, /* 145 KP_0 */
  75 + 0x53, /* 146 KP_. */
  76 + 0x47, /* 147 KP_HOME */
  77 + 0x48, /* 148 KP_UP */
  78 + 0x49, /* 149 KP_PgUp */
  79 + 0x4b, /* 150 KP_Left */
  80 + 0x4c, /* 151 KP_ */
  81 + 0x4d, /* 152 KP_Right */
  82 + 0x4f, /* 153 KP_End */
  83 + 0x50, /* 154 KP_Down */
  84 + 0x51, /* 155 KP_PgDn */
  85 + 0x52, /* 156 KP_Ins */
  86 + 0x53, /* 157 KP_Del */
  87 + 0x0, /* 158 */
  88 + 0x0, /* 159 */
  89 + 0x0, /* 160 */
  90 + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 170 */
  91 + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 180 */
  92 + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 190 */
  93 + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, /* 200 */
  94 + 0x0, /* 201 */
  95 + 0x0, /* 202 */
  96 + 0x0, /* 203 */
  97 + 0x0, /* 204 */
  98 + 0x0, /* 205 */
  99 + 0x0, /* 206 */
  100 + 0x0, /* 207 */
  101 + 0x70, /* 208 Hiragana_Katakana */
  102 + 0x0, /* 209 */
  103 + 0x0, /* 210 */
  104 + 0x73, /* 211 backslash */
  105 +};
  106 +
  107 +uint8_t _translate_keycode(const int key)
  108 +{
  109 + return x_keycode_to_pc_keycode[key];
  110 +}
... ...