# ---------------------------------------------------------------------------- # pyglet # Copyright (c) 2006-2008 Alex Holkner # Copyright (c) 2008-2020 pyglet contributors # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of pyglet nor the names of its # contributors may be used to endorse or promote products # derived from this software without specific prior written # permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ---------------------------------------------------------------------------- from pyglet.window import key from .constants import * keymap = { ord('A'): key.A, ord('B'): key.B, ord('C'): key.C, ord('D'): key.D, ord('E'): key.E, ord('F'): key.F, ord('G'): key.G, ord('H'): key.H, ord('I'): key.I, ord('J'): key.J, ord('K'): key.K, ord('L'): key.L, ord('M'): key.M, ord('N'): key.N, ord('O'): key.O, ord('P'): key.P, ord('Q'): key.Q, ord('R'): key.R, ord('S'): key.S, ord('T'): key.T, ord('U'): key.U, ord('V'): key.V, ord('W'): key.W, ord('X'): key.X, ord('Y'): key.Y, ord('Z'): key.Z, ord('0'): key._0, ord('1'): key._1, ord('2'): key._2, ord('3'): key._3, ord('4'): key._4, ord('5'): key._5, ord('6'): key._6, ord('7'): key._7, ord('8'): key._8, ord('9'): key._9, ord('\b'): key.BACKSPACE, # By experiment: 0x14: key.CAPSLOCK, 0x5d: key.MENU, # VK_LBUTTON: , # VK_RBUTTON: , VK_CANCEL: key.CANCEL, # VK_MBUTTON: , # VK_BACK: , VK_TAB: key.TAB, # VK_CLEAR: , VK_RETURN: key.RETURN, VK_SHIFT: key.LSHIFT, VK_CONTROL: key.LCTRL, VK_MENU: key.LALT, VK_PAUSE: key.PAUSE, # VK_CAPITAL: , # VK_KANA: , # VK_HANGEUL: , # VK_HANGUL: , # VK_JUNJA: , # VK_FINAL: , # VK_HANJA: , # VK_KANJI: , VK_ESCAPE: key.ESCAPE, # VK_CONVERT: , # VK_NONCONVERT: , # VK_ACCEPT: , # VK_MODECHANGE: , VK_SPACE: key.SPACE, VK_PRIOR: key.PAGEUP, VK_NEXT: key.PAGEDOWN, VK_END: key.END, VK_HOME: key.HOME, VK_LEFT: key.LEFT, VK_UP: key.UP, VK_RIGHT: key.RIGHT, VK_DOWN: key.DOWN, # VK_SELECT: , VK_PRINT: key.PRINT, # VK_EXECUTE: , # VK_SNAPSHOT: , VK_INSERT: key.INSERT, VK_DELETE: key.DELETE, VK_HELP: key.HELP, VK_LWIN: key.LWINDOWS, VK_RWIN: key.RWINDOWS, # VK_APPS: , VK_NUMPAD0: key.NUM_0, VK_NUMPAD1: key.NUM_1, VK_NUMPAD2: key.NUM_2, VK_NUMPAD3: key.NUM_3, VK_NUMPAD4: key.NUM_4, VK_NUMPAD5: key.NUM_5, VK_NUMPAD6: key.NUM_6, VK_NUMPAD7: key.NUM_7, VK_NUMPAD8: key.NUM_8, VK_NUMPAD9: key.NUM_9, VK_MULTIPLY: key.NUM_MULTIPLY, VK_ADD: key.NUM_ADD, # VK_SEPARATOR: , VK_SUBTRACT: key.NUM_SUBTRACT, VK_DECIMAL: key.NUM_DECIMAL, VK_DIVIDE: key.NUM_DIVIDE, VK_F1: key.F1, VK_F2: key.F2, VK_F3: key.F3, VK_F4: key.F4, VK_F5: key.F5, VK_F6: key.F6, VK_F7: key.F7, VK_F8: key.F8, VK_F9: key.F9, VK_F10: key.F10, VK_F11: key.F11, VK_F12: key.F12, VK_F13: key.F13, VK_F14: key.F14, VK_F15: key.F15, VK_F16: key.F16, # VK_F17: , # VK_F18: , # VK_F19: , # VK_F20: , # VK_F21: , # VK_F22: , # VK_F23: , # VK_F24: , VK_NUMLOCK: key.NUMLOCK, VK_SCROLL: key.SCROLLLOCK, VK_LSHIFT: key.LSHIFT, VK_RSHIFT: key.RSHIFT, VK_LCONTROL: key.LCTRL, VK_RCONTROL: key.RCTRL, VK_LMENU: key.LALT, VK_RMENU: key.RALT, # VK_PROCESSKEY: , # VK_ATTN: , # VK_CRSEL: , # VK_EXSEL: , # VK_EREOF: , # VK_PLAY: , # VK_ZOOM: , # VK_NONAME: , # VK_PA1: , # VK_OEM_CLEAR: , # VK_XBUTTON1: , # VK_XBUTTON2: , # VK_VOLUME_MUTE: , # VK_VOLUME_DOWN: , # VK_VOLUME_UP: , # VK_MEDIA_NEXT_TRACK: , # VK_MEDIA_PREV_TRACK: , # VK_MEDIA_PLAY_PAUSE: , # VK_BROWSER_BACK: , # VK_BROWSER_FORWARD: , } # Keys that must be translated via MapVirtualKey, as the virtual key code # is language and keyboard dependent. chmap = { ord('!'): key.EXCLAMATION, ord('"'): key.DOUBLEQUOTE, ord('#'): key.HASH, ord('$'): key.DOLLAR, ord('%'): key.PERCENT, ord('&'): key.AMPERSAND, ord("'"): key.APOSTROPHE, ord('('): key.PARENLEFT, ord(')'): key.PARENRIGHT, ord('*'): key.ASTERISK, ord('+'): key.PLUS, ord(','): key.COMMA, ord('-'): key.MINUS, ord('.'): key.PERIOD, ord('/'): key.SLASH, ord(':'): key.COLON, ord(';'): key.SEMICOLON, ord('<'): key.LESS, ord('='): key.EQUAL, ord('>'): key.GREATER, ord('?'): key.QUESTION, ord('@'): key.AT, ord('['): key.BRACKETLEFT, ord('\\'): key.BACKSLASH, ord(']'): key.BRACKETRIGHT, ord('\x5e'): key.ASCIICIRCUM, ord('_'): key.UNDERSCORE, ord('\x60'): key.GRAVE, ord('`'): key.QUOTELEFT, ord('{'): key.BRACELEFT, ord('|'): key.BAR, ord('}'): key.BRACERIGHT, ord('~'): key.ASCIITILDE, }