import { useCallback, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useSettingsStore } from "@/hooks/stores"; import { JsonRpcResponse, 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 notifications from "@/notifications"; import { SettingsItem } from "./devices.$id.settings"; export default function SettingsKeyboardRoute() { const { setKeyboardLayout } = useSettingsStore(); const { showPressedKeys, setShowPressedKeys } = useSettingsStore(); const { selectedKeyboard, keyboardOptions } = useKeyboardLayout(); const { send } = useJsonRpc(); const { t } = useTranslation(); 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( t('Failed_to_set_keyboard_layout_msg',{msg:resp.error.data || t('Unknown_error')}) ); } notifications.success(t('Keyboard_layout_set_successfully_to_code',{code:isoCode})); setKeyboardLayout(isoCode); }); }, [send, setKeyboardLayout], ); return (

{t('keyboard_layout_notice')}

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