Sync controller mappings DB with SDL2 community repo

Synced with gabomdq/SDL_GameControllerDB@322aac4bb7.

Also improve parser errors to allow identifying the problematic mappings.

(cherry picked from commit 4b247e7ffa)
This commit is contained in:
Rémi Verschelde 2021-11-03 19:29:30 +01:00
parent 6beaf63dbe
commit 86858d96c0
No known key found for this signature in database
GPG Key ID: C3336907360768E1
3 changed files with 764 additions and 289 deletions

View File

@ -22,9 +22,7 @@ generous deed immortalized in the next stable release of Godot Engine.
## Silver sponsors ## Silver sponsors
ABE
ASIFA-Hollywood <https://www.asifa-hollywood.org> ASIFA-Hollywood <https://www.asifa-hollywood.org>
jong
## Bronze sponsors ## Bronze sponsors

File diff suppressed because it is too large Load Diff

View File

@ -1137,14 +1137,15 @@ void InputDefault::parse_mapping(String p_mapping) {
String output = entry[idx].get_slice(":", 0).replace(" ", ""); String output = entry[idx].get_slice(":", 0).replace(" ", "");
String input = entry[idx].get_slice(":", 1).replace(" ", ""); String input = entry[idx].get_slice(":", 1).replace(" ", "");
ERR_CONTINUE_MSG(output.length() < 1 || input.length() < 2, ERR_CONTINUE_MSG(output.length() < 1 || input.length() < 2,
String(entry[idx] + "\nInvalid device mapping entry: " + entry[idx])); vformat("Invalid device mapping entry \"%s\" in mapping:\n%s", entry[idx], p_mapping));
if (output == "platform" || output == "hint") if (output == "platform" || output == "hint")
continue; continue;
JoyAxisRange output_range = FULL_AXIS; JoyAxisRange output_range = FULL_AXIS;
if (output[0] == '+' || output[0] == '-') { if (output[0] == '+' || output[0] == '-') {
ERR_CONTINUE_MSG(output.length() < 2, String(entry[idx] + "\nInvalid output: " + entry[idx])); ERR_CONTINUE_MSG(output.length() < 2,
vformat("Invalid output entry \"%s\" in mapping:\n%s", entry[idx], p_mapping));
if (output[0] == '+') if (output[0] == '+')
output_range = POSITIVE_HALF_AXIS; output_range = POSITIVE_HALF_AXIS;
else if (output[0] == '-') else if (output[0] == '-')
@ -1169,9 +1170,9 @@ void InputDefault::parse_mapping(String p_mapping) {
JoystickList output_button = _get_output_button(output); JoystickList output_button = _get_output_button(output);
JoystickList output_axis = _get_output_axis(output); JoystickList output_axis = _get_output_axis(output);
ERR_CONTINUE_MSG(output_button == JOY_INVALID_OPTION && output_axis == JOY_INVALID_OPTION, ERR_CONTINUE_MSG(output_button == JOY_INVALID_OPTION && output_axis == JOY_INVALID_OPTION,
String(entry[idx] + "\nUnrecognised output string: " + output)); vformat("Unrecognised output string \"%s\" in mapping:\n%s", output, p_mapping));
ERR_CONTINUE_MSG(output_button != JOY_INVALID_OPTION && output_axis != JOY_INVALID_OPTION, ERR_CONTINUE_MSG(output_button != JOY_INVALID_OPTION && output_axis != JOY_INVALID_OPTION,
String("BUG: Output string matched both button and axis: " + output)); vformat("Output string \"%s\" matched both button and axis in mapping:\n%s", output, p_mapping));
JoyBinding binding; JoyBinding binding;
if (output_button != JOY_INVALID_OPTION) { if (output_button != JOY_INVALID_OPTION) {
@ -1196,13 +1197,13 @@ void InputDefault::parse_mapping(String p_mapping) {
break; break;
case 'h': case 'h':
ERR_CONTINUE_MSG(input.length() != 4 || input[2] != '.', ERR_CONTINUE_MSG(input.length() != 4 || input[2] != '.',
String(entry[idx] + "\nInvalid hat input: " + input)); vformat("Invalid had input \"%s\" in mapping:\n%s", input, p_mapping));
binding.inputType = TYPE_HAT; binding.inputType = TYPE_HAT;
binding.input.hat.hat = input.substr(1, 1).to_int(); binding.input.hat.hat = input.substr(1, 1).to_int();
binding.input.hat.hat_mask = static_cast<HatMask>(input.right(3).to_int()); binding.input.hat.hat_mask = static_cast<HatMask>(input.right(3).to_int());
break; break;
default: default:
ERR_CONTINUE_MSG(true, String(entry[idx] + "\nUnrecognised input string: " + input)); ERR_CONTINUE_MSG(true, vformat("Unrecognized input string \"%s\" in mapping:\n%s", input, p_mapping));
} }
mapping.bindings.push_back(binding); mapping.bindings.push_back(binding);