399 lines
		
	
	
		
			9.8 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			399 lines
		
	
	
		
			9.8 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: xc/programs/Xserver/hw/xwin/winkeybd.h,v 1.1 2001/09/26 13:00:34 alanh Exp $ */
 | |
| 
 | |
| /*
 | |
|  * We need symbols for the scan codes of keys.
 | |
|  */
 | |
| #include "../xfree86/common/atKeynames.h"
 | |
| 
 | |
| 
 | |
| /*
 | |
|  * Include the standard 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 */
 |