399 lines
9.7 KiB
C
399 lines
9.7 KiB
C
/*
|
|
*Copyright (C) 1994-2000 The XFree86 Project, Inc. All Rights Reserved.
|
|
*
|
|
*Permission is hereby granted, free of charge, to any person obtaining
|
|
* a copy of this software and associated documentation files (the
|
|
*"Software"), to deal in the Software without restriction, including
|
|
*without limitation the rights to use, copy, modify, merge, publish,
|
|
*distribute, sublicense, and/or sell copies of the Software, and to
|
|
*permit persons to whom the Software is furnished to do so, subject to
|
|
*the following conditions:
|
|
*
|
|
*The above copyright notice and this permission notice shall be
|
|
*included in all copies or substantial portions of the Software.
|
|
*
|
|
*THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
*EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
*MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
*NONINFRINGEMENT. IN NO EVENT SHALL THE XFREE86 PROJECT BE LIABLE FOR
|
|
*ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
|
*CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
*WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*
|
|
*Except as contained in this notice, the name of the XFree86 Project
|
|
*shall not be used in advertising or otherwise to promote the sale, use
|
|
*or other dealings in this Software without prior written authorization
|
|
*from the XFree86 Project.
|
|
*
|
|
* Authors: Harold L Hunt II
|
|
*/
|
|
/* $XFree86$ */
|
|
|
|
/*
|
|
* We need symbols for the scan codes of keys.
|
|
*/
|
|
#include "../xfree86/common/atKeynames.h"
|
|
|
|
|
|
/*
|
|
* Include the standard XFree86 ASCII keymap.
|
|
*
|
|
* This header declares a static KeySym array called 'map'.
|
|
*/
|
|
#include "../xfree86/common/xf86Keymap.h"
|
|
|
|
|
|
#if WIN_NEW_KEYBOARD_SUPPORT
|
|
|
|
/* Define the keymap structure */
|
|
typedef struct
|
|
{
|
|
DWORD dwVirtualKey;
|
|
DWORD dwXKey;
|
|
} winKeymappingRec, *winKeymappingPtr;
|
|
|
|
static const winKeymappingRec
|
|
winKeymap[] = {
|
|
{VK_BACK, XK_BackSpace},
|
|
{VK_TAB, XK_Tab},
|
|
{VK_CLEAR, XK_Clear},
|
|
{VK_RETURN, XK_Return},
|
|
{VK_LSHIFT, XK_Shift_L},
|
|
{VK_RSHIFT, XK_Shift_R},
|
|
{VK_SHIFT, XK_Shift_L},
|
|
{VK_LCONTROL, XK_Control_L},
|
|
{VK_RCONTROL, XK_Control_R},
|
|
{VK_CONTROL, XK_Control_L},
|
|
{VK_LMENU, XK_Alt_L},
|
|
{VK_RMENU, XK_Alt_R},
|
|
{VK_MENU, XK_Alt_L},
|
|
{VK_PAUSE, XK_Pause},
|
|
{VK_CAPITAL, XK_Caps_Lock},
|
|
{VK_ESCAPE, XK_Escape},
|
|
{VK_SPACE, XK_space},
|
|
{VK_PRIOR, XK_Page_Up},
|
|
{VK_NEXT, XK_Page_Down},
|
|
{VK_END, XK_End},
|
|
{VK_HOME, XK_Home},
|
|
{VK_LEFT, XK_Left},
|
|
{VK_UP, XK_Up},
|
|
{VK_RIGHT, XK_Right},
|
|
{VK_DOWN, XK_Down},
|
|
{VK_SELECT, XK_Select},
|
|
{VK_EXECUTE, XK_Execute},
|
|
{VK_SNAPSHOT, XK_Print},
|
|
{VK_INSERT, XK_Insert},
|
|
{VK_DELETE, XK_Delete},
|
|
{VK_HELP, XK_Help},
|
|
{VK_NUMPAD0, XK_KP_0},
|
|
{VK_NUMPAD1, XK_KP_1},
|
|
{VK_NUMPAD2, XK_KP_2},
|
|
{VK_NUMPAD3, XK_KP_3},
|
|
{VK_NUMPAD4, XK_KP_4},
|
|
{VK_NUMPAD5, XK_KP_5},
|
|
{VK_NUMPAD6, XK_KP_6},
|
|
{VK_NUMPAD7, XK_KP_7},
|
|
{VK_NUMPAD8, XK_KP_8},
|
|
{VK_NUMPAD9, XK_KP_9},
|
|
{VK_MULTIPLY, XK_KP_Multiply},
|
|
{VK_ADD, XK_KP_Add},
|
|
{VK_SEPARATOR, XK_KP_Separator}, // often comma
|
|
{VK_SUBTRACT, XK_KP_Subtract},
|
|
{VK_DECIMAL, XK_KP_Decimal},
|
|
{VK_DIVIDE, XK_KP_Divide},
|
|
{VK_F1, XK_F1},
|
|
{VK_F2, XK_F2},
|
|
{VK_F3, XK_F3},
|
|
{VK_F4, XK_F4},
|
|
{VK_F5, XK_F5},
|
|
{VK_F6, XK_F6},
|
|
{VK_F7, XK_F7},
|
|
{VK_F8, XK_F8},
|
|
{VK_F9, XK_F9},
|
|
{VK_F10, XK_F10},
|
|
{VK_F11, XK_F11},
|
|
{VK_F12, XK_F12},
|
|
{VK_F13, XK_F13},
|
|
{VK_F14, XK_F14},
|
|
{VK_F15, XK_F15},
|
|
{VK_F16, XK_F16},
|
|
{VK_F17, XK_F17},
|
|
{VK_F18, XK_F18},
|
|
{VK_F19, XK_F19},
|
|
{VK_F20, XK_F20},
|
|
{VK_F21, XK_F21},
|
|
{VK_F22, XK_F22},
|
|
{VK_F23, XK_F23},
|
|
{VK_F24, XK_F24},
|
|
{VK_NUMLOCK, XK_Num_Lock},
|
|
{VK_SCROLL, XK_Scroll_Lock}
|
|
};
|
|
|
|
static int g_winKeymapEntries = sizeof (winKeymap) / sizeof (winKeymappingRec);
|
|
|
|
#else /* WIN_NEW_KEYBOARD_SUPPORT */
|
|
|
|
#define WIN_KEYMAP_COLS 3
|
|
|
|
const int
|
|
g_iKeyMap [] = {
|
|
/* count Windows VK, ASCII, ASCII when extended VK */
|
|
/* 0 */ 0, 0, 0,
|
|
/* 1 */ 0, 0, 0,
|
|
/* 2 */ 0, 0, 0,
|
|
/* 3 */ VK_CANCEL, 0, KEY_Break,
|
|
/* 4 */ 0, 0, 0,
|
|
/* 5 */ 0, 0, 0,
|
|
/* 6 */ 0, 0, 0,
|
|
/* 7 */ 0, 0, 0,
|
|
/* 8 */ 0, 0, 0,
|
|
/* 9 */ 0, 0, 0,
|
|
/* 10 */ 0, 0, 0,
|
|
/* 11 */ 0, 0, 0,
|
|
/* 12 */ 0, 0, 0,
|
|
/* 13 */ VK_RETURN, 0, KEY_KP_Enter,
|
|
/* 14 */ 0, 0, 0,
|
|
/* 15 */ 0, 0, 0,
|
|
/* 16 */ VK_SHIFT, KEY_ShiftL, KEY_ShiftR,
|
|
/* 17 */ VK_CONTROL, 0, KEY_RCtrl,
|
|
/* 18 */ VK_MENU, 0, KEY_AltLang,
|
|
/* 19 */ VK_PAUSE, KEY_Pause, 0,
|
|
/* 20 */ 0, 0, 0,
|
|
/* 21 */ 0, 0, 0,
|
|
/* 22 */ 0, 0, 0,
|
|
/* 23 */ 0, 0, 0,
|
|
/* 24 */ 0, 0, 0,
|
|
/* 25 */ 0, 0, 0,
|
|
/* 26 */ 0, 0, 0,
|
|
/* 27 */ 0, 0, 0,
|
|
/* 28 */ 0, 0, 0,
|
|
/* 29 */ 0, 0, 0,
|
|
/* 30 */ 0, 0, 0,
|
|
/* 31 */ 0, 0, 0,
|
|
/* 32 */ 0, 0, 0,
|
|
/* 33 */ VK_PRIOR, 0, KEY_PgUp,
|
|
/* 34 */ VK_NEXT, 0, KEY_PgDown,
|
|
/* 35 */ VK_END, 0, KEY_End,
|
|
/* 36 */ VK_HOME, 0, KEY_Home,
|
|
/* 37 */ VK_LEFT, 0, KEY_Left,
|
|
/* 38 */ VK_UP, 0, KEY_Up,
|
|
/* 39 */ VK_RIGHT, 0, KEY_Right,
|
|
/* 40 */ VK_DOWN, 0, KEY_Down,
|
|
/* 41 */ 0, 0, 0,
|
|
/* 42 */ 0, 0, 0,
|
|
/* 43 */ 0, 0, 0,
|
|
/* 44 */ VK_SNAPSHOT, 0, KEY_Print,
|
|
/* 45 */ VK_INSERT, 0, KEY_Insert,
|
|
/* 46 */ VK_DELETE, 0, KEY_Delete,
|
|
/* 47 */ 0, 0, 0,
|
|
/* 48 */ 0, 0, 0,
|
|
/* 49 */ 0, 0, 0,
|
|
/* 50 */ 0, 0, 0,
|
|
/* 51 */ 0, 0, 0,
|
|
/* 52 */ 0, 0, 0,
|
|
/* 53 */ 0, 0, 0,
|
|
/* 54 */ 0, 0, 0,
|
|
/* 55 */ 0, 0, 0,
|
|
/* 56 */ 0, 0, 0,
|
|
/* 57 */ 0, 0, 0,
|
|
/* 58 */ 0, 0, 0,
|
|
/* 59 */ 0, 0, 0,
|
|
/* 60 */ 0, 0, 0,
|
|
/* 61 */ 0, 0, 0,
|
|
/* 62 */ 0, 0, 0,
|
|
/* 63 */ 0, 0, 0,
|
|
/* 64 */ 0, 0, 0,
|
|
/* 65 */ 0, 0, 0,
|
|
/* 66 */ 0, 0, 0,
|
|
/* 67 */ 0, 0, 0,
|
|
/* 68 */ 0, 0, 0,
|
|
/* 69 */ 0, 0, 0,
|
|
/* 70 */ 0, 0, 0,
|
|
/* 71 */ 0, 0, 0,
|
|
/* 72 */ 0, 0, 0,
|
|
/* 73 */ 0, 0, 0,
|
|
/* 74 */ 0, 0, 0,
|
|
/* 75 */ 0, 0, 0,
|
|
/* 76 */ 0, 0, 0,
|
|
/* 77 */ 0, 0, 0,
|
|
/* 78 */ 0, 0, 0,
|
|
/* 79 */ 0, 0, 0,
|
|
/* 80 */ 0, 0, 0,
|
|
/* 81 */ 0, 0, 0,
|
|
/* 82 */ 0, 0, 0,
|
|
/* 83 */ 0, 0, 0,
|
|
/* 84 */ 0, 0, 0,
|
|
/* 85 */ 0, 0, 0,
|
|
/* 86 */ 0, 0, 0,
|
|
/* 87 */ 0, 0, 0,
|
|
/* 88 */ 0, 0, 0,
|
|
/* 89 */ 0, 0, 0,
|
|
/* 90 */ 0, 0, 0,
|
|
/* 91 */ 0, 0, 0,
|
|
/* 92 */ 0, 0, 0,
|
|
/* 93 */ 0, 0, 0,
|
|
/* 94 */ 0, 0, 0,
|
|
/* 95 */ 0, 0, 0,
|
|
/* 96 */ 0, 0, 0,
|
|
/* 97 */ 0, 0, 0,
|
|
/* 98 */ 0, 0, 0,
|
|
/* 99 */ 0, 0, 0,
|
|
/* 100 */ 0, 0, 0,
|
|
/* 101 */ 0, 0, 0,
|
|
/* 102 */ 0, 0, 0,
|
|
/* 103 */ 0, 0, 0,
|
|
/* 104 */ 0, 0, 0,
|
|
/* 105 */ 0, 0, 0,
|
|
/* 106 */ 0, 0, 0,
|
|
/* 107 */ 0, 0, 0,
|
|
/* 108 */ 0, 0, 0,
|
|
/* 109 */ 0, 0, 0,
|
|
/* 110 */ 0, 0, 0,
|
|
/* 111 */ VK_DIVIDE, 0, KEY_KP_Divide,
|
|
/* 112 */ 0, 0, 0,
|
|
/* 113 */ 0, 0, 0,
|
|
/* 114 */ 0, 0, 0,
|
|
/* 115 */ 0, 0, 0,
|
|
/* 116 */ 0, 0, 0,
|
|
/* 117 */ 0, 0, 0,
|
|
/* 118 */ 0, 0, 0,
|
|
/* 119 */ 0, 0, 0,
|
|
/* 120 */ 0, 0, 0,
|
|
/* 121 */ 0, 0, 0,
|
|
/* 122 */ 0, 0, 0,
|
|
/* 123 */ 0, 0, 0,
|
|
/* 124 */ 0, 0, 0,
|
|
/* 125 */ 0, 0, 0,
|
|
/* 126 */ 0, 0, 0,
|
|
/* 127 */ 0, 0, 0,
|
|
/* 128 */ 0, 0, 0,
|
|
/* 129 */ 0, 0, 0,
|
|
/* 130 */ 0, 0, 0,
|
|
/* 131 */ 0, 0, 0,
|
|
/* 132 */ 0, 0, 0,
|
|
/* 133 */ 0, 0, 0,
|
|
/* 134 */ 0, 0, 0,
|
|
/* 135 */ 0, 0, 0,
|
|
/* 136 */ 0, 0, 0,
|
|
/* 137 */ 0, 0, 0,
|
|
/* 138 */ 0, 0, 0,
|
|
/* 139 */ 0, 0, 0,
|
|
/* 140 */ 0, 0, 0,
|
|
/* 141 */ 0, 0, 0,
|
|
/* 142 */ 0, 0, 0,
|
|
/* 143 */ 0, 0, 0,
|
|
/* 144 */ 0, 0, 0,
|
|
/* 145 */ 0, 0, 0,
|
|
/* 146 */ 0, 0, 0,
|
|
/* 147 */ 0, 0, 0,
|
|
/* 148 */ 0, 0, 0,
|
|
/* 149 */ 0, 0, 0,
|
|
/* 150 */ 0, 0, 0,
|
|
/* 151 */ 0, 0, 0,
|
|
/* 152 */ 0, 0, 0,
|
|
/* 153 */ 0, 0, 0,
|
|
/* 154 */ 0, 0, 0,
|
|
/* 155 */ 0, 0, 0,
|
|
/* 156 */ 0, 0, 0,
|
|
/* 157 */ 0, 0, 0,
|
|
/* 158 */ 0, 0, 0,
|
|
/* 159 */ 0, 0, 0,
|
|
/* 160 */ 0, 0, 0,
|
|
/* 161 */ 0, 0, 0,
|
|
/* 162 */ 0, 0, 0,
|
|
/* 163 */ 0, 0, 0,
|
|
/* 164 */ 0, 0, 0,
|
|
/* 165 */ 0, 0, 0,
|
|
/* 166 */ 0, 0, 0,
|
|
/* 167 */ 0, 0, 0,
|
|
/* 168 */ 0, 0, 0,
|
|
/* 169 */ 0, 0, 0,
|
|
/* 170 */ 0, 0, 0,
|
|
/* 171 */ 0, 0, 0,
|
|
/* 172 */ 0, 0, 0,
|
|
/* 173 */ 0, 0, 0,
|
|
/* 174 */ 0, 0, 0,
|
|
/* 175 */ 0, 0, 0,
|
|
/* 176 */ 0, 0, 0,
|
|
/* 177 */ 0, 0, 0,
|
|
/* 178 */ 0, 0, 0,
|
|
/* 179 */ 0, 0, 0,
|
|
/* 180 */ 0, 0, 0,
|
|
/* 181 */ 0, 0, 0,
|
|
/* 182 */ 0, 0, 0,
|
|
/* 183 */ 0, 0, 0,
|
|
/* 184 */ 0, 0, 0,
|
|
/* 185 */ 0, 0, 0,
|
|
/* 186 */ 0, 0, 0,
|
|
/* 187 */ 0, 0, 0,
|
|
/* 188 */ 0, 0, 0,
|
|
/* 189 */ 0, 0, 0,
|
|
/* 190 */ 0, 0, 0,
|
|
/* 191 */ 0, 0, 0,
|
|
/* 192 */ 0, 0, 0,
|
|
/* 193 */ 0, 0, 0,
|
|
/* 194 */ 0, 0, 0,
|
|
/* 195 */ 0, 0, 0,
|
|
/* 196 */ 0, 0, 0,
|
|
/* 197 */ 0, 0, 0,
|
|
/* 198 */ 0, 0, 0,
|
|
/* 199 */ 0, 0, 0,
|
|
/* 200 */ 0, 0, 0,
|
|
/* 201 */ 0, 0, 0,
|
|
/* 202 */ 0, 0, 0,
|
|
/* 203 */ 0, 0, 0,
|
|
/* 204 */ 0, 0, 0,
|
|
/* 205 */ 0, 0, 0,
|
|
/* 206 */ 0, 0, 0,
|
|
/* 207 */ 0, 0, 0,
|
|
/* 208 */ 0, 0, 0,
|
|
/* 209 */ 0, 0, 0,
|
|
/* 210 */ 0, 0, 0,
|
|
/* 211 */ 0, 0, 0,
|
|
/* 212 */ 0, 0, 0,
|
|
/* 213 */ 0, 0, 0,
|
|
/* 214 */ 0, 0, 0,
|
|
/* 215 */ 0, 0, 0,
|
|
/* 216 */ 0, 0, 0,
|
|
/* 217 */ 0, 0, 0,
|
|
/* 218 */ 0, 0, 0,
|
|
/* 219 */ 0, 0, 0,
|
|
/* 220 */ 0, 0, 0,
|
|
/* 221 */ 0, 0, 0,
|
|
/* 222 */ 0, 0, 0,
|
|
/* 223 */ 0, 0, 0,
|
|
/* 224 */ 0, 0, 0,
|
|
/* 225 */ 0, 0, 0,
|
|
/* 226 */ 0, 0, 0,
|
|
/* 227 */ 0, 0, 0,
|
|
/* 228 */ 0, 0, 0,
|
|
/* 229 */ 0, 0, 0,
|
|
/* 230 */ 0, 0, 0,
|
|
/* 231 */ 0, 0, 0,
|
|
/* 232 */ 0, 0, 0,
|
|
/* 233 */ 0, 0, 0,
|
|
/* 234 */ 0, 0, 0,
|
|
/* 235 */ 0, 0, 0,
|
|
/* 236 */ 0, 0, 0,
|
|
/* 237 */ 0, 0, 0,
|
|
/* 238 */ 0, 0, 0,
|
|
/* 239 */ 0, 0, 0,
|
|
/* 240 */ 0, 0, 0,
|
|
/* 241 */ 0, 0, 0,
|
|
/* 242 */ 0, 0, 0,
|
|
/* 243 */ 0, 0, 0,
|
|
/* 244 */ 0, 0, 0,
|
|
/* 245 */ 0, 0, 0,
|
|
/* 246 */ 0, 0, 0,
|
|
/* 247 */ 0, 0, 0,
|
|
/* 248 */ 0, 0, 0,
|
|
/* 249 */ 0, 0, 0,
|
|
/* 250 */ 0, 0, 0,
|
|
/* 251 */ 0, 0, 0,
|
|
/* 252 */ 0, 0, 0,
|
|
/* 253 */ 0, 0, 0,
|
|
/* 254 */ 0, 0, 0,
|
|
/* 255 */ 0, 0, 0
|
|
};
|
|
#endif /* WIN_NEW_KEYBOARD_SUPPORT */
|