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+1, events[i].value > 0);
}
nassertd(code >= 0 && (size_t)code < _axis_indices.size()) break;
index = _axis_indices[code];
if (index >= 0) {
axis_changed(index, events[i].value);
if (code >= 0 && (size_t)code < _axis_indices.size()) {
index = _axis_indices[code];
if (index >= 0) {
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;
case EV_KEY:
nassertd(code >= 0 && (size_t)code < _button_indices.size()) break;
index = _button_indices[code];
if (index >= 0) {
button_changed(index, events[i].value != 0);
if (code >= 0 && (size_t)code < _button_indices.size()) {
index = _button_indices[code];
if (index >= 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) {
axis_changed(_ltrigger_axis, events[i].value);
} else if (code == _rtrigger_code) {
axis_changed(_ltrigger_axis + 1, events[i].value);
else if (device_cat.is_debug()) {
device_cat.debug()
<< "Ignoring EV_KEY event with unknown code " << code << "\n";
}
break;