From 2ffb12ac6b1fb584284d3061bf7bff6d43c51dd0 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 26 Jan 2022 01:03:31 +0100 Subject: registryd: unlock capslock during keysym synthesis otherwise the synthesized keysyms would be affected by the capslock state, thus producing unexpected capitalized result when an AT tries to synthesize text. Fixes #50 --- registryd/deviceeventcontroller.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/registryd/deviceeventcontroller.c b/registryd/deviceeventcontroller.c index c8dc4ebb..50b44eb3 100644 --- a/registryd/deviceeventcontroller.c +++ b/registryd/deviceeventcontroller.c @@ -1702,12 +1702,17 @@ spi_dec_synth_keysym (SpiDEController *controller, long keysym) if (synth_mods != modifiers) { lock_mods = synth_mods & ~modifiers; spi_dec_plat_lock_modifiers (controller, lock_mods); + if (modifiers & LockMask) + spi_dec_plat_unlock_modifiers (controller, LockMask); } spi_dec_plat_synth_keycode_press (controller, key_synth_code); spi_dec_plat_synth_keycode_release (controller, key_synth_code); - if (synth_mods != modifiers) + if (synth_mods != modifiers) { spi_dec_plat_unlock_modifiers (controller, lock_mods); + if (modifiers & LockMask) + spi_dec_plat_lock_modifiers (controller, LockMask); + } return TRUE; } -- cgit v1.2.1