device: Silently ignore invalid evdev keycodes generated by some drivers

Fixes #1066
This commit is contained in:
rdb 2020-12-15 12:33:22 +01:00
parent 10ef9b3456
commit 6f35cb0235

View File

@ -806,23 +806,33 @@ process_events() {
button_changed(_dpad_up_button, events[i].value < 0); button_changed(_dpad_up_button, events[i].value < 0);
button_changed(_dpad_up_button+1, events[i].value > 0); button_changed(_dpad_up_button+1, events[i].value > 0);
} }
nassertd(code >= 0 && (size_t)code < _axis_indices.size()) break; if (code >= 0 && (size_t)code < _axis_indices.size()) {
index = _axis_indices[code]; index = _axis_indices[code];
if (index >= 0) { if (index >= 0) {
axis_changed(index, events[i].value); axis_changed(index, events[i].value);
}
}
else if (device_cat.is_debug()) {
device_cat.debug()
<< "Ignoring EV_ABS event with unknown code " << code << "\n";
} }
break; break;
case EV_KEY: case EV_KEY:
nassertd(code >= 0 && (size_t)code < _button_indices.size()) break; if (code >= 0 && (size_t)code < _button_indices.size()) {
index = _button_indices[code]; index = _button_indices[code];
if (index >= 0) { if (index >= 0) {
button_changed(index, events[i].value != 0); button_changed(index, events[i].value != 0);
}
if (code == _ltrigger_code) {
axis_changed(_ltrigger_axis, events[i].value);
} else if (code == _rtrigger_code) {
axis_changed(_ltrigger_axis + 1, events[i].value);
}
} }
if (code == _ltrigger_code) { else if (device_cat.is_debug()) {
axis_changed(_ltrigger_axis, events[i].value); device_cat.debug()
} else if (code == _rtrigger_code) { << "Ignoring EV_KEY event with unknown code " << code << "\n";
axis_changed(_ltrigger_axis + 1, events[i].value);
} }
break; break;