import { useCallback, useEffect } from "react"; import { useSettingsStore } from "@hooks/stores"; import { JsonRpcResponse, useJsonRpc } from "@hooks/useJsonRpc"; import useKeyboardLayout from "@hooks/useKeyboardLayout"; import { Checkbox } from "@components/Checkbox"; import { SelectMenuBasic } from "@components/SelectMenuBasic"; import { SettingsItem } from "@components/SettingsItem"; import { SettingsPageHeader } from "@components/SettingsPageheader"; import notifications from "@/notifications"; import { m } from "@localizations/messages.js"; export default function SettingsKeyboardRoute() { const { setKeyboardLayout } = useSettingsStore(); const { showPressedKeys, setShowPressedKeys } = useSettingsStore(); const { selectedKeyboard, keyboardOptions } = useKeyboardLayout(); const { send } = useJsonRpc(); useEffect(() => { send("getKeyboardLayout", {}, (resp: JsonRpcResponse) => { 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( m.keyboard_layout_error({ error: resp.error.data || m.unknown_error() }), ); } notifications.success(m.keyboard_layout_success({ layout: isoCode })); setKeyboardLayout(isoCode); }); }, [send, setKeyboardLayout], ); return (

{m.keyboard_layout_long_description()}

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