如何在带有 shift 的按键事件中获取编号键的原始键映射?
How can I get the original key map of a numbered key in a keypress event with shift?
我希望能够在通过 shift 完成的 onKeypress 事件中获取编号键的值。我正在尝试制作一个网络应用程序,该应用程序将不同的操作与键 123...9 和 shift-123...9 联系起来。问题是,当我通过 shift 获得按键事件时,我只能获得 shift-value 并且如果 shift 为真。
例如shift-1
shiftKey: true
key: "!"
我想找到一种方法从“!”中获取值 1。我还担心其他键盘可能具有除“!”以外的其他字符。当按下 shift-1 时。喜欢AZERTY键盘。
http://mentalfloss.com/article/52483/6-non-qwerty-keyboard-layouts
如何获取 shift-keypress 事件的原始值,就像没有按下 shift 一样?
更新评论回复:
@HostListener('document:keypress', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
let keyNumber = Number.parseInt(event.key);
if (keyNumber !== NaN && keyNumber !== 0) {
if (event.shiftKey === false && keyNumber <= this.documents.length) {
// use number to access some array
this.currentDocument = this.documents[--keyNumber];
} else if (keyNumber <= this.currentDocument.toc.length) { // I'll see if they go past 10..
// PROBLEM HERE trying to get number to also access an array
this.routeToFragment(this.currentDocument.toc[--keyNumber].slug); // this is NaN until I can convert "!@#$%..("
}
}
}
键盘事件将 code
属性 作为其事件对象的一部分 - 这将 return 按下的键,忽略任何修改键。
示例:
document.addEventListener('keypress', (event) => {
console.log({ code: event.code })
})
/*
[press shift + 1] => // { code: 'Digit1' }
[press shift + /] => // { code: 'Slash' }
*/
我希望能够在通过 shift 完成的 onKeypress 事件中获取编号键的值。我正在尝试制作一个网络应用程序,该应用程序将不同的操作与键 123...9 和 shift-123...9 联系起来。问题是,当我通过 shift 获得按键事件时,我只能获得 shift-value 并且如果 shift 为真。
例如shift-1
shiftKey: true
key: "!"
我想找到一种方法从“!”中获取值 1。我还担心其他键盘可能具有除“!”以外的其他字符。当按下 shift-1 时。喜欢AZERTY键盘。
http://mentalfloss.com/article/52483/6-non-qwerty-keyboard-layouts
如何获取 shift-keypress 事件的原始值,就像没有按下 shift 一样?
更新评论回复:
@HostListener('document:keypress', ['$event'])
handleKeyboardEvent(event: KeyboardEvent) {
let keyNumber = Number.parseInt(event.key);
if (keyNumber !== NaN && keyNumber !== 0) {
if (event.shiftKey === false && keyNumber <= this.documents.length) {
// use number to access some array
this.currentDocument = this.documents[--keyNumber];
} else if (keyNumber <= this.currentDocument.toc.length) { // I'll see if they go past 10..
// PROBLEM HERE trying to get number to also access an array
this.routeToFragment(this.currentDocument.toc[--keyNumber].slug); // this is NaN until I can convert "!@#$%..("
}
}
}
键盘事件将 code
属性 作为其事件对象的一部分 - 这将 return 按下的键,忽略任何修改键。
示例:
document.addEventListener('keypress', (event) => {
console.log({ code: event.code })
})
/*
[press shift + 1] => // { code: 'Digit1' }
[press shift + /] => // { code: 'Slash' }
*/