Skip to content

Commit fc55232

Browse files
committed
feat: Initial work to reload keymap on layout change.
1 parent 31bd32f commit fc55232

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/keyboard/Keyboard.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,20 +124,23 @@ function useLayouts(): [PhysicalLayout[] | undefined, React.Dispatch<SetStateAct
124124

125125
export default function Keyboard() {
126126
const [layouts, _setLayouts, selectedPhysicalLayoutIndex, setSelectedPhysicalLayoutIndex] = useLayouts();
127-
const [keymap, _setKeymap] = useConnectedDeviceData<Keymap>({ keymap: { getKeymap: true } }, keymap => keymap?.keymap?.getKeymap);
127+
const [keymap, setKeymap] = useConnectedDeviceData<Keymap>({ keymap: { getKeymap: true } }, keymap => keymap?.keymap?.getKeymap);
128128
const [selectedLayerIndex, setSelectedLayerIndex] = useState<number>(0);
129129
const behaviors = useBehaviors();
130130

131131
const conn = useContext(ConnectionContext);
132132

133133
useEffect(() => {
134134
async function performSetRequest() {
135-
if (!conn) { return; }
135+
if (!conn && !layouts) { return; }
136136

137137
let resp = await call_rpc(conn, { keymap: { setActivePhysicalLayout: selectedPhysicalLayoutIndex }});
138138

139-
if (!resp?.keymap?.setActivePhysicalLayout) {
140-
console.error("Failed to set the active physical layout to ", selectedPhysicalLayoutIndex);
139+
let new_keymap = resp?.keymap?.setActivePhysicalLayout?.ok;
140+
if (new_keymap) {
141+
setKeymap(new_keymap);
142+
} else {
143+
console.error("Failed to set the active physical layout err:", resp?.keymap?.setActivePhysicalLayout?.err);
141144
}
142145
}
143146

0 commit comments

Comments
 (0)