mirror of
https://github.com/CharaChorder/DeviceManager.git
synced 2026-01-07 10:32:49 +00:00
28 lines
730 B
TypeScript
28 lines
730 B
TypeScript
import { get, writable } from "svelte/store";
|
|
|
|
export const osLayout = writable<Map<string, string>>(new Map());
|
|
|
|
async function updateLayout() {
|
|
const layout: Map<string, string> = await (
|
|
navigator as any
|
|
).keyboard.getLayoutMap();
|
|
const currentLayout = get(osLayout);
|
|
if (
|
|
layout.size !== currentLayout.size ||
|
|
[...layout.keys()].some((key) => layout.get(key) !== currentLayout.get(key))
|
|
) {
|
|
osLayout.set(layout);
|
|
}
|
|
}
|
|
|
|
export function runLayoutDetection(): () => void {
|
|
if ("keyboard" in navigator) {
|
|
updateLayout();
|
|
const timer = setInterval(updateLayout, 5000);
|
|
return () => clearInterval(timer);
|
|
} else {
|
|
console.warn("Keyboard API not supported");
|
|
return () => {};
|
|
}
|
|
}
|