JavaScript入門講座|キーボード入力ついて学ぼう

JavaScript
アイキャッチ
うさタブ
うさタブ

今回はJavaScriptでのキーボードのキー入力を勉強するッピ!

ユウキ
ユウキ

キー入力??

うさタブ
うさタブ

キーボードのキーが押されているか? を判定するプログラムの事ッピ!

今回はこのキー入力についてじっくり勉強して行くッピよ~

この記事で学べること
  • キーが押された時に反応するプログラム設定
  • どのキーが押されているか取得する
  • 装飾キーが押されているか判定する

スポンサーリンク
スポンサーリンク

キー入力ついて学ぼう

必要なもの

うさタブ
うさタブ
メモ帳
  • メモ帳
  • ブラウザ

が必要ッピ!

元になるコード

<!-- 見えない部分 -->
<html>
<head></head>
<!-- ↓ここから見える部分↓ -->
<body>

<!-- ↓この下に入力してね!↓ -->
<script>






</script>
<!-- ここまで! -->

</body>
</html>
うさタブ
うさタブ

このコードを元に勉強して行くッピ!

うさタブ
うさタブ

まずは実際にどうやってキーを取得するか勉強してみるッピ!

<script>
document.addEventListener('keydown',
    event => {
  let keys = event.key;
           alert(`${keys}`+'が押されました');
    });
</script>

と入力してみるッピよ~

ユウキ
ユウキ

お! 何か出てきたぞ

うさタブ
うさタブ

試しに他のキーも押してみるッピ!

アイカ
アイカ

すっげえ! 押したキーが出てくるんだな~

ここまでのコード
<!-- 見えない部分 -->
<html>
<head></head>
<!-- ↓ここから見える部分↓ -->
<body>

<!-- ↓この下に入力してね!↓ -->

<script>
document.addEventListener('keydown',
    event => {
  let keys = event.key;
           alert(`${keys}`+'が押されました');
    });
</script>

<!-- ここまで! -->

</body>
</html>
うさタブ
うさタブ

ちなみに実際のサンプルはこんな感じッピ!

↓の入力フォームをクリックして、何かキーを押してみるッピよ~

うさタブ
うさタブ

次からはこのプログラムがどうなってるか詳しく解説するッピ!

ユーザーの行動に反応するaddEventListener

うさタブ
うさタブ

まずユーザーの行動に反応する

.addEventListener

について勉強していくっぴ!

うさタブ
うさタブ

このaddEventListenerは、

  • 特定の場所にマウスがクリックされたか?
  • キーボードで何かキーが押されたか?
  • 入力フォームに何か変化があったか?

などでアクションを起こすことができる命令文ッピ!

うさタブ
うさタブ

アロー関数を使って

要素.addEventListener(変化の対象, () => {

  //ここに命令文

 });

と入力することでプログラムを設定できるッピよ~

うさタブ
うさタブ

この他にも

要素.addEventListener(変化の対象, function() {

   //命令文

 }, false);

というふうに記述することもできるッピ!

ユウキ
ユウキ

この要素変化の対象って?

うさタブ
うさタブ

要素

<body>や<input><p>

などのWEBページのどの部分か?ということッピ!

何も入力せずDocumentだけということも多いッピ!

うさタブ
うさタブ

変化の対象

マウスやキーボード

の事ッピ!

うさタブ
うさタブ

まずはこの変化の対象・・・キーボードについて見ていくッピよ~

変化の対象(キーボード変化について)

うさタブ
うさタブ

まずは変化の対象にはどのようなものがあるか見に行くッピよ~

変化の対象発動条件
keydownキーが押されたとき
keyupキーが押され、離されたとき
keypressキーが押され続けているとき
clickマウスでクリックされたとき
change入力フォームに変更があったとき
scrollWEBページやボックスがスクロールされたとき
loadWEBページが読み込まれとき
ユウキ
ユウキ

ずいぶん色んなのがあるんだな~

うさタブ
うさタブ

