import { useCallback, useEffect } from "react"; import { useSettingsStore } from "@/hooks/stores"; import { useJsonRpc } from "@/hooks/useJsonRpc"; import { useKeyboardLayout } from "@/hooks/useKeyboardLayout"; import { SettingsPageHeader } from "@components/SettingsPageheader"; import { Checkbox } from "@/components/Checkbox"; import { SelectMenuBasic } from "@/components/SelectMenuBasic"; import { keyboardOptions } from "@/keyboardLayouts"; import notifications from "@/notifications"; import { SettingsItem } from "./devices.$id.settings"; export default function SettingsKeyboardRoute() { const { setKeyboardLayout } = useSettingsStore(); const { showPressedKeys, setShowPressedKeys } = useSettingsStore(); const { keyboard } = useKeyboardLayout(); const layoutOptions = keyboardOptions(); const { send } = useJsonRpc(); useEffect(() => { send("getKeyboardLayout", {}, resp => { if ("error" in resp) return; const isoCode = resp.result as string; console.log("Fetched keyboard layout from backend:", isoCode); if (isoCode && isoCode.length > 0) { setKeyboardLayout(isoCode); } }); }, [send, setKeyboardLayout]); const onKeyboardLayoutChange = useCallback( (e: React.ChangeEvent) => { const isoCode = e.target.value; send("setKeyboardLayout", { layout: isoCode }, resp => { if ("error" in resp) { notifications.error( `Failed to set keyboard layout: ${resp.error.data || "Unknown error"}`, ); } notifications.success("Keyboard layout set successfully to " + isoCode); setKeyboardLayout(isoCode); }); }, [send, setKeyboardLayout], ); return (

Pasting text sends individual key strokes to the target device. The keyboard layout determines which key codes are being sent. Ensure that the keyboard layout in JetKVM matches the settings in the operating system.

setShowPressedKeys(e.target.checked)} />
); }