1 #if !defined(WINKEYBD_H) 2 #define WINKEYBD_H 3 /* 4 *Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved. 5 * 6 *Permission is hereby granted, free of charge, to any person obtaining 7 * a copy of this software and associated documentation files (the 8 *"Software"), to deal in the Software without restriction, including 9 *without limitation the rights to use, copy, modify, merge, publish, 10 *distribute, sublicense, and/or sell copies of the Software, and to 11 *permit persons to whom the Software is furnished to do so, subject to 12 *the following conditions: 13 * 14 *The above copyright notice and this permission notice shall be 15 *included in all copies or substantial portions of the Software. 16 * 17 *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 *NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR 21 *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 22 *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 * 25 *Except as contained in this notice, the name of the XFree86 Project 26 *shall not be used in advertising or otherwise to promote the sale, use 27 *or other dealings in this Software without prior written authorization 28 *from the XFree86 Project. 29 * 30 * Authors: Harold L Hunt II 31 */ 32 33 /* 34 * We need symbols for the scan codes of keys. 35 */ 36 #include "winkeynames.h" 37 38 #define VK_FN 0xFF 39 40 #define WIN_KEYMAP_COLS 3 41 42 /* Rows 160 through 165 correspond to software-generated codes, which 43 * may not be associated with the appropriate scan code. 44 */ 45 const int 46 g_iKeyMap[] = { 47 /* count Windows VK, ASCII, ASCII when extended VK */ 48 /* 0 */ 0, 0, 0, 49 /* 1 */ 0, 0, 0, 50 /* 2 */ 0, 0, 0, 51 /* 3 */ VK_CANCEL, 0, KEY_Break, 52 /* 4 */ 0, 0, 0, 53 /* 5 */ 0, 0, 0, 54 /* 6 */ 0, 0, 0, 55 /* 7 */ 0, 0, 0, 56 /* 8 */ 0, 0, 0, 57 /* 9 */ 0, 0, 0, 58 /* 10 */ 0, 0, 0, 59 /* 11 */ 0, 0, 0, 60 /* 12 */ 0, 0, 0, 61 /* 13 */ VK_RETURN, 0, KEY_KP_Enter, 62 /* 14 */ 0, 0, 0, 63 /* 15 */ 0, 0, 0, 64 /* 16 */ VK_SHIFT, 0, 0, 65 /* 17 */ VK_CONTROL, 0, KEY_RCtrl, 66 /* 18 */ VK_MENU, 0, KEY_AltLang, 67 /* 19 */ VK_PAUSE, KEY_Pause, 0, 68 /* 20 */ 0, 0, 0, 69 /* 21 */ 0, 0, 0, 70 /* 22 */ 0, 0, 0, 71 /* 23 */ 0, 0, 0, 72 /* 24 */ 0, 0, 0, 73 /* 25 */ 0, 0, 0, 74 /* 26 */ 0, 0, 0, 75 /* 27 */ 0, 0, 0, 76 /* 28 */ 0, 0, 0, 77 /* 29 */ 0, 0, 0, 78 /* 30 */ 0, 0, 0, 79 /* 31 */ 0, 0, 0, 80 /* 32 */ 0, 0, 0, 81 /* 33 */ VK_PRIOR, 0, KEY_PgUp, 82 /* 34 */ VK_NEXT, 0, KEY_PgDown, 83 /* 35 */ VK_END, 0, KEY_End, 84 /* 36 */ VK_HOME, 0, KEY_Home, 85 /* 37 */ VK_LEFT, 0, KEY_Left, 86 /* 38 */ VK_UP, 0, KEY_Up, 87 /* 39 */ VK_RIGHT, 0, KEY_Right, 88 /* 40 */ VK_DOWN, 0, KEY_Down, 89 /* 41 */ 0, 0, 0, 90 /* 42 */ 0, 0, 0, 91 /* 43 */ 0, 0, 0, 92 /* 44 */ VK_SNAPSHOT, 0, KEY_Print, 93 /* 45 */ VK_INSERT, 0, KEY_Insert, 94 /* 46 */ VK_DELETE, 0, KEY_Delete, 95 /* 47 */ 0, 0, 0, 96 /* 48 */ 0, 0, 0, 97 /* 49 */ 0, 0, 0, 98 /* 50 */ 0, 0, 0, 99 /* 51 */ 0, 0, 0, 100 /* 52 */ 0, 0, 0, 101 /* 53 */ 0, 0, 0, 102 /* 54 */ 0, 0, 0, 103 /* 55 */ 0, 0, 0, 104 /* 56 */ 0, 0, 0, 105 /* 57 */ 0, 0, 0, 106 /* 58 */ 0, 0, 0, 107 /* 59 */ 0, 0, 0, 108 /* 60 */ 0, 0, 0, 109 /* 61 */ 0, 0, 0, 110 /* 62 */ 0, 0, 0, 111 /* 63 */ 0, 0, 0, 112 /* 64 */ 0, 0, 0, 113 /* 65 */ 0, 0, 0, 114 /* 66 */ 0, 0, 0, 115 /* 67 */ 0, 0, 0, 116 /* 68 */ 0, 0, 0, 117 /* 69 */ 0, 0, 0, 118 /* 70 */ 0, 0, 0, 119 /* 71 */ 0, 0, 0, 120 /* 72 */ 0, 0, 0, 121 /* 73 */ 0, 0, 0, 122 /* 74 */ 0, 0, 0, 123 /* 75 */ 0, 0, 0, 124 /* 76 */ 0, 0, 0, 125 /* 77 */ 0, 0, 0, 126 /* 78 */ 0, 0, 0, 127 /* 79 */ 0, 0, 0, 128 /* 80 */ 0, 0, 0, 129 /* 81 */ 0, 0, 0, 130 /* 82 */ 0, 0, 0, 131 /* 83 */ 0, 0, 0, 132 /* 84 */ 0, 0, 0, 133 /* 85 */ 0, 0, 0, 134 /* 86 */ 0, 0, 0, 135 /* 87 */ 0, 0, 0, 136 /* 88 */ 0, 0, 0, 137 /* 89 */ 0, 0, 0, 138 /* 90 */ 0, 0, 0, 139 /* 91 */ VK_LWIN, KEY_LMeta, 0, 140 /* 92 */ VK_RWIN, KEY_RMeta, 0, 141 /* 93 */ VK_APPS, KEY_Menu, 0, 142 /* 94 */ 0, 0, 0, 143 /* 95 */ 0, 0, 0, 144 /* 96 */ 0, 0, 0, 145 /* 97 */ 0, 0, 0, 146 /* 98 */ 0, 0, 0, 147 /* 99 */ 0, 0, 0, 148 /* 100 */ 0, 0, 0, 149 /* 101 */ 0, 0, 0, 150 /* 102 */ 0, 0, 0, 151 /* 103 */ 0, 0, 0, 152 /* 104 */ 0, 0, 0, 153 /* 105 */ 0, 0, 0, 154 /* 106 */ 0, 0, 0, 155 /* 107 */ 0, 0, 0, 156 /* 108 */ 0, 0, 0, 157 /* 109 */ 0, 0, 0, 158 /* 110 */ 0, 0, 0, 159 /* 111 */ VK_DIVIDE, 0, KEY_KP_Divide, 160 /* 112 */ 0, 0, 0, 161 /* 113 */ 0, 0, 0, 162 /* 114 */ 0, 0, 0, 163 /* 115 */ 0, 0, 0, 164 /* 116 */ 0, 0, 0, 165 /* 117 */ 0, 0, 0, 166 /* 118 */ 0, 0, 0, 167 /* 119 */ 0, 0, 0, 168 /* 120 */ 0, 0, 0, 169 /* 121 */ 0, 0, 0, 170 /* 122 */ 0, 0, 0, 171 /* 123 */ 0, 0, 0, 172 /* 124 */ 0, 0, 0, 173 /* 125 */ 0, 0, 0, 174 /* 126 */ 0, 0, 0, 175 /* 127 */ 0, 0, 0, 176 /* 128 */ 0, 0, 0, 177 /* 129 */ 0, 0, 0, 178 /* 130 */ 0, 0, 0, 179 /* 131 */ 0, 0, 0, 180 /* 132 */ 0, 0, 0, 181 /* 133 */ 0, 0, 0, 182 /* 134 */ 0, 0, 0, 183 /* 135 */ 0, 0, 0, 184 /* 136 */ 0, 0, 0, 185 /* 137 */ 0, 0, 0, 186 /* 138 */ 0, 0, 0, 187 /* 139 */ 0, 0, 0, 188 /* 140 */ 0, 0, 0, 189 /* 141 */ 0, 0, 0, 190 /* 142 */ 0, 0, 0, 191 /* 143 */ 0, 0, 0, 192 /* 144 */ 0, 0, 0, 193 /* 145 */ 0, 0, 0, 194 /* 146 */ 0, 0, 0, 195 /* 147 */ 0, 0, 0, 196 /* 148 */ 0, 0, 0, 197 /* 149 */ 0, 0, 0, 198 /* 150 */ 0, 0, 0, 199 /* 151 */ 0, 0, 0, 200 /* 152 */ 0, 0, 0, 201 /* 153 */ 0, 0, 0, 202 /* 154 */ 0, 0, 0, 203 /* 155 */ 0, 0, 0, 204 /* 156 */ 0, 0, 0, 205 /* 157 */ 0, 0, 0, 206 /* 158 */ 0, 0, 0, 207 /* 159 */ 0, 0, 0, 208 /* 160 */ VK_LSHIFT, KEY_ShiftL, 0, 209 /* 161 */ VK_RSHIFT, KEY_ShiftR, 0, 210 /* 162 */ VK_LCONTROL, KEY_LCtrl, 0, 211 /* 163 */ VK_RCONTROL, KEY_RCtrl, 0, 212 /* 164 */ VK_LMENU, KEY_Alt, 0, 213 /* 165 */ VK_RMENU, KEY_AltLang, 0, 214 /* 166 */ 0, 0, 0, 215 /* 167 */ 0, 0, 0, 216 /* 168 */ 0, 0, 0, 217 /* 169 */ 0, 0, 0, 218 /* 170 */ 0, 0, 0, 219 /* 171 */ 0, 0, 0, 220 /* 172 */ 0, 0, 0, 221 /* 173 */ VK_VOLUME_MUTE, 0, KEY_Mute, 222 /* 174 */ VK_VOLUME_DOWN, 0, KEY_AudioLower, 223 /* 175 */ VK_VOLUME_UP, 0, KEY_AudioRaise, 224 /* 176 */ VK_MEDIA_NEXT_TRACK, 0, KEY_NEXTSONG, 225 /* 177 */ VK_MEDIA_PREV_TRACK, 0, KEY_PREVIOUSSONG, 226 /* 178 */ VK_MEDIA_STOP, 0, KEY_STOPCD, 227 /* 179 */ VK_MEDIA_PLAY_PAUSE, 0, KEY_PLAYPAUSE, 228 /* 180 */ 0, 0, 0, 229 /* 181 */ 0, 0, 0, 230 /* 182 */ 0, 0, 0, 231 /* 183 */ 0, 0, 0, 232 /* 184 */ 0, 0, 0, 233 /* 185 */ 0, 0, 0, 234 /* 186 */ 0, 0, 0, 235 /* 187 */ 0, 0, 0, 236 /* 188 */ 0, 0, 0, 237 /* 189 */ 0, 0, 0, 238 /* 190 */ 0, 0, 0, 239 /* 191 */ 0, 0, 0, 240 /* 192 */ 0, 0, 0, 241 /* 193 */ 0, 0, 0, 242 /* 194 */ 0, 0, 0, 243 /* 195 */ 0, 0, 0, 244 /* 196 */ 0, 0, 0, 245 /* 197 */ 0, 0, 0, 246 /* 198 */ 0, 0, 0, 247 /* 199 */ 0, 0, 0, 248 /* 200 */ 0, 0, 0, 249 /* 201 */ 0, 0, 0, 250 /* 202 */ 0, 0, 0, 251 /* 203 */ 0, 0, 0, 252 /* 204 */ 0, 0, 0, 253 /* 205 */ 0, 0, 0, 254 /* 206 */ 0, 0, 0, 255 /* 207 */ 0, 0, 0, 256 /* 208 */ 0, 0, 0, 257 /* 209 */ 0, 0, 0, 258 /* 210 */ 0, 0, 0, 259 /* 211 */ 0, 0, 0, 260 /* 212 */ 0, 0, 0, 261 /* 213 */ 0, 0, 0, 262 /* 214 */ 0, 0, 0, 263 /* 215 */ 0, 0, 0, 264 /* 216 */ 0, 0, 0, 265 /* 217 */ 0, 0, 0, 266 /* 218 */ 0, 0, 0, 267 /* 219 */ 0, 0, 0, 268 /* 220 */ 0, 0, 0, 269 /* 221 */ 0, 0, 0, 270 /* 222 */ 0, 0, 0, 271 /* 223 */ VK_OEM_8, 0, KEY_RCtrl, 272 /* at least on Canadian Multilingual Standard layout */ 273 /* 224 */ 0, 0, 0, 274 /* 225 */ 0, 0, 0, 275 /* 226 */ 0, 0, 0, 276 /* 227 */ 0, 0, 0, 277 /* 228 */ 0, 0, 0, 278 /* 229 */ 0, 0, 0, 279 /* 230 */ 0, 0, 0, 280 /* 231 */ 0, 0, 0, 281 /* 232 */ 0, 0, 0, 282 /* 233 */ 0, 0, 0, 283 /* 234 */ 0, 0, 0, 284 /* 235 */ 0, 0, 0, 285 /* 236 */ 0, 0, 0, 286 /* 237 */ 0, 0, 0, 287 /* 238 */ 0, 0, 0, 288 /* 239 */ 0, 0, 0, 289 /* 240 */ 0, 0, 0, 290 /* 241 */ 0, 0, 0, 291 /* 242 */ 0, 0, 0, 292 /* 243 */ 0, 0, 0, 293 /* 244 */ 0, 0, 0, 294 /* 245 */ 0, 0, 0, 295 /* 246 */ 0, 0, 0, 296 /* 247 */ 0, 0, 0, 297 /* 248 */ 0, 0, 0, 298 /* 249 */ 0, 0, 0, 299 /* 250 */ 0, 0, 0, 300 /* 251 */ 0, 0, 0, 301 /* 252 */ 0, 0, 0, 302 /* 253 */ 0, 0, 0, 303 /* 254 */ 0, 0, 0, 304 /* 255 */ VK_FN, 0, KEY_Fn 305 /* Most keyboards don't generate a scancode for Fn, but a few do... */ 306 }; 307 308 #endif /* WINKEYBD_H */ 309