kvm/internal/usbgadget
Aveline afb146d78c
feat: release keyPress automatically (#796)
* feat: release keyPress automatically

* send keepalive when pressing the key

* remove logging

* clean up logging

* chore: use unreliable channel to send keepalive events

* chore: use ordered unreliable channel for pointer events

* chore: adjust auto release key interval

* chore: update logging for kbdAutoReleaseLock

* chore: update comment for KEEPALIVE_INTERVAL

* fix: should cancelAutorelease when pressed is true

* fix: handshake won't happen if webrtc reconnects

* chore: add trace log for writeWithTimeout

* chore: add timeout for KeypressReport

* chore: use the proper key to send release command

* refactor: simplify HID RPC keyboard input handling and improve key state management

- Updated `handleHidRPCKeyboardInput` to return errors directly instead of keys down state.
- Refactored `rpcKeyboardReport` and `rpcKeypressReport` to return errors instead of states.
- Introduced a queue for managing key down state updates in the `Session` struct to prevent input handling stalls.
- Adjusted the `UpdateKeysDown` method to handle state changes more efficiently.
- Removed unnecessary logging and commented-out code for clarity.

* refactor: enhance keyboard auto-release functionality and key state management

* fix: correct Windows default auto-repeat delay comment from 1ms to 1s

* refactor: send keypress as early as possible

* refactor: replace console.warn with console.info for HID RPC channel events

* refactor: remove unused NewKeypressKeepAliveMessage function from HID RPC

* fix: handle error in key release process and log warnings

* fix: log warning on keypress report failure

* fix: update auto-release keyboard interval to 225

* refactor: enhance keep-alive handling and jitter compensation in HID RPC

- Implemented staleness guard to ignore outdated keep-alive packets.
- Added jitter compensation logic to adjust timer extensions based on packet arrival times.
- Introduced new methods for managing keep-alive state and reset functionality in the Session struct.
- Updated auto-release delay mechanism to use dynamic durations based on keep-alive timing.
- Adjusted keep-alive interval in the UI to improve responsiveness.

* gofmt

* clean up code

* chore: use dynamic duration for scheduleAutoRelease

* Use harcoded timer reset value for now

* fix: prevent nil pointer dereference when stopping timers in Close method

* refactor: remove nil check for kbdAutoReleaseTimers in DelayAutoReleaseWithDuration

* refactor: optimize dependencies in useHidRpc hooks

* refactor: streamline keep-alive timer management in useKeyboard hook

* refactor: clarify comments in useKeyboard hook for resetKeyboardState function

* refactor: reduce keysDownStateQueueSize

* refactor: close and reset keysDownStateQueue in newSession function

* chore: resolve conflicts

* resolve conflicts

---------

Co-authored-by: Adam Shiervani <adam.shiervani@gmail.com>
2025-09-18 13:35:47 +02:00
..
changeset.go fix: configFS might not be mounted if the directory exists (#479) 2025-05-19 23:59:02 +02:00
changeset_arm_test.go chore(usbgadget): update usbgadget config only when needed (#474) 2025-05-19 21:48:43 +02:00
changeset_resolver.go fix(usbgadget): do not panic if a change isn't found (#481) 2025-05-20 00:34:32 +02:00
changeset_symlink.go fix: unit test not returning error when test fails 2025-05-19 22:51:11 +02:00
config.go chore: fix the base usb configuration (#610) 2025-07-09 23:57:51 +02:00
config_tx.go fix(usbgadget): do not panic if a change isn't found (#481) 2025-05-20 00:34:32 +02:00
consts.go feat: hid rpc channel (#755) 2025-09-04 22:27:56 +02:00
hid.go refactor(usb): move usbconfig to a seperated package 2025-03-10 14:02:52 +01:00
hid_keyboard.go feat: release keyPress automatically (#796) 2025-09-18 13:35:47 +02:00
hid_mouse_absolute.go feat: hid rpc channel (#755) 2025-09-04 22:27:56 +02:00
hid_mouse_relative.go feat: hid rpc channel (#755) 2025-09-04 22:27:56 +02:00
log.go chore(usbgadget): update usbgadget config only when needed (#474) 2025-05-19 21:48:43 +02:00
mass_storage.go feat(usb_mass_storage): mount as disk (#333) 2025-05-12 19:07:27 +02:00
udc.go chore(usbgadget): update usbgadget config only when needed (#474) 2025-05-19 21:48:43 +02:00
usbgadget.go feat: release keyPress automatically (#796) 2025-09-18 13:35:47 +02:00
utils.go feat: release keyPress automatically (#796) 2025-09-18 13:35:47 +02:00