mirror of https://github.com/jetkvm/kvm.git
33 lines
1.5 KiB
TypeScript
33 lines
1.5 KiB
TypeScript
export interface KeyStroke { modifier: number; keys: number[]; }
|
|
export interface KeyInfo { key: string | number; shift?: boolean, altRight?: boolean }
|
|
export interface KeyCombo extends KeyInfo { deadKey?: boolean, accentKey?: KeyInfo }
|
|
export interface KeyboardLayout { isoCode: string, name: string, chars: Record<string, KeyCombo> }
|
|
|
|
// to add a new layout, create a file like the above and add it to the list
|
|
import { cs_CZ } from "@/keyboardLayouts/cs_CZ"
|
|
import { de_CH } from "@/keyboardLayouts/de_CH"
|
|
import { de_DE } from "@/keyboardLayouts/de_DE"
|
|
import { en_US } from "@/keyboardLayouts/en_US"
|
|
import { en_UK } from "@/keyboardLayouts/en_UK"
|
|
import { es_ES } from "@/keyboardLayouts/es_ES"
|
|
import { fr_BE } from "@/keyboardLayouts/fr_BE"
|
|
import { fr_CH } from "@/keyboardLayouts/fr_CH"
|
|
import { fr_FR } from "@/keyboardLayouts/fr_FR"
|
|
import { it_IT } from "@/keyboardLayouts/it_IT"
|
|
import { nb_NO } from "@/keyboardLayouts/nb_NO"
|
|
import { sv_SE } from "@/keyboardLayouts/sv_SE"
|
|
|
|
export const keyboards: KeyboardLayout[] = [ cs_CZ, de_CH, de_DE, en_UK, en_US, es_ES, fr_BE, fr_CH, fr_FR, it_IT, nb_NO, sv_SE ];
|
|
|
|
export const selectedKeyboard = (isoCode: string): KeyboardLayout => {
|
|
// fallback to original behaviour of en-US if no isoCode given
|
|
return keyboards.find(keyboard => keyboard.isoCode == isoCode)
|
|
?? keyboards.find(keyboard => keyboard.isoCode == "en-US")!;
|
|
};
|
|
|
|
export const keyboardOptions = () => {
|
|
return keyboards.map((keyboard) => {
|
|
return { label: keyboard.name, value: keyboard.isoCode }
|
|
});
|
|
}
|