2017-10-29 20 views
-1

shiftで終わるonKeypressイベントで、番号の付いたキーの値を取得したいと考えています。私はキー123 ... 9と別のアクションをリンクするWebアプリケーションを作ろうとしています。またshift-123 ... 9。問題はシフトを使ってkeypressイベントを取得したときにシフト値が得られ、シフトがtrueの場合のみです。Shiftキーを押しながらキーを押すイベントで、番号付きキーの元のキーマップを取得するにはどうすればよいですか?

シフト-1

shiftKey: true 
key: "!" 

「!」から値1を取得する方法を見つけたいと思います。私は "!"以外の文字を持っているかもしれない他のキーボードについても心配しています。シフト-1が押されたとき。 AZERTYキーボードのように。
http://mentalfloss.com/article/52483/6-non-qwerty-keyboard-layouts

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 "[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

関連する問題