今回はこの中でもキー入力について・・・

  • keydown …… キーが押されたとき
  • keypress …… キーが押し続けられたとき
  • keyup …… キーが離れたとき

をつかうプログラムについての勉強ッピよ~

入力されたキーを判定させる

うさタブ
うさタブ

次は入力したキーを判定する命令文を紹介するッピ!

ユウキ
ユウキ

キー判定

ってなんだ??

うさタブ
うさタブ

キー判定というのは、

ユウキくんやWEBサイトを訪れたユーザーが、

キーボードを押したときどんなふうにキーを読み込むか?という判定機のことッピ!

キーの取得方法取得部分
event.code入力したキーそのもの
event.key入力したあと実際に反映されるキー
(Shiftキーなどで大文字になったキーも含む)
event.keyCodeキーコードを取得する
ユウキ
ユウキ

どんなふうに・・・? キーを??

よみ・・・こむ・・・?

うさタブ
うさタブ

実際に見てみないとわかりにくいッピね・・・

<script>
document.addEventListener('keydown',
    event => {
  	 let keys0 = event.key;
  	 let keys1 = event.code;
  	 let keys2 = event.keyCode;
     alert(`${keys0}` +"/"+ `${keys1}` +"/"+ `${keys2}` +"/"+ 'が押されました');
    });
</script>

と入力してみるッピよ~

ユウキ
ユウキ

なんかイッパイ出てきた!

ユウキ
ユウキ

でもこれ、結局

何がなんだかわからないな・・・

ユウキ
ユウキ

このkeyA/65ってどういう意味?

aを押したからAが出てくるのはわかるけど・・・

この【65】が意味不明だし

うさタブ
うさタブ

それはキーコードッピ!

もともとはこのキーコードの数字を元にして、どのキーを押したか判別してたッピ!

実際のキーキーコード
A65
B66
F1112
F2113
Enter13
Shift16
Ctrl17
096
197
キーコードの割当
うさタブ
うさタブ

今はあんまり使われないから覚えなくても大丈夫ッピよ~

ユウキ
ユウキ

そうなのか

うさタブ
うさタブ

先ほどのコードをわかりやすく説明すると

document動作してください.addEventListener以下の条件に当てはまるとき(‘keydownキーが押されたとき‘,
 
eventこのように => {
   let
keys0変数keys0によって = event.key反映キーを取得します; // 入力したあと実際に反映されるキー
   let
keys1変数keys1によって = event.code物理キーを取得します; //入力したキーそのもの
   let
keys2変数keys2によって = event.keyCodeキーコード番号を取得; // キーコードの数字取得する
   
alert警告ウィンドウを表示(${keys0}反映キーを表示 +”/”+ ${keys1}物理キーを表示 +”/”+ ${keys2}キーコードを表示 +”/”+ ‘が押されました’);
  });

という意味になるッピ!

うさタブ
うさタブ
  • event.key //反映キー
  • event.code //物理キー

この2つさえ覚えておけば大丈夫ッピよ~

ここまでのコード
<!-- 見えない部分 -->
<html>
<head></head>
<!-- ↓ここから見える部分↓ -->
<body>

<!-- ↓この下に入力してね!↓ -->


<script>
document.addEventListener('keydown',
    event => {
  	let keys0 = event.key;
  	let keys1 = event.code;
  	let keys2 = event.keyCode;
           alert(`${keys0}` +"/"+ `${keys1}` +"/"+ `${keys2}` +"/"+ 'が押されました');
    });
</script>

<!-- ここまで! -->

</body>
</html>

装飾キーの判別と分岐

ユウキ
ユウキ

なあうさタブ

これなんだけどさ・・・

<script>
document.addEventListener('keydown',
    event => {
  let keys = event.key;
          if (event.key == 'a' && event.key == 'Alt') {
           alert("Altキーとaが押されました")
        }
    });
</script>
ユウキ
ユウキ

試しにaキーとAltキーを押したときだけ

反応するようにしたかったんだけどさ

ユウキ
ユウキ

