2017-10-29 17 views
-1

shift 키를 사용하여 수행 된 onKeypress 이벤트에서 번호가 매겨진 키 값을 가져오고 싶습니다. 열쇠 123 ... 9와 다른 동작을 링크하는 웹 응용 프로그램을 만들려고합니다. 또한 shift-123 ... 9. 문제는 Shift 키를 사용하여 keypress 이벤트를 가져올 때 shift-value 및 shift가 true 인 경우에만 얻을 수 있다는 것입니다.Shift 키를 누른 채 키 누르기 이벤트에서 번호가 매겨진 키의 원래 키 맵을 얻으려면 어떻게해야합니까?

shift-1

shiftKey: true 
key: "!" 

"!"에서 값 1을 얻는 방법을 찾고 싶습니다. "!"이외의 다른 문자가있는 다른 키보드에 대해서도 걱정이됩니다. shift-1을 누르면. AZERTY 키보드와 비슷합니다.
http://mentalfloss.com/article/52483/6-non-qwerty-keyboard-layouts

shift 키를 누르지 않은 것처럼 shift-keypress 이벤트의 원래 값을 얻으려면 어떻게해야합니까?

업데이트는 반응을 언급합니다 :

@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 "[email protected]#$%..(" 
    } 
    } 
} 
+1

당신이 시도 것을 보여주십시오. * "단지 시프트 값을 얻을 수 있습니다"*는 실제로 의미가 없습니다 – charlietfl

+0

방금 ​​내 코드 예제를 게시했습니다 – Jonathan002

답변

1

키보드 이벤트는 이벤트 객체의 일환으로 code 속성이 -이 어떤 수식 키를 무시 누를 것 키를 반환합니다.

예 :

document.addEventListener('keypress', (event) => { 
    console.log({ code: event.code }) 
}) 

/* 
[press shift + 1] => // { code: 'Digit1' } 
[press shift + /] => // { code: 'Slash' } 
*/ 
+0

이 코드 값은 모든 다른 키보드에서 보편적으로 동일합니까? – Jonathan002

+0

MDN에는 https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code에 대한 좋은 설명서가 있습니다. TL; DR 예 –

+0

링크와 귀하의 회신에 감사드립니다. 이것은 나에게 매우 도움이된다. :) – Jonathan002