From 8abcd1efe888728df793f241a64b9482e3bc5449 Mon Sep 17 00:00:00 2001 From: Siyuan Miao Date: Thu, 4 Sep 2025 16:55:44 +0200 Subject: [PATCH] chore: remove keyPressReportApiAvailable --- ui/src/hooks/stores.ts | 7 ++----- ui/src/hooks/useKeyboard.ts | 15 ++------------- ui/src/routes/devices.$id.tsx | 6 +----- 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/ui/src/hooks/stores.ts b/ui/src/hooks/stores.ts index 43f838be..df0de74b 100644 --- a/ui/src/hooks/stores.ts +++ b/ui/src/hooks/stores.ts @@ -461,8 +461,8 @@ export interface HidState { keysDownState: KeysDownState; setKeysDownState: (state: KeysDownState) => void; - keyPressReportApiAvailable: boolean; - setkeyPressReportApiAvailable: (available: boolean) => void; + // keyPressReportApiAvailable is no longer needed, we'll simply use hidChannel available to + // determine if the device supports keyPressReport isVirtualKeyboardEnabled: boolean; setVirtualKeyboardEnabled: (enabled: boolean) => void; @@ -481,9 +481,6 @@ export const useHidStore = create(set => ({ keysDownState: { modifier: 0, keys: [0,0,0,0,0,0] } as KeysDownState, setKeysDownState: (state: KeysDownState): void => set({ keysDownState: state }), - keyPressReportApiAvailable: true, - setkeyPressReportApiAvailable: (available: boolean) => set({ keyPressReportApiAvailable: available }), - isVirtualKeyboardEnabled: false, setVirtualKeyboardEnabled: (enabled: boolean): void => set({ isVirtualKeyboardEnabled: enabled }), diff --git a/ui/src/hooks/useKeyboard.ts b/ui/src/hooks/useKeyboard.ts index 7ba89dbf..9f4e5a5e 100644 --- a/ui/src/hooks/useKeyboard.ts +++ b/ui/src/hooks/useKeyboard.ts @@ -21,23 +21,15 @@ export default function useKeyboard() { // dynamically set when the device responds to the first key press event or reports its // keysDownState when queried since the keyPressReport was introduced together with the // getKeysDownState API. - const { keyPressReportApiAvailable, setkeyPressReportApiAvailable } = useHidStore(); - const enableKeyPressReport = useCallback((reason: string) => { - if (keyPressReportApiAvailable) return; - console.debug(`Enable keyPressReport API because ${reason}`); - setkeyPressReportApiAvailable(true); - }, [setkeyPressReportApiAvailable, keyPressReportApiAvailable]); // HidRPC is a binary format for exchanging keyboard and mouse events const { reportKeyboardEvent, reportKeypressEvent, rpcHidReady } = useHidRpc((message) => { switch (message.constructor) { case KeysDownStateMessage: setKeysDownState((message as KeysDownStateMessage).keysDownState); - enableKeyPressReport("HidRPC:KeysDownStateMessage received"); break; case KeyboardLedStateMessage: setKeyboardLedState((message as KeyboardLedStateMessage).keyboardLedState); - enableKeyPressReport("HidRPC:KeyboardLedStateMessage received"); break; default: break; @@ -57,7 +49,6 @@ export default function useKeyboard() { if (rpcHidReady) { console.debug("Sending keyboard report via HidRPC"); reportKeyboardEvent(state.keys, state.modifier); - enableKeyPressReport("HidRPC:KeyboardReport received"); return; } @@ -72,7 +63,6 @@ export default function useKeyboard() { rpcHidReady, send, reportKeyboardEvent, - enableKeyPressReport, ], ); @@ -154,7 +144,7 @@ export default function useKeyboard() { return; } - if (keyPressReportApiAvailable) { + if (rpcHidReady) { // if the keyPress api is available, we can just send the key press event sendKeypressEvent(key, press); } else { @@ -169,11 +159,10 @@ export default function useKeyboard() { } }, [ - keyPressReportApiAvailable, + rpcHidReady, keysDownState, resetKeyboardState, rpcDataChannel?.readyState, - rpcHidReady, sendKeyboardEvent, sendKeypressEvent, reportKeypressEvent, diff --git a/ui/src/routes/devices.$id.tsx b/ui/src/routes/devices.$id.tsx index 7737029f..711bd717 100644 --- a/ui/src/routes/devices.$id.tsx +++ b/ui/src/routes/devices.$id.tsx @@ -583,7 +583,6 @@ export default function KvmIdRoute() { const { keyboardLedState, setKeyboardLedState, keysDownState, setKeysDownState, setUsbState, - setkeyPressReportApiAvailable } = useHidStore(); const [hasUpdated, setHasUpdated] = useState(false); @@ -621,7 +620,6 @@ export default function KvmIdRoute() { const downState = resp.params as KeysDownState; console.debug("Setting key down state:", downState); setKeysDownState(downState); - setkeyPressReportApiAvailable(true); // if they returned a keyDownState, we know they also support keyPressReport } if (resp.method === "otaState") { @@ -698,7 +696,6 @@ export default function KvmIdRoute() { if (resp.error.code === -32601) { // if we don't support key down state, we know key press is also not available console.warn("Failed to get key down state, switching to old-school", resp.error); - setkeyPressReportApiAvailable(false); } else { console.error("Failed to get key down state", resp.error); } @@ -706,11 +703,10 @@ export default function KvmIdRoute() { const downState = resp.result as KeysDownState; console.debug("Keyboard key down state", downState); setKeysDownState(downState); - setkeyPressReportApiAvailable(true); // if they returned a keyDownState, we know they also support keyPressReport } setNeedKeyDownState(false); }); - }, [keysDownState, needKeyDownState, rpcDataChannel?.readyState, send, setkeyPressReportApiAvailable, setKeysDownState]); + }, [keysDownState, needKeyDownState, rpcDataChannel?.readyState, send, setKeysDownState]); // When the update is successful, we need to refresh the client javascript and show a success modal useEffect(() => {