- Conducted an audit against upstream RustDesk tag 1.4.8, confirming no breaking changes to the wire format.
- Implemented various fixes including client version string, supported encoding handshake, and multi-session handling.
- Updated language files for Arabic, Czech, Danish, German, English, and Spanish to reflect new UI elements and messages.
- Enhanced clipboard and file transfer functionalities to match upstream behavior.
Send modifiers and nav keys as Map scancodes (not mixed Legacy controlKey),
restore Auto/Windows hybrid for symbols, and add protobuf regression tests.
Add keyboard-encoder.js for Legacy chr+modifiers and full Map scancode path so Shift, Caps Lock, and symbol keys work reliably on relay sessions including Hyper-V.
Added new modifier constants for Alt, Control, Meta, and Shift in the RDInput class. Implemented methods to determine when to use scancode mapping for letter keys and to strip unnecessary modifiers for character inputs. Updated the _sendKey and _sendKeyForCode methods to accommodate these changes. Enhanced tests to verify the correct application of scancode mapping and modifier handling in various scenarios.
Added support for CapsLock and NumLock modifiers in the RDInput class to synchronize remote key events. Introduced methods to determine letter and numpad key codes, and updated the key handling logic to account for CapsLock state in Legacy mode. Enhanced tests to verify the correct application of these modifiers during key events.
Change the behavior of the _releaseAllKeys method to not release unpressed modifier keys during stop and blur events. This adjustment ensures that only actively pressed keys are released, improving input synchronization. Additionally, update related tests to verify the new behavior.
Implement keyboard mode options (Legacy, Map, Auto) and a reset keyboard feature in the remote viewer. Update UI to include buttons for selecting keyboard mode and resetting the keyboard state, enhancing user control over remote input settings. Update localization files for new strings across multiple languages.