まったく上手くいかないんだよな~

どうすれば良いんだろう??

うさタブ
うさタブ

それは【装飾キー】を設定してないからッピね~

if文で選択するときは独自の装飾キー判別してあげる必要があるッピ!

ユウキ
ユウキ

装飾キー??

うさタブ
うさタブ

具体的なコードをつかうとこんな感じッピ!

<script>
document.addEventListener('keydown',
    event => {
  let keys = event.key;
          if (event.key == 'a' && event.altKey) {
           alert("Altキーとaが押されました")
        }
    });
</script>
キーの取得方法取得部位
event.ctrlKeyCtrlを押されているか確認する
event.shiftKeyShiftを押されているか確認する
event.altKeyAltを押されているか確認する
event.metaKeyWindowsなどのキーを押されているか確認する
ユウキ
ユウキ

おおお! すげえ!

ちゃんと aキーとAltキーを押したときだけ 反応してる!

うさタブ
うさタブ

ムフフ、これがプログラミングのチカラッピ!

ユウキ
ユウキ

今日もありがとな、うさタブ!

ここまでのコード
<!-- 見えない部分 -->
<html>
<head></head>
<!-- ↓ここから見える部分↓ -->
<body>

<!-- ↓この下に入力してね!↓ -->

<script>
document.addEventListener('keydown',
    event => {
  let keys = event.key;
          if (event.key == 'a' && event.altKey) {
           alert("Altキーとaが押されました")
        }
    });
</script>

<!-- ここまで! -->

</body>
</html>
学習のまとめ
  • キーが押された時反応するkeydown
  • キーが押され続けているとき反応するkeypress(shiftやalt等は反応しません)
  • キーが離れたとき反応するkeyup
  • どのキーが押されているか取得するevent.key
  • 物理キーを取得するevent.code
  • キーコードを取得するevent.keyCode
  • Ctrlを押されているか確認するevent.ctrlKey
  • Shiftを押されているか確認するevent.shiftKey
  • Altを押されているか確認するevent.altKey
  • Windowsなどのキーを押されているか確認するevent.metaKey
  • キー入力を無効化するreturn false

うさタブ
うさタブ

上手くできたッピか?

これからも色んなゲーム作りやプログラムの解説をしていくッピ!

次回も楽しみにしているッピよ~~!

スポンサーリンク

どうしてもわからない、そんなときは?

ユウキ
ユウキ

うさタブ!

オレ、もっと本格的にゲームが作りたいんだ

アイカ
アイカ

私もだわ!

もっとたくさん実用的なコードを

学ぶことってできないかしら?

うさタブ
うさタブ

おお、2人ともやる気ッピね!

ゲームの作り方を学ぶなら、コレとかどうッピか?


うさタブ
うさタブ
Udemy」テレビでも有名な動画教材
人気の機械学習からUnityゲーム講座まで選び放題ッピ!

うさタブ
うさタブ

2DアクションRPG脱出ゲーム

3Dゲーム制作講座まで

買い切り講座だからいつでも勉強し放題ッピよ~!

ユウキ
ユウキ

お!いいじゃん!

アイカ
アイカ

あと、どこか素敵な素材を売っているところはないかしら? 公式の素材販売だと、クレカ支払いしかなくて・・・

ユウキ
ユウキ

小学生じゃクレカで支払えないぜ~

うさタブ
うさタブ

ゲームの素材を買いたいなら、

DLsiteBoothとかどうッピか?

うさタブ
うさタブ

素敵なドット絵や音楽素材がいっぱい売ってるッピ!

うさタブ
うさタブ

しかもUnityアセットストアと違って

クレカ支払いじゃなく、コンビニ支払いができるのもポイントッピ!

ユウキ
ユウキ

すげーカッコいい素材がいっぱいある!

アイカ
アイカ

わたしもさっそくチェックしてみようかな♪

スポンサーリンク
JavaScriptプログラミング
学んで遊んでジャンケンポン!
タイトルとURLをコピーしました