1 /* 2 * Copyright (c) 2002-2008 LWJGL Project 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of 'LWJGL' nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 package org.lwjgl.opengl; 33 34 /** 35 * @author elias_naur 36 */ 37 38 import org.lwjgl.input.Keyboard; 39 40 final class LinuxKeycodes { 41 public static final int XK_Kanji = 0xff21; 42 43 public static final int XK_ISO_Left_Tab = 0xfe20; 44 45 public static final int XK_dead_grave = 0xfe50; 46 public static final int XK_dead_acute = 0xfe51; 47 public static final int XK_dead_circumflex = 0xfe52; 48 public static final int XK_dead_tilde = 0xfe53; 49 public static final int XK_dead_macron = 0xfe54; 50 public static final int XK_dead_breve = 0xfe55; 51 public static final int XK_dead_abovedot = 0xfe56; 52 public static final int XK_dead_diaeresis = 0xfe57; 53 public static final int XK_dead_abovering = 0xfe58; 54 public static final int XK_dead_doubleacute = 0xfe59; 55 public static final int XK_dead_caron = 0xfe5a; 56 public static final int XK_dead_cedilla = 0xfe5b; 57 public static final int XK_dead_ogonek = 0xfe5c; 58 public static final int XK_dead_iota = 0xfe5d; 59 public static final int XK_dead_voiced_sound = 0xfe5e; 60 public static final int XK_dead_semivoiced_sound = 0xfe5f; 61 public static final int XK_dead_belowdot = 0xfe60; 62 public static final int XK_dead_hook = 0xfe61; 63 public static final int XK_dead_horn = 0xfe62; 64 65 public static final int XK_BackSpace = 0xff08; 66 public static final int XK_Tab = 0xff09; 67 public static final int XK_Linefeed = 0xff0a; 68 public static final int XK_Clear = 0xff0b; 69 public static final int XK_Return = 0xff0d; 70 public static final int XK_Pause = 0xff13; 71 public static final int XK_Scroll_Lock = 0xff14; 72 public static final int XK_Sys_Req = 0xff15; 73 public static final int XK_Escape = 0xff1b; 74 public static final int XK_Delete = 0xffff; 75 76 public static final int XK_Home = 0xff50; 77 public static final int XK_Left = 0xff51; 78 public static final int XK_Up = 0xff52; 79 public static final int XK_Right = 0xff53; 80 public static final int XK_Down = 0xff54; 81 public static final int XK_Prior = 0xff55; 82 public static final int XK_Page_Up = 0xff55; 83 public static final int XK_Next = 0xff56; 84 public static final int XK_Page_Down = 0xff56; 85 public static final int XK_End = 0xff57; 86 public static final int XK_Begin = 0xff58; 87 88 89 /* Misc functions */ 90 91 public static final int XK_Select = 0xff60; 92 public static final int XK_Print = 0xff61; 93 public static final int XK_Execute = 0xff62; 94 public static final int XK_Insert = 0xff63; 95 public static final int XK_Undo = 0xff65; 96 public static final int XK_Redo = 0xff66; 97 public static final int XK_Menu = 0xff67; 98 public static final int XK_Find = 0xff68; 99 public static final int XK_Cancel = 0xff69; 100 public static final int XK_Help = 0xff6a; 101 public static final int XK_Break = 0xff6b; 102 public static final int XK_Mode_switch = 0xff7e; 103 public static final int XK_script_switch = 0xff7e; 104 public static final int XK_Num_Lock = 0xff7f; 105 106 /* Keypad functions, keypad numbers cleverly chosen to map to ASCII */ 107 108 public static final int XK_KP_Space = 0xff80; 109 public static final int XK_KP_Tab = 0xff89; 110 public static final int XK_KP_Enter = 0xff8d; 111 public static final int XK_KP_F1 = 0xff91; 112 public static final int XK_KP_F2 = 0xff92; 113 public static final int XK_KP_F3 = 0xff93; 114 public static final int XK_KP_F4 = 0xff94; 115 public static final int XK_KP_Home = 0xff95; 116 public static final int XK_KP_Left = 0xff96; 117 public static final int XK_KP_Up = 0xff97; 118 public static final int XK_KP_Right = 0xff98; 119 public static final int XK_KP_Down = 0xff99; 120 public static final int XK_KP_Prior = 0xff9a; 121 public static final int XK_KP_Page_Up = 0xff9a; 122 public static final int XK_KP_Next = 0xff9b; 123 public static final int XK_KP_Page_Down = 0xff9b; 124 public static final int XK_KP_End = 0xff9c; 125 public static final int XK_KP_Begin = 0xff9d; 126 public static final int XK_KP_Insert = 0xff9e; 127 public static final int XK_KP_Delete = 0xff9f; 128 public static final int XK_KP_Equal = 0xffbd; 129 public static final int XK_KP_Multiply = 0xffaa; 130 public static final int XK_KP_Add = 0xffab; 131 public static final int XK_KP_Separator = 0xffac; 132 public static final int XK_KP_Subtract = 0xffad; 133 public static final int XK_KP_Decimal = 0xffae; 134 public static final int XK_KP_Divide = 0xffaf; 135 136 public static final int XK_KP_0 = 0xffb0; 137 public static final int XK_KP_1 = 0xffb1; 138 public static final int XK_KP_2 = 0xffb2; 139 public static final int XK_KP_3 = 0xffb3; 140 public static final int XK_KP_4 = 0xffb4; 141 public static final int XK_KP_5 = 0xffb5; 142 public static final int XK_KP_6 = 0xffb6; 143 public static final int XK_KP_7 = 0xffb7; 144 public static final int XK_KP_8 = 0xffb8; 145 public static final int XK_KP_9 = 0xffb9; 146 147 148 149 /* 150 * Auxilliary functions; note the duplicate definitions for left and right 151 * function keys; Sun keyboards and a few other manufactures have such 152 * function key groups on the left and/or right sides of the keyboard. 153 * We've not found a keyboard with more than 35 function keys total. 154 */ 155 156 public static final int XK_F1 = 0xffbe; 157 public static final int XK_F2 = 0xffbf; 158 public static final int XK_F3 = 0xffc0; 159 public static final int XK_F4 = 0xffc1; 160 public static final int XK_F5 = 0xffc2; 161 public static final int XK_F6 = 0xffc3; 162 public static final int XK_F7 = 0xffc4; 163 public static final int XK_F8 = 0xffc5; 164 public static final int XK_F9 = 0xffc6; 165 public static final int XK_F10 = 0xffc7; 166 public static final int XK_F11 = 0xffc8; 167 public static final int XK_L1 = 0xffc8; 168 public static final int XK_F12 = 0xffc9; 169 public static final int XK_L2 = 0xffc9; 170 public static final int XK_F13 = 0xffca; 171 public static final int XK_L3 = 0xffca; 172 public static final int XK_F14 = 0xffcb; 173 public static final int XK_L4 = 0xffcb; 174 public static final int XK_F15 = 0xffcc; 175 public static final int XK_L5 = 0xffcc; 176 public static final int XK_F16 = 0xffcd; 177 public static final int XK_L6 = 0xffcd; 178 public static final int XK_F17 = 0xffce; 179 public static final int XK_L7 = 0xffce; 180 public static final int XK_F18 = 0xffcf; 181 public static final int XK_L8 = 0xffcf; 182 public static final int XK_F19 = 0xffd0; 183 public static final int XK_L9 = 0xffd0; 184 public static final int XK_F20 = 0xffd1; 185 public static final int XK_L10 = 0xffd1; 186 public static final int XK_F21 = 0xffd2; 187 public static final int XK_R1 = 0xffd2; 188 public static final int XK_F22 = 0xffd3; 189 public static final int XK_R2 = 0xffd3; 190 public static final int XK_F23 = 0xffd4; 191 public static final int XK_R3 = 0xffd4; 192 public static final int XK_F24 = 0xffd5; 193 public static final int XK_R4 = 0xffd5; 194 public static final int XK_F25 = 0xffd6; 195 public static final int XK_R5 = 0xffd6; 196 public static final int XK_F26 = 0xffd7; 197 public static final int XK_R6 = 0xffd7; 198 public static final int XK_F27 = 0xffd8; 199 public static final int XK_R7 = 0xffd8; 200 public static final int XK_F28 = 0xffd9; 201 public static final int XK_R8 = 0xffd9; 202 public static final int XK_F29 = 0xffda; 203 public static final int XK_R9 = 0xffda; 204 public static final int XK_F30 = 0xffdb; 205 public static final int XK_R10 = 0xffdb; 206 public static final int XK_F31 = 0xffdc; 207 public static final int XK_R11 = 0xffdc; 208 public static final int XK_F32 = 0xffdd; 209 public static final int XK_R12 = 0xffdd; 210 public static final int XK_F33 = 0xffde; 211 public static final int XK_R13 = 0xffde; 212 public static final int XK_F34 = 0xffdf; 213 public static final int XK_R14 = 0xffdf; 214 public static final int XK_F35 = 0xffe0; 215 public static final int XK_R15 = 0xffe0; 216 217 /* Modifiers */ 218 219 public static final int XK_Shift_L = 0xffe1; 220 public static final int XK_Shift_R = 0xffe2; 221 public static final int XK_Control_L = 0xffe3; 222 public static final int XK_Control_R = 0xffe4; 223 public static final int XK_Caps_Lock = 0xffe5; 224 public static final int XK_Shift_Lock = 0xffe6; 225 226 public static final int XK_Meta_L = 0xffe7; 227 public static final int XK_Meta_R = 0xffe8; 228 public static final int XK_Alt_L = 0xffe9; 229 public static final int XK_Alt_R = 0xffea; 230 public static final int XK_Super_L = 0xffeb; 231 public static final int XK_Super_R = 0xffec; 232 public static final int XK_Hyper_L = 0xffed; 233 public static final int XK_Hyper_R = 0xffee; 234 public static final int XK_space = 0x0020; 235 public static final int XK_exclam = 0x0021; 236 public static final int XK_quotedbl = 0x0022; 237 public static final int XK_numbersign = 0x0023; 238 public static final int XK_dollar = 0x0024; 239 public static final int XK_percent = 0x0025; 240 public static final int XK_ampersand = 0x0026; 241 public static final int XK_apostrophe = 0x0027; 242 public static final int XK_quoteright = 0x0027; 243 public static final int XK_parenleft = 0x0028; 244 public static final int XK_parenright = 0x0029; 245 public static final int XK_asterisk = 0x002a; 246 public static final int XK_plus = 0x002b; 247 public static final int XK_comma = 0x002c; 248 public static final int XK_minus = 0x002d; 249 public static final int XK_period = 0x002e; 250 public static final int XK_slash = 0x002f; 251 252 public static final int XK_0 = 0x0030; 253 public static final int XK_1 = 0x0031; 254 public static final int XK_2 = 0x0032; 255 public static final int XK_3 = 0x0033; 256 public static final int XK_4 = 0x0034; 257 public static final int XK_5 = 0x0035; 258 public static final int XK_6 = 0x0036; 259 public static final int XK_7 = 0x0037; 260 public static final int XK_8 = 0x0038; 261 public static final int XK_9 = 0x0039; 262 public static final int XK_colon = 0x003a; 263 public static final int XK_semicolon = 0x003b; 264 public static final int XK_less = 0x003c; 265 public static final int XK_equal = 0x003d; 266 public static final int XK_greater = 0x003e; 267 public static final int XK_question = 0x003f; 268 public static final int XK_at = 0x0040; 269 public static final int XK_A = 0x0041; 270 public static final int XK_B = 0x0042; 271 public static final int XK_C = 0x0043; 272 public static final int XK_D = 0x0044; 273 public static final int XK_E = 0x0045; 274 public static final int XK_F = 0x0046; 275 public static final int XK_G = 0x0047; 276 public static final int XK_H = 0x0048; 277 public static final int XK_I = 0x0049; 278 public static final int XK_J = 0x004a; 279 public static final int XK_K = 0x004b; 280 public static final int XK_L = 0x004c; 281 public static final int XK_M = 0x004d; 282 public static final int XK_N = 0x004e; 283 public static final int XK_O = 0x004f; 284 public static final int XK_P = 0x0050; 285 public static final int XK_Q = 0x0051; 286 public static final int XK_R = 0x0052; 287 public static final int XK_S = 0x0053; 288 public static final int XK_T = 0x0054; 289 public static final int XK_U = 0x0055; 290 public static final int XK_V = 0x0056; 291 public static final int XK_W = 0x0057; 292 public static final int XK_X = 0x0058; 293 public static final int XK_Y = 0x0059; 294 public static final int XK_Z = 0x005a; 295 public static final int XK_bracketleft = 0x005b; 296 public static final int XK_backslash = 0x005c; 297 public static final int XK_bracketright = 0x005d; 298 public static final int XK_asciicircum = 0x005e; 299 public static final int XK_underscore = 0x005f; 300 public static final int XK_grave = 0x0060; 301 public static final int XK_quoteleft = 0x0060; 302 public static final int XK_a = 0x0061; 303 public static final int XK_b = 0x0062; 304 public static final int XK_c = 0x0063; 305 public static final int XK_d = 0x0064; 306 public static final int XK_e = 0x0065; 307 public static final int XK_f = 0x0066; 308 public static final int XK_g = 0x0067; 309 public static final int XK_h = 0x0068; 310 public static final int XK_i = 0x0069; 311 public static final int XK_j = 0x006a; 312 public static final int XK_k = 0x006b; 313 public static final int XK_l = 0x006c; 314 public static final int XK_m = 0x006d; 315 public static final int XK_n = 0x006e; 316 public static final int XK_o = 0x006f; 317 public static final int XK_p = 0x0070; 318 public static final int XK_q = 0x0071; 319 public static final int XK_r = 0x0072; 320 public static final int XK_s = 0x0073; 321 public static final int XK_t = 0x0074; 322 public static final int XK_u = 0x0075; 323 public static final int XK_v = 0x0076; 324 public static final int XK_w = 0x0077; 325 public static final int XK_x = 0x0078; 326 public static final int XK_y = 0x0079; 327 public static final int XK_z = 0x007a; 328 public static final int XK_braceleft = 0x007b; 329 public static final int XK_bar = 0x007c; 330 public static final int XK_braceright = 0x007d; 331 public static final int XK_asciitilde = 0x007e; 332 333 public static final int XK_nobreakspace = 0x00a0; 334 public static final int XK_exclamdown = 0x00a1; 335 public static final int XK_cent = 0x00a2; 336 public static final int XK_sterling = 0x00a3; 337 public static final int XK_currency = 0x00a4; 338 public static final int XK_yen = 0x00a5; 339 public static final int XK_brokenbar = 0x00a6; 340 public static final int XK_section = 0x00a7; 341 public static final int XK_diaeresis = 0x00a8; 342 public static final int XK_copyright = 0x00a9; 343 public static final int XK_ordfeminine = 0x00aa; 344 public static final int XK_guillemotleft = 0x00ab; 345 public static final int XK_notsign = 0x00ac; 346 public static final int XK_hyphen = 0x00ad; 347 public static final int XK_registered = 0x00ae; 348 public static final int XK_macron = 0x00af; 349 public static final int XK_degree = 0x00b0; 350 public static final int XK_plusminus = 0x00b1; 351 public static final int XK_twosuperior = 0x00b2; 352 public static final int XK_threesuperior = 0x00b3; 353 public static final int XK_acute = 0x00b4; 354 public static final int XK_mu = 0x00b5; 355 public static final int XK_paragraph = 0x00b6; 356 public static final int XK_periodcentered = 0x00b7; 357 public static final int XK_cedilla = 0x00b8; 358 public static final int XK_onesuperior = 0x00b9; 359 public static final int XK_masculine = 0x00ba; 360 public static final int XK_guillemotright = 0x00bb; 361 public static final int XK_onequarter = 0x00bc; 362 public static final int XK_onehalf = 0x00bd; 363 public static final int XK_threequarters = 0x00be; 364 public static final int XK_questiondown = 0x00bf; 365 public static final int XK_Agrave = 0x00c0; 366 public static final int XK_Aacute = 0x00c1; 367 public static final int XK_Acircumflex = 0x00c2; 368 public static final int XK_Atilde = 0x00c3; 369 public static final int XK_Adiaeresis = 0x00c4; 370 public static final int XK_Aring = 0x00c5; 371 public static final int XK_AE = 0x00c6; 372 public static final int XK_Ccedilla = 0x00c7; 373 public static final int XK_Egrave = 0x00c8; 374 public static final int XK_Eacute = 0x00c9; 375 public static final int XK_Ecircumflex = 0x00ca; 376 public static final int XK_Ediaeresis = 0x00cb; 377 public static final int XK_Igrave = 0x00cc; 378 public static final int XK_Iacute = 0x00cd; 379 public static final int XK_Icircumflex = 0x00ce; 380 public static final int XK_Idiaeresis = 0x00cf; 381 public static final int XK_ETH = 0x00d0; 382 public static final int XK_Eth = 0x00d0; 383 public static final int XK_Ntilde = 0x00d1; 384 public static final int XK_Ograve = 0x00d2; 385 public static final int XK_Oacute = 0x00d3; 386 public static final int XK_Ocircumflex = 0x00d4; 387 public static final int XK_Otilde = 0x00d5; 388 public static final int XK_Odiaeresis = 0x00d6; 389 public static final int XK_multiply = 0x00d7; 390 public static final int XK_Oslash = 0x00d8; 391 public static final int XK_Ooblique = 0x00d8; 392 public static final int XK_Ugrave = 0x00d9; 393 public static final int XK_Uacute = 0x00da; 394 public static final int XK_Ucircumflex = 0x00db; 395 public static final int XK_Udiaeresis = 0x00dc; 396 public static final int XK_Yacute = 0x00dd; 397 public static final int XK_THORN = 0x00de; 398 public static final int XK_Thorn = 0x00de; 399 public static final int XK_ssharp = 0x00df; 400 public static final int XK_agrave = 0x00e0; 401 public static final int XK_aacute = 0x00e1; 402 public static final int XK_acircumflex = 0x00e2; 403 public static final int XK_atilde = 0x00e3; 404 public static final int XK_adiaeresis = 0x00e4; 405 public static final int XK_aring = 0x00e5; 406 public static final int XK_ae = 0x00e6; 407 public static final int XK_ccedilla = 0x00e7; 408 public static final int XK_egrave = 0x00e8; 409 public static final int XK_eacute = 0x00e9; 410 public static final int XK_ecircumflex = 0x00ea; 411 public static final int XK_ediaeresis = 0x00eb; 412 public static final int XK_igrave = 0x00ec; 413 public static final int XK_iacute = 0x00ed; 414 public static final int XK_icircumflex = 0x00ee; 415 public static final int XK_idiaeresis = 0x00ef; 416 public static final int XK_eth = 0x00f0; 417 public static final int XK_ntilde = 0x00f1; 418 public static final int XK_ograve = 0x00f2; 419 public static final int XK_oacute = 0x00f3; 420 public static final int XK_ocircumflex = 0x00f4; 421 public static final int XK_otilde = 0x00f5; 422 public static final int XK_odiaeresis = 0x00f6; 423 public static final int XK_division = 0x00f7; 424 public static final int XK_oslash = 0x00f8; 425 public static final int XK_ooblique = 0x00f8; 426 public static final int XK_ugrave = 0x00f9; 427 public static final int XK_uacute = 0x00fa; 428 public static final int XK_ucircumflex = 0x00fb; 429 public static final int XK_udiaeresis = 0x00fc; 430 public static final int XK_yacute = 0x00fd; 431 public static final int XK_thorn = 0x00fe; 432 public static final int XK_ydiaeresis = 0x00ff; 433 434 public static final int XK_ISO_Level3_Shift = 0xfe03; 435 mapKeySymToLWJGLKeyCode(long keysym)436 public static int mapKeySymToLWJGLKeyCode(long keysym) { 437 switch ((int)keysym) { 438 case XK_BackSpace: 439 return Keyboard.KEY_BACK; 440 case XK_ISO_Left_Tab: 441 case XK_Tab: 442 return Keyboard.KEY_TAB; 443 case XK_Return: 444 return Keyboard.KEY_RETURN; 445 case XK_Pause: 446 return Keyboard.KEY_PAUSE; 447 case XK_Scroll_Lock: 448 return Keyboard.KEY_SCROLL; 449 case XK_Sys_Req: 450 return Keyboard.KEY_SYSRQ; 451 case XK_Escape: 452 return Keyboard.KEY_ESCAPE; 453 case XK_Delete: 454 return Keyboard.KEY_DELETE; 455 456 /* Japanese keyboard support */ 457 458 case XK_Kanji: 459 return Keyboard.KEY_KANJI; 460 461 /* Cursor control & motion */ 462 463 case XK_Home: 464 return Keyboard.KEY_HOME; 465 case XK_Left: 466 return Keyboard.KEY_LEFT; 467 case XK_Up: 468 return Keyboard.KEY_UP; 469 case XK_Right: 470 return Keyboard.KEY_RIGHT; 471 case XK_Down: 472 return Keyboard.KEY_DOWN; 473 case XK_Page_Up: 474 return Keyboard.KEY_PRIOR; 475 case XK_Page_Down: 476 return Keyboard.KEY_NEXT; 477 case XK_End: 478 return Keyboard.KEY_END; 479 480 481 /* Misc Functions */ 482 483 case XK_Break: 484 return Keyboard.KEY_PAUSE; 485 case XK_Insert: 486 return Keyboard.KEY_INSERT; 487 case XK_Num_Lock: 488 return Keyboard.KEY_NUMLOCK; 489 490 /* Keypad Functions, keypad numbers cleverly chosen to map to ascii */ 491 492 case XK_KP_Space: 493 return Keyboard.KEY_SPACE; 494 case XK_KP_Tab: 495 return Keyboard.KEY_TAB; 496 case XK_KP_Enter: 497 return Keyboard.KEY_NUMPADENTER; 498 case XK_KP_F1: 499 return Keyboard.KEY_F1; 500 case XK_KP_F2: 501 return Keyboard.KEY_F2; 502 case XK_KP_F3: 503 return Keyboard.KEY_F3; 504 case XK_KP_F4: 505 return Keyboard.KEY_F4; 506 case XK_KP_Home: 507 return Keyboard.KEY_HOME; 508 case XK_KP_Left: 509 return Keyboard.KEY_LEFT; 510 case XK_KP_Up: 511 return Keyboard.KEY_UP; 512 case XK_KP_Right: 513 return Keyboard.KEY_RIGHT; 514 case XK_KP_Down: 515 return Keyboard.KEY_DOWN; 516 case XK_KP_Page_Up: 517 return Keyboard.KEY_PRIOR; 518 case XK_KP_Page_Down: 519 return Keyboard.KEY_NEXT; 520 case XK_KP_End: 521 return Keyboard.KEY_END; 522 case XK_KP_Insert: 523 return Keyboard.KEY_INSERT; 524 case XK_KP_Delete: 525 return Keyboard.KEY_DELETE; 526 case XK_KP_Equal: 527 return Keyboard.KEY_NUMPADEQUALS; 528 case XK_KP_Multiply: 529 return Keyboard.KEY_MULTIPLY; 530 case XK_KP_Add: 531 return Keyboard.KEY_ADD; 532 case XK_KP_Subtract: 533 return Keyboard.KEY_SUBTRACT; 534 case XK_KP_Decimal: 535 return Keyboard.KEY_DECIMAL; 536 case XK_KP_Divide: 537 return Keyboard.KEY_DIVIDE; 538 539 case XK_KP_0: 540 return Keyboard.KEY_NUMPAD0; 541 case XK_KP_1: 542 return Keyboard.KEY_NUMPAD1; 543 case XK_KP_2: 544 return Keyboard.KEY_NUMPAD2; 545 case XK_KP_3: 546 return Keyboard.KEY_NUMPAD3; 547 case XK_KP_4: 548 return Keyboard.KEY_NUMPAD4; 549 case XK_KP_5: 550 return Keyboard.KEY_NUMPAD5; 551 case XK_KP_6: 552 return Keyboard.KEY_NUMPAD6; 553 case XK_KP_7: 554 return Keyboard.KEY_NUMPAD7; 555 case XK_KP_8: 556 return Keyboard.KEY_NUMPAD8; 557 case XK_KP_9: 558 return Keyboard.KEY_NUMPAD9; 559 560 /* 561 * Auxilliary Functions; note the duplicate definitions for left and right 562 * function keys; Sun keyboards and a few other manufactures have such 563 * function key groups on the left and/or right sides of the keyboard. 564 * We've not found a keyboard with more than 35 function keys total. 565 */ 566 567 case XK_F1: 568 return Keyboard.KEY_F1; 569 case XK_F2: 570 return Keyboard.KEY_F2; 571 case XK_F3: 572 return Keyboard.KEY_F3; 573 case XK_F4: 574 return Keyboard.KEY_F4; 575 case XK_F5: 576 return Keyboard.KEY_F5; 577 case XK_F6: 578 return Keyboard.KEY_F6; 579 case XK_F7: 580 return Keyboard.KEY_F7; 581 case XK_F8: 582 return Keyboard.KEY_F8; 583 case XK_F9: 584 return Keyboard.KEY_F9; 585 case XK_F10: 586 return Keyboard.KEY_F10; 587 case XK_F11: 588 return Keyboard.KEY_F11; 589 case XK_F12: 590 return Keyboard.KEY_F12; 591 case XK_F13: 592 return Keyboard.KEY_F13; 593 case XK_F14: 594 return Keyboard.KEY_F14; 595 case XK_F15: 596 return Keyboard.KEY_F15; 597 598 /* Modifiers */ 599 600 case XK_Shift_L: 601 return Keyboard.KEY_LSHIFT; 602 case XK_Shift_R: 603 return Keyboard.KEY_RSHIFT; 604 case XK_Control_L: 605 return Keyboard.KEY_LCONTROL; 606 case XK_Control_R: 607 return Keyboard.KEY_RCONTROL; 608 case XK_Caps_Lock: 609 return Keyboard.KEY_CAPITAL; 610 611 case XK_Meta_L: 612 return Keyboard.KEY_LMENU; 613 case XK_ISO_Level3_Shift: 614 case XK_Meta_R: 615 return Keyboard.KEY_RMENU; 616 case XK_Alt_L: 617 return Keyboard.KEY_LMENU; 618 case XK_Alt_R: 619 return Keyboard.KEY_RMENU; 620 621 case XK_dead_grave: 622 return Keyboard.KEY_GRAVE; 623 case XK_dead_circumflex: 624 return Keyboard.KEY_CIRCUMFLEX; 625 626 /* 627 * Latin 1 628 * Byte 3 = 0 629 */ 630 case XK_space: 631 return Keyboard.KEY_SPACE; 632 case XK_apostrophe: 633 return Keyboard.KEY_APOSTROPHE; 634 case XK_comma: 635 return Keyboard.KEY_COMMA; 636 case XK_minus: 637 return Keyboard.KEY_MINUS; 638 case XK_period: 639 return Keyboard.KEY_PERIOD; 640 case XK_slash: 641 return Keyboard.KEY_SLASH; 642 case XK_0: 643 return Keyboard.KEY_0; 644 case XK_1: 645 return Keyboard.KEY_1; 646 case XK_2: 647 return Keyboard.KEY_2; 648 case XK_3: 649 return Keyboard.KEY_3; 650 case XK_4: 651 return Keyboard.KEY_4; 652 case XK_5: 653 return Keyboard.KEY_5; 654 case XK_6: 655 return Keyboard.KEY_6; 656 case XK_7: 657 return Keyboard.KEY_7; 658 case XK_8: 659 return Keyboard.KEY_8; 660 case XK_9: 661 return Keyboard.KEY_9; 662 case XK_colon: 663 return Keyboard.KEY_COLON; 664 case XK_semicolon: 665 return Keyboard.KEY_SEMICOLON; 666 case XK_equal: 667 return Keyboard.KEY_EQUALS; 668 case XK_at: 669 return Keyboard.KEY_AT; 670 case XK_bracketleft: 671 return Keyboard.KEY_LBRACKET; 672 case XK_bracketright: 673 return Keyboard.KEY_RBRACKET; 674 case XK_asciicircum: 675 return Keyboard.KEY_CIRCUMFLEX; 676 case XK_underscore: 677 return Keyboard.KEY_UNDERLINE; 678 case XK_grave: 679 return Keyboard.KEY_GRAVE; 680 case XK_a: 681 case XK_A: 682 return Keyboard.KEY_A; 683 case XK_b: 684 case XK_B: 685 return Keyboard.KEY_B; 686 case XK_c: 687 case XK_C: 688 return Keyboard.KEY_C; 689 case XK_d: 690 case XK_D: 691 return Keyboard.KEY_D; 692 case XK_e: 693 case XK_E: 694 return Keyboard.KEY_E; 695 case XK_f: 696 case XK_F: 697 return Keyboard.KEY_F; 698 case XK_g: 699 case XK_G: 700 return Keyboard.KEY_G; 701 case XK_h: 702 case XK_H: 703 return Keyboard.KEY_H; 704 case XK_i: 705 case XK_I: 706 return Keyboard.KEY_I; 707 case XK_j: 708 case XK_J: 709 return Keyboard.KEY_J; 710 case XK_k: 711 case XK_K: 712 return Keyboard.KEY_K; 713 case XK_l: 714 case XK_L: 715 return Keyboard.KEY_L; 716 case XK_m: 717 case XK_M: 718 return Keyboard.KEY_M; 719 case XK_n: 720 case XK_N: 721 return Keyboard.KEY_N; 722 case XK_o: 723 case XK_O: 724 return Keyboard.KEY_O; 725 case XK_p: 726 case XK_P: 727 return Keyboard.KEY_P; 728 case XK_q: 729 case XK_Q: 730 return Keyboard.KEY_Q; 731 case XK_r: 732 case XK_R: 733 return Keyboard.KEY_R; 734 case XK_s: 735 case XK_S: 736 return Keyboard.KEY_S; 737 case XK_t: 738 case XK_T: 739 return Keyboard.KEY_T; 740 case XK_u: 741 case XK_U: 742 return Keyboard.KEY_U; 743 case XK_v: 744 case XK_V: 745 return Keyboard.KEY_V; 746 case XK_w: 747 case XK_W: 748 return Keyboard.KEY_W; 749 case XK_x: 750 case XK_X: 751 return Keyboard.KEY_X; 752 case XK_y: 753 case XK_Y: 754 return Keyboard.KEY_Y; 755 case XK_z: 756 case XK_Z: 757 return Keyboard.KEY_Z; 758 default: 759 return Keyboard.KEY_NONE; 760 } 761 } 762 763 } 764