From 4ee7056ff824496af2b8cf7be24f89a66c3e5b4b Mon Sep 17 00:00:00 2001 From: nerdopolis Date: Mon, 4 Dec 2023 17:41:26 -0500 Subject: [PATCH] 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. --- src/libply-splash-core/ply-input-device.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 (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 */