Ver código fonte

Non latin keyboard layout support player shortcut (#5684)

* Non latin keyboard layout support player shortcut

* isNaked in charge of toUpperCase
tags/v5.1.0
Wicklow GitHub 2 meses atrás
pai
commit
2c525a5466
Nenhuma chave conhecida encontrada para esta assinatura no banco de dados ID da chave GPG: 4AEE18F83AFDEB23
1 arquivos alterados com 26 adições e 1 exclusões
  1. +26
    -1
      client/src/assets/player/shared/hotkeys/peertube-hotkeys-plugin.ts

+ 26
- 1
client/src/assets/player/shared/hotkeys/peertube-hotkeys-plugin.ts Ver arquivo

@@ -218,12 +218,37 @@ class PeerTubeHotkeysPlugin extends Plugin {
}

private isNaked (event: KeyboardEvent, key: string) {
return (!event.ctrlKey && !event.altKey && !event.metaKey && !event.shiftKey && event.key === key)
if (key.length === 1) key = key.toUpperCase()

return (!event.ctrlKey && !event.altKey && !event.metaKey && !event.shiftKey && this.getLatinKey(event.key, event.code) === key)
}

private isNakedOrShift (event: KeyboardEvent, key: string) {
return (!event.ctrlKey && !event.altKey && !event.metaKey && event.key === key)
}

// Thanks Maciej Krawczyk
// https://stackoverflow.com/questions/70211837/keyboard-shortcuts-commands-on-non-latin-alphabet-keyboards-javascript?rq=1
private getLatinKey (key: string, code: string) {
if (key.length !== 1) {
return key
}

const capitalHetaCode = 880
const isNonLatin = key.charCodeAt(0) >= capitalHetaCode

if (isNonLatin) {
if (code.indexOf('Key') === 0 && code.length === 4) { // i.e. 'KeyW'
return code.charAt(3)
}

if (code.indexOf('Digit') === 0 && code.length === 6) { // i.e. 'Digit7'
return code.charAt(5)
}
}

return key.toUpperCase()
}
}

videojs.registerPlugin('peerTubeHotkeysPlugin', PeerTubeHotkeysPlugin)


Carregando…
Cancelar
Salvar