diff options
author | chai <chaifix@163.com> | 2020-09-10 20:30:31 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-09-10 20:30:31 +0800 |
commit | 639b34294ffc20721c66db46e59e07d9100ac4b8 (patch) | |
tree | 7e1d45b536fa35e9f1559e468ea66fca99524573 /ThirdParty/SDL2/src/joystick/sort_controllers.py |
*init
Diffstat (limited to 'ThirdParty/SDL2/src/joystick/sort_controllers.py')
-rw-r--r-- | ThirdParty/SDL2/src/joystick/sort_controllers.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/ThirdParty/SDL2/src/joystick/sort_controllers.py b/ThirdParty/SDL2/src/joystick/sort_controllers.py new file mode 100644 index 0000000..47213c2 --- /dev/null +++ b/ThirdParty/SDL2/src/joystick/sort_controllers.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python +# +# Script to sort the game controller database entries in SDL_gamecontroller.c + +import re + + +filename = "SDL_gamecontrollerdb.h" +input = open(filename) +output = open(filename + ".new", "w") +parsing_controllers = False +controllers = [] +controller_guids = {} +split_pattern = re.compile(r'([^"]*")([^,]*,)([^,]*,)([^"]*)(".*)') + +def save_controller(line): + global controllers + match = split_pattern.match(line) + entry = [ match.group(1), match.group(2), match.group(3) ] + bindings = sorted(match.group(4).split(",")) + if (bindings[0] == ""): + bindings.pop(0) + entry.extend(",".join(bindings) + ",") + entry.append(match.group(5)) + controllers.append(entry) + +def write_controllers(): + global controllers + global controller_guids + for entry in sorted(controllers, key=lambda entry: entry[2]): + line = "".join(entry) + "\n" + line = line.replace("\t", " ") + if not line.endswith(",\n") and not line.endswith("*/\n"): + print("Warning: '%s' is missing a comma at the end of the line" % (line)) + if (entry[1] in controller_guids): + print("Warning: entry '%s' is duplicate of entry '%s'" % (entry[2], controller_guids[entry[1]][2])) + controller_guids[entry[1]] = entry + + output.write(line) + controllers = [] + controller_guids = {} + +for line in input: + if (parsing_controllers): + if (line.startswith("{")): + output.write(line) + elif (line.startswith(" NULL")): + parsing_controllers = False + write_controllers() + output.write(line) + elif (line.startswith("#if")): + print("Parsing " + line.strip()) + output.write(line) + elif (line.startswith("#endif")): + write_controllers() + output.write(line) + else: + save_controller(line) + else: + if (line.startswith("static const char *s_ControllerMappings")): + parsing_controllers = True + + output.write(line) + +output.close() +print("Finished writing %s.new" % filename) |