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,7 +406,7 @@ ifdef CONFIG_GDBSTUB
406 VL_OBJS+=gdbstub.o 406 VL_OBJS+=gdbstub.o
407 endif 407 endif
408 ifdef CONFIG_SDL 408 ifdef CONFIG_SDL
409 -VL_OBJS+=sdl.o 409 +VL_OBJS+=sdl.o x_keymap.o
410 endif 410 endif
411 VL_OBJS+=vnc.o 411 VL_OBJS+=vnc.o
412 ifdef CONFIG_COCOA 412 ifdef CONFIG_COCOA
@@ -122,88 +122,6 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) @@ -122,88 +122,6 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
122 122
123 #else 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 static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) 125 static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
208 { 126 {
209 int keycode; 127 int keycode;
@@ -216,7 +134,7 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev) @@ -216,7 +134,7 @@ static uint8_t sdl_keyevent_to_keycode(const SDL_KeyboardEvent *ev)
216 keycode -= 8; /* just an offset */ 134 keycode -= 8; /* just an offset */
217 } else if (keycode < 212) { 135 } else if (keycode < 212) {
218 /* use conversion table */ 136 /* use conversion table */
219 - keycode = x_keycode_to_pc_keycode[keycode - 97]; 137 + keycode = _translate_keycode(keycode - 97);
220 } else { 138 } else {
221 keycode = 0; 139 keycode = 0;
222 } 140 }
@@ -908,6 +908,9 @@ void cocoa_display_init(DisplayState *ds, int full_screen); @@ -908,6 +908,9 @@ void cocoa_display_init(DisplayState *ds, int full_screen);
908 /* vnc.c */ 908 /* vnc.c */
909 void vnc_display_init(DisplayState *ds, const char *display); 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 /* ide.c */ 914 /* ide.c */
912 #define MAX_DISKS 4 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 +}