From a4c15d5c7e9a3c68a6fd75d7881bab9e506781c8 Mon Sep 17 00:00:00 2001 From: Daniel Lorch Date: Tue, 20 May 2025 01:09:15 +0200 Subject: [PATCH] Revert "Move hold key handling into Go backend analogous to https://www.kernel.org/doc/Documentation/usb/gadget_hid.txt" This reverts commit 146cee9309ca7a8b7ab103e955f3fcc38a4bc692. --- internal/usbgadget/hid_keyboard.go | 9 +-------- jsonrpc.go | 2 +- ui/src/components/popovers/PasteModal.tsx | 11 +++++++---- ui/src/hooks/useKeyboard.ts | 6 +----- usb.go | 4 ++-- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/internal/usbgadget/hid_keyboard.go b/internal/usbgadget/hid_keyboard.go index dbebb2d..de007e4 100644 --- a/internal/usbgadget/hid_keyboard.go +++ b/internal/usbgadget/hid_keyboard.go @@ -74,7 +74,7 @@ func (u *UsbGadget) keyboardWriteHidFile(data []byte) error { return nil } -func (u *UsbGadget) KeyboardReport(modifier uint8, keys []uint8, hold bool) error { +func (u *UsbGadget) KeyboardReport(modifier uint8, keys []uint8) error { u.keyboardLock.Lock() defer u.keyboardLock.Unlock() @@ -90,13 +90,6 @@ func (u *UsbGadget) KeyboardReport(modifier uint8, keys []uint8, hold bool) erro return err } - if !hold { - err := u.keyboardWriteHidFile(make([]uint8, 8)) - if err != nil { - return err - } - } - u.resetUserInputTime() return nil } diff --git a/jsonrpc.go b/jsonrpc.go index 46d88c1..5dd96da 100644 --- a/jsonrpc.go +++ b/jsonrpc.go @@ -992,7 +992,7 @@ var rpcHandlers = map[string]RPCHandler{ "getNetworkSettings": {Func: rpcGetNetworkSettings}, "setNetworkSettings": {Func: rpcSetNetworkSettings, Params: []string{"settings"}}, "renewDHCPLease": {Func: rpcRenewDHCPLease}, - "keyboardReport": {Func: rpcKeyboardReport, Params: []string{"modifier", "keys", "hold"}}, + "keyboardReport": {Func: rpcKeyboardReport, Params: []string{"modifier", "keys"}}, "absMouseReport": {Func: rpcAbsMouseReport, Params: []string{"x", "y", "buttons"}}, "relMouseReport": {Func: rpcRelMouseReport, Params: []string{"dx", "dy", "buttons"}}, "wheelReport": {Func: rpcWheelReport, Params: []string{"wheelY"}}, diff --git a/ui/src/components/popovers/PasteModal.tsx b/ui/src/components/popovers/PasteModal.tsx index 61cd814..5040572 100644 --- a/ui/src/components/popovers/PasteModal.tsx +++ b/ui/src/components/popovers/PasteModal.tsx @@ -13,8 +13,8 @@ import { keys, modifiers } from "@/keyboardMappings"; import { layouts, chars } from "@/keyboardLayouts"; import notifications from "@/notifications"; -const hidKeyboardPayload = (keys: number[], modifier: number, hold: boolean) => { - return { keys, modifier, hold }; +const hidKeyboardPayload = (keys: number[], modifier: number) => { + return { keys, modifier }; }; const modifierCode = (shift?: boolean, altRight?: boolean) => { @@ -82,10 +82,13 @@ export default function PasteModal() { await new Promise((resolve, reject) => { send( "keyboardReport", - hidKeyboardPayload([kei], modz[index], false), + hidKeyboardPayload([kei], modz[index]), params => { if ("error" in params) return reject(params.error); - resolve(); + send("keyboardReport", hidKeyboardPayload([], 0), params => { + if ("error" in params) return reject(params.error); + resolve(); + }); }, ); }); diff --git a/ui/src/hooks/useKeyboard.ts b/ui/src/hooks/useKeyboard.ts index 67fa1c1..0ce1eef 100644 --- a/ui/src/hooks/useKeyboard.ts +++ b/ui/src/hooks/useKeyboard.ts @@ -4,10 +4,6 @@ import { useHidStore, useRTCStore } from "@/hooks/stores"; import { useJsonRpc } from "@/hooks/useJsonRpc"; import { keys, modifiers } from "@/keyboardMappings"; -const hidKeyboardPayload = (keys: number[], modifier: number, hold: boolean) => { - return { keys, modifier, hold }; -}; - export default function useKeyboard() { const [send] = useJsonRpc(); @@ -21,7 +17,7 @@ export default function useKeyboard() { if (rpcDataChannel?.readyState !== "open") return; const accModifier = modifiers.reduce((acc, val) => acc + val, 0); - send("keyboardReport", hidKeyboardPayload(keys, accModifier, true)); + send("keyboardReport", { keys, modifier: accModifier }); // We do this for the info bar to display the currently pressed keys for the user updateActiveKeysAndModifiers({ keys: keys, modifiers: modifiers }); diff --git a/usb.go b/usb.go index 1ecd8d3..91674c9 100644 --- a/usb.go +++ b/usb.go @@ -26,8 +26,8 @@ func initUsbGadget() { }() } -func rpcKeyboardReport(modifier uint8, keys []uint8, hold bool) error { - return gadget.KeyboardReport(modifier, keys, hold) +func rpcKeyboardReport(modifier uint8, keys []uint8) error { + return gadget.KeyboardReport(modifier, keys) } func rpcAbsMouseReport(x, y int, buttons uint8) error {