winkeybd.h   [plain text]


/*
 *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: xc/programs/Xserver/hw/xwin/winkeybd.h,v 1.3 2002/07/05 09:19:26 alanh Exp $ */

/*
 * 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 */