ThinLinc 4.10.0 (via bug 400) got support for synchronising the state of the lock keys (caps lock, num lock, scroll lock) between the server and the client. This solves some special corner cases. Unfortunately, we accidentally broke this in ThinLinc 4.12.0 in bug 7373 when some debug code was accidentally left in. The upstream commit breaking this is this one: https://github.com/TigerVNC/tigervnc/commit/81e114f29f007c689a41ca2bb72f314d50898381 Things have mostly worked fine anyway, since it is rare this synchronisation matters. We also added some fallback handling in bug 400 that further minimises when issues arise.
To test this: 1. Connect to a session 2. Switch to a different window locally 3. Switch lock state (e.g. enable caps lock) 4. Switch focus back to the client At this point, the lock state on the server should immediately change (check for fake key events via xev), but it currently doesn't. Fake key events are now instead sent when the server detects that something is off. Generally, when you press a letter key.
Fixed upstream: https://github.com/TigerVNC/tigervnc/commit/7ac8711ddb79124946ab9a7092ee8999e765c295