dvorak shortcuts support - fixes #2544, fixes #2670

This commit is contained in:
Eugene Pankov
2021-03-20 17:12:25 +01:00
parent 2c11feed83
commit 4a97cc4383

View File

@@ -10,6 +10,8 @@ export const altKeyName = {
linux: 'Alt', linux: 'Alt',
}[process.platform] }[process.platform]
const REGEX_LATIN_KEYNAME = /^[A-Za-z]$/
export function stringifyKeySequence (events: KeyboardEvent[]): string[] { export function stringifyKeySequence (events: KeyboardEvent[]): string[] {
const items: string[] = [] const items: string[] = []
events = events.slice() events = events.slice()
@@ -37,23 +39,29 @@ export function stringifyKeySequence (events: KeyboardEvent[]): string[] {
} }
let key = event.code let key = event.code
key = key.replace('Key', '') if (REGEX_LATIN_KEYNAME.test(event.key)) {
key = key.replace('Arrow', '') // Handle Dvorak etc via the reported "character" instead of the scancode
key = key.replace('Digit', '') key = event.key.toUpperCase()
key = { } else {
Comma: ',', key = key.replace('Key', '')
Period: '.', key = key.replace('Arrow', '')
Slash: '/', key = key.replace('Digit', '')
Backslash: '\\', key = {
IntlBackslash: '\\', Comma: ',',
Backquote: '`', Period: '.',
Minus: '-', Slash: '/',
Equal: '=', Backslash: '\\',
Semicolon: ';', IntlBackslash: '\\',
Quote: '\'', Backquote: '`',
BracketLeft: '[', Minus: '-',
BracketRight: ']', Equal: '=',
}[key] || key Semicolon: ';',
Quote: '\'',
BracketLeft: '[',
BracketRight: ']',
}[key] || key
}
itemKeys.push(key) itemKeys.push(key)
items.push(itemKeys.join('-')) items.push(itemKeys.join('-'))
} }