1from fsgs.util import sdl2 2 3# with open(os.expanduser('~/Desktop/keys.txt'), 'wb') as f: 4# for key in sorted(sdl_key_codes.keys()): 5# value = str(sdl_key_codes[key]) 6# sdl_name = 'SDLK_' + key.upper() 7# try: 8# dik_name = 'DIK_' + sdlk_to_dik[key.upper()] 9# except KeyError: 10# dik_name = '' 11# try: 12# dik_code = str(dinput_key_codes[key.upper()]) 13# except KeyError: 14# dik_code = '' 15# f.write(" '" + sdl_name + "': (" + value + ", '" + dik_name + 16# "', " + dik_code + '),\n') 17 18 19class Key(object): 20 def __init__(self, name): 21 self.name = name 22 23 @property 24 def sdl_name(self): 25 return self.name 26 27 # Deprecated 28 @property 29 def sdl_code(self): 30 return key_table[self.name][0] 31 32 @property 33 def sdl2_key_code(self): 34 return key_table[self.name][0] 35 36 @property 37 def dinput_name(self): 38 return key_table[self.name][1] 39 40 @property 41 def dinput_code(self): 42 return key_table[self.name][2] 43 44 @property 45 def sdl2_scan_code(self): 46 return key_table[self.name][3] 47 48 def __str__(self): 49 return "<Key {}>".format(self.name) 50 51 52class Keyboard(object): 53 @staticmethod 54 def key(name): 55 # try: 56 # code = name.key.keysym.sym 57 # except AttributeError: 58 # pass 59 print("key({})".format(name)) 60 try: 61 code = name["key"] 62 except (KeyError, TypeError): 63 pass 64 else: 65 name = sdl_key_code_to_name[code] 66 if isinstance(name, int): 67 name = sdl_key_code_to_name[name] 68 name = name.upper() 69 if name.startswith("SDLK_"): 70 pass 71 else: 72 name = "SDLK_" + name 73 return Key(name) 74 75 76# class Keyboard(object): 77# @staticmethod 78# def key(name): 79# if isinstance(name, int): 80# name = sdl_key_code_to_name[name] 81# name = name.upper() 82# if name.startswith("SDLK_"): 83# pass 84# else: 85# name = "SDLK_" + name 86# return Key(name) 87 88 89key_table = { 90 "SDLK_NO_KEY": (0, "DIK_NO_KEY", 0, 0), 91 "SDLK_0": (48, "DIK_0", 11, sdl2.SDL_SCANCODE_0), 92 "SDLK_1": (49, "DIK_1", 2, sdl2.SDL_SCANCODE_1), 93 "SDLK_2": (50, "DIK_2", 3, sdl2.SDL_SCANCODE_2), 94 "SDLK_3": (51, "DIK_3", 4, sdl2.SDL_SCANCODE_3), 95 "SDLK_4": (52, "DIK_4", 5, sdl2.SDL_SCANCODE_4), 96 "SDLK_5": (53, "DIK_5", 6, sdl2.SDL_SCANCODE_5), 97 "SDLK_6": (54, "DIK_6", 7, sdl2.SDL_SCANCODE_6), 98 "SDLK_7": (55, "DIK_7", 8, sdl2.SDL_SCANCODE_7), 99 "SDLK_8": (56, "DIK_8", 9, sdl2.SDL_SCANCODE_8), 100 "SDLK_9": (57, "DIK_9", 10, sdl2.SDL_SCANCODE_9), 101 "SDLK_A": (97, "DIK_A", 30, sdl2.SDL_SCANCODE_A), 102 "SDLK_AMPERSAND": (38, "", 0), 103 "SDLK_ASTERISK": (42, "", 0), 104 "SDLK_AT": (64, "DIK_AT", 145), 105 "SDLK_B": (98, "DIK_B", 48), 106 "SDLK_BACKQUOTE": (96, "DIK_GRAVE", 0), 107 "SDLK_BACKSLASH": (92, "DIK_BACKSLASH", 43), 108 "SDLK_BACKSPACE": (sdl2.SDLK_BACKSPACE, "DIK_BACK", 14), 109 "SDLK_BREAK": (318, "", 0), 110 "SDLK_C": (99, "DIK_C", 46, sdl2.SDL_SCANCODE_C), 111 "SDLK_CAPSLOCK": (301, "DIK_CAPITAL", 58), 112 "SDLK_CARET": (94, "", 0), 113 "SDLK_CLEAR": (12, "", 0), 114 "SDLK_COLON": (58, "DIK_COLON", 146), 115 "SDLK_COMMA": (44, "DIK_COMMA", 51), 116 "SDLK_COMPOSE": (314, "", 0), 117 "SDLK_D": (100, "DIK_D", 32, sdl2.SDL_SCANCODE_D), 118 "SDLK_DELETE": (sdl2.SDLK_DELETE, "DIK_DELETE", 211), 119 "SDLK_DOLLAR": (36, "", 0), 120 "SDLK_DOWN": (sdl2.SDLK_DOWN, "DIK_DOWN", 208, sdl2.SDL_SCANCODE_DOWN), 121 "SDLK_E": (101, "DIK_E", 18), 122 "SDLK_END": (sdl2.SDLK_END, "DIK_END", 207), 123 "SDLK_EQUALS": (61, "DIK_EQUALS", 13), 124 "SDLK_ESCAPE": (sdl2.SDLK_ESCAPE, "DIK_ESCAPE", 1), 125 "SDLK_EURO": (321, "", 0), 126 "SDLK_EXCLAIM": (33, "", 0), 127 "SDLK_F": (102, "DIK_F", 33), 128 "SDLK_F1": (282, "DIK_F1", 59), 129 "SDLK_F10": (291, "DIK_F10", 68), 130 "SDLK_F11": (292, "DIK_F11", 87), 131 "SDLK_F12": (293, "DIK_F12", 88), 132 "SDLK_F13": (294, "DIK_F13", 100), 133 "SDLK_F14": (295, "DIK_F14", 101), 134 "SDLK_F15": (296, "DIK_F15", 102), 135 "SDLK_F2": (283, "DIK_F2", 60), 136 "SDLK_F3": (284, "DIK_F3", 61), 137 "SDLK_F4": (285, "DIK_F4", 62), 138 "SDLK_F5": (286, "DIK_F5", 63), 139 "SDLK_F6": (287, "DIK_F6", 64), 140 "SDLK_F7": (288, "DIK_F7", 65), 141 "SDLK_F8": (289, "DIK_F8", 66), 142 "SDLK_F9": (290, "DIK_F9", 67), 143 "SDLK_G": (103, "DIK_G", 34), 144 "SDLK_GREATER": (62, "", 0), 145 "SDLK_H": (104, "DIK_H", 35), 146 "SDLK_HASH": (35, "", 0), 147 "SDLK_HELP": (315, "", 0), 148 "SDLK_HOME": (sdl2.SDLK_HOME, "DIK_HOME", 199), 149 "SDLK_I": (105, "DIK_I", 23), 150 "SDLK_INSERT": (sdl2.SDLK_INSERT, "DIK_INSERT", 210), 151 "SDLK_J": (106, "DIK_J", 36), 152 "SDLK_K": (107, "DIK_K", 37), 153 "SDLK_KP0": (sdl2.SDLK_KP_0, "DIK_NUMPAD0", 82), 154 "SDLK_KP1": (sdl2.SDLK_KP_1, "DIK_NUMPAD1", 79), 155 "SDLK_KP2": (sdl2.SDLK_KP_2, "DIK_NUMPAD2", 80), 156 "SDLK_KP3": (sdl2.SDLK_KP_3, "DIK_NUMPAD3", 81), 157 "SDLK_KP4": (sdl2.SDLK_KP_4, "DIK_NUMPAD4", 75), 158 "SDLK_KP5": (sdl2.SDLK_KP_5, "DIK_NUMPAD5", 76), 159 "SDLK_KP6": (sdl2.SDLK_KP_6, "DIK_NUMPAD6", 77), 160 "SDLK_KP7": (sdl2.SDLK_KP_7, "DIK_NUMPAD7", 71), 161 "SDLK_KP8": (sdl2.SDLK_KP_8, "DIK_NUMPAD8", 72), 162 "SDLK_KP9": (sdl2.SDLK_KP_9, "DIK_NUMPAD9", 73), 163 "SDLK_KP_DIVIDE": (267, "DIK_DIVIDE", 181), 164 "SDLK_KP_ENTER": (271, "DIK_NUMPADENTER", 156), 165 "SDLK_KP_EQUALS": (272, "", 141), 166 "SDLK_KP_MINUS": (269, "DIK_SUBTRACT", 74), 167 "SDLK_KP_MULTIPLY": (268, "DIK_MULTIPLY", 55), 168 "SDLK_KP_PERIOD": (sdl2.SDLK_KP_PERIOD, "DIK_DECIMAL", 83), 169 "SDLK_KP_PLUS": (270, "DIK_ADD", 78), 170 "SDLK_L": (108, "DIK_L", 38, sdl2.SDL_SCANCODE_L), 171 "SDLK_LALT": (308, "DIK_LMENU", 56, sdl2.SDL_SCANCODE_LALT), 172 "SDLK_LCTRL": ( 173 sdl2.SDLK_LCTRL, 174 "DIK_LCONTROL", 175 29, 176 sdl2.SDL_SCANCODE_LCTRL, 177 ), 178 "SDLK_LEFT": (sdl2.SDLK_LEFT, "DIK_LEFT", 203, sdl2.SDL_SCANCODE_LEFT), 179 "SDLK_LEFTBRACKET": (91, "DIK_LBRACKET", 26), 180 "SDLK_LEFTPAREN": (40, "", 0), 181 "SDLK_LESS": (60, "", 0), 182 "SDLK_LMETA": (310, "", 0), 183 "SDLK_LSHIFT": ( 184 sdl2.SDLK_LSHIFT, 185 "DIK_LSHIFT", 186 42, 187 sdl2.SDL_SCANCODE_LSHIFT, 188 ), 189 "SDLK_LSUPER": (311, "DIK_LWIN", 219), # SDL_SCANCODE_LGUI ? 190 "SDLK_M": (109, "DIK_M", 50), 191 "SDLK_MENU": (319, "", 0), 192 "SDLK_MINUS": (45, "DIK_MINUS", 12), 193 "SDLK_MODE": (313, "", 0), 194 "SDLK_N": (110, "DIK_N", 49), 195 "SDLK_NUMLOCK": (300, "DIK_NUMLOCK", 69), 196 "SDLK_O": (111, "DIK_O", 24), 197 "SDLK_P": (112, "DIK_P", 25), 198 "SDLK_PAGEDOWN": (sdl2.SDLK_PAGEDOWN, "DIK_NEXT", 209), 199 "SDLK_PAGEUP": (sdl2.SDLK_PAGEUP, "DIK_PRIOR", 201), 200 "SDLK_PAUSE": (19, "", 0), 201 "SDLK_PERIOD": (46, "DIK_PERIOD", 52), 202 "SDLK_PLUS": (43, "", 0), 203 "SDLK_POWER": (320, "", 0), 204 "SDLK_PRINT": (316, "", 0), 205 "SDLK_Q": (113, "DIK_Q", 16), 206 "SDLK_QUESTION": (63, "", 0), 207 "SDLK_QUOTE": (39, "DIK_APOSTROPHE", 40), 208 "SDLK_QUOTEDBL": (34, "", 0), 209 "SDLK_R": (114, "DIK_R", 19), 210 "SDLK_RALT": (307, "DIK_RMENU", 184), 211 "SDLK_RCTRL": ( 212 sdl2.SDLK_RCTRL, 213 "DIK_RCONTROL", 214 157, 215 sdl2.SDL_SCANCODE_RCTRL, 216 ), 217 "SDLK_RETURN": ( 218 sdl2.SDLK_RETURN, 219 "DIK_RETURN", 220 28, 221 sdl2.SDL_SCANCODE_RETURN, 222 ), 223 "SDLK_RIGHT": (sdl2.SDLK_RIGHT, "DIK_RIGHT", 205, sdl2.SDL_SCANCODE_RIGHT), 224 "SDLK_RIGHTBRACKET": (93, "DIK_RBRACKET", 27), 225 "SDLK_RIGHTPAREN": (41, "", 0), 226 "SDLK_RMETA": (309, "", 0), 227 "SDLK_RSHIFT": ( 228 sdl2.SDLK_RSHIFT, 229 "DIK_RSHIFT", 230 54, 231 sdl2.SDL_SCANCODE_RSHIFT, 232 ), 233 "SDLK_RSUPER": (312, "DIK_RWIN", 220), 234 "SDLK_S": (115, "DIK_S", 31, sdl2.SDL_SCANCODE_S), 235 "SDLK_SCROLLOCK": (302, "DIK_SCROLL", 70), 236 "SDLK_SEMICOLON": (59, "DIK_SEMICOLON", 39), 237 "SDLK_SLASH": (47, "DIK_SLASH", 53), 238 "SDLK_SPACE": (sdl2.SDLK_SPACE, "DIK_SPACE", 57, sdl2.SDL_SCANCODE_SPACE), 239 "SDLK_SYSREQ": (317, "DIK_SYSRQ", 183), 240 "SDLK_T": (116, "DIK_T", 20), 241 "SDLK_TAB": (9, "DIK_TAB", 15), 242 "SDLK_U": (117, "DIK_U", 22), 243 "SDLK_UNDERSCORE": (95, "", 147), 244 "SDLK_UNDO": (322, "", 0), 245 "SDLK_UP": (sdl2.SDLK_UP, "DIK_UP", 200, sdl2.SDL_SCANCODE_UP), 246 "SDLK_V": (118, "DIK_V", 47), 247 "SDLK_W": (119, "DIK_W", 17), 248 "SDLK_WORLD_0": (160, ""), 249 "SDLK_WORLD_1": (161, ""), 250 "SDLK_WORLD_10": (170, ""), 251 "SDLK_WORLD_11": (171, ""), 252 "SDLK_WORLD_12": (172, ""), 253 "SDLK_WORLD_13": (173, ""), 254 "SDLK_WORLD_14": (174, ""), 255 "SDLK_WORLD_15": (175, ""), 256 "SDLK_WORLD_16": (176, ""), 257 "SDLK_WORLD_17": (177, ""), 258 "SDLK_WORLD_18": (178, ""), 259 "SDLK_WORLD_19": (179, ""), 260 "SDLK_WORLD_2": (162, ""), 261 "SDLK_WORLD_20": (180, ""), 262 "SDLK_WORLD_21": (181, ""), 263 "SDLK_WORLD_22": (182, ""), 264 "SDLK_WORLD_23": (183, ""), 265 "SDLK_WORLD_24": (184, ""), 266 "SDLK_WORLD_25": (185, ""), 267 "SDLK_WORLD_26": (186, ""), 268 "SDLK_WORLD_27": (187, ""), 269 "SDLK_WORLD_28": (188, ""), 270 "SDLK_WORLD_29": (189, ""), 271 "SDLK_WORLD_3": (163, ""), 272 "SDLK_WORLD_30": (190, ""), 273 "SDLK_WORLD_31": (191, ""), 274 "SDLK_WORLD_32": (192, ""), 275 "SDLK_WORLD_33": (193, ""), 276 "SDLK_WORLD_34": (194, ""), 277 "SDLK_WORLD_35": (195, ""), 278 "SDLK_WORLD_36": (196, ""), 279 "SDLK_WORLD_37": (197, ""), 280 "SDLK_WORLD_38": (198, ""), 281 "SDLK_WORLD_39": (199, ""), 282 "SDLK_WORLD_4": (164, ""), 283 "SDLK_WORLD_40": (200, ""), 284 "SDLK_WORLD_41": (201, ""), 285 "SDLK_WORLD_42": (202, ""), 286 "SDLK_WORLD_43": (203, ""), 287 "SDLK_WORLD_44": (204, ""), 288 "SDLK_WORLD_45": (205, ""), 289 "SDLK_WORLD_46": (206, ""), 290 "SDLK_WORLD_47": (207, ""), 291 "SDLK_WORLD_48": (208, ""), 292 "SDLK_WORLD_49": (209, ""), 293 "SDLK_WORLD_5": (165, ""), 294 "SDLK_WORLD_50": (210, ""), 295 "SDLK_WORLD_51": (211, ""), 296 "SDLK_WORLD_52": (212, ""), 297 "SDLK_WORLD_53": (213, ""), 298 "SDLK_WORLD_54": (214, ""), 299 "SDLK_WORLD_55": (215, ""), 300 "SDLK_WORLD_56": (216, ""), 301 "SDLK_WORLD_57": (217, ""), 302 "SDLK_WORLD_58": (218, ""), 303 "SDLK_WORLD_59": (219, ""), 304 "SDLK_WORLD_6": (166, ""), 305 "SDLK_WORLD_60": (220, ""), 306 "SDLK_WORLD_61": (221, ""), 307 "SDLK_WORLD_62": (222, ""), 308 "SDLK_WORLD_63": (223, ""), 309 "SDLK_WORLD_64": (224, ""), 310 "SDLK_WORLD_65": (225, ""), 311 "SDLK_WORLD_66": (226, ""), 312 "SDLK_WORLD_67": (227, ""), 313 "SDLK_WORLD_68": (228, ""), 314 "SDLK_WORLD_69": (229, ""), 315 "SDLK_WORLD_7": (167, ""), 316 "SDLK_WORLD_70": (230, ""), 317 "SDLK_WORLD_71": (231, ""), 318 "SDLK_WORLD_72": (232, ""), 319 "SDLK_WORLD_73": (233, ""), 320 "SDLK_WORLD_74": (234, ""), 321 "SDLK_WORLD_75": (235, ""), 322 "SDLK_WORLD_76": (236, ""), 323 "SDLK_WORLD_77": (237, ""), 324 "SDLK_WORLD_78": (238, ""), 325 "SDLK_WORLD_79": (239, ""), 326 "SDLK_WORLD_8": (168, ""), 327 "SDLK_WORLD_80": (240, ""), 328 "SDLK_WORLD_81": (241, ""), 329 "SDLK_WORLD_82": (242, ""), 330 "SDLK_WORLD_83": (243, ""), 331 "SDLK_WORLD_84": (244, ""), 332 "SDLK_WORLD_85": (245, ""), 333 "SDLK_WORLD_86": (246, ""), 334 "SDLK_WORLD_87": (247, ""), 335 "SDLK_WORLD_88": (248, ""), 336 "SDLK_WORLD_89": (249, ""), 337 "SDLK_WORLD_9": (169, ""), 338 "SDLK_WORLD_90": (250, ""), 339 "SDLK_WORLD_91": (251, ""), 340 "SDLK_WORLD_92": (252, ""), 341 "SDLK_WORLD_93": (253, ""), 342 "SDLK_WORLD_94": (254, ""), 343 "SDLK_WORLD_95": (255, ""), 344 "SDLK_X": (120, "DIK_X", 45, sdl2.SDL_SCANCODE_X), 345 "SDLK_Y": (121, "DIK_Y", 21, sdl2.SDL_SCANCODE_Y), 346 "SDLK_Z": (122, "DIK_Z", 44, sdl2.SDL_SCANCODE_Z), 347} 348 349sdl_key_code_to_name = {} 350for key, value in key_table.items(): 351 sdl_key_code_to_name[value[0]] = key 352