From: nerdopolis Date: Mon, 4 Dec 2023 22:41:26 +0000 (-0500) Subject: ply-input-device: Handle modifiers better X-Git-Tag: 23.51.283~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ee7056ff824496af2b8cf7be24f89a66c3e5b4b;p=thirdparty%2Fplymouth.git 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. --- diff --git a/src/libply-splash-core/ply-input-device.c b/src/libply-splash-core/ply-input-device.c index db826ab9..02506090 100644 --- a/src/libply-splash-core/ply-input-device.c +++ b/src/libply-splash-core/ply-input-device.c @@ -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 ((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 (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 the key is repeating, or is being pressed down */