ply-input-device: Handle modifiers better

At the moment, holding down the shift key sends
key repeat events that lead to the output not
getting properly shifted.

This commit avoids updating modifier state when
the modifer key is held down.
This commit is contained in:
nerdopolis 2023-12-04 17:41:26 -05:00 committed by Ray Strode
parent 6b5bd35a0e
commit 4ee7056ff8

View file

@ -237,12 +237,14 @@ on_input (ply_input_device_t *input_device)
symbol = xkb_state_key_get_one_sym (input_device->keyboard_state, keycode);
updated_state = xkb_state_update_key (input_device->keyboard_state, keycode, xkb_key_direction);
if (key_state != PLY_KEY_HELD) {
updated_state = xkb_state_update_key (input_device->keyboard_state, keycode, xkb_key_direction);
if ((updated_state & XKB_STATE_LEDS) != 0) {
ply_trace ("Keyboard indicator lights need update");
input_device->leds_state_invalid = true;
ply_trigger_pull (input_device->leds_changed_trigger, input_device);
if ((updated_state & XKB_STATE_LEDS) != 0) {
ply_trace ("Keyboard indicator lights need update");
input_device->leds_state_invalid = true;
ply_trigger_pull (input_device->leds_changed_trigger, input_device);
}
}
/* If the key is repeating, or is being pressed down */