概要
Node.jsアプリケーションを単体で動かしている時に、押されたキー情報を取得する方法
背景
Node.jsアプリケーションを単体で動かしている場合(コンソールから制御)において、キーの押下をトリガーにキーの状態そのものを取得する方法として, readline
がFirebaseと一緒に使えなかったり、ffi
パッケージが入らなかったため。
実装手順
1.npm install keypress
でパッケージを導入
今回は keypress - npmを利用します。
ターミナルで下記コマンドを入力してください。
npm install keypress
2. 使ってみる
以外、殆どが公式npmページからのコピペですが、少し補足をしています。
varkeypress=require('keypress');// make `process.stdin` begin emitting "keypress" eventskeypress(process.stdin);// listen for the "keypress" eventprocess.stdin.on('keypress',function(ch,key){console.log('got "keypress"',key); //Ctrl + c入力のときの処理if(key&&key.ctrl&&key.name=='c'){process.stdin.pause();//強制終了するなら process.stdin.exit();}});process.stdin.setRawMode(true);process.stdin.resume();
ご覧の通り、key.name
でキーの名前の取得が出来たり,key.”any key”(上の例だとkey.ctrl)でctrlやshiftが押されているかどうかの判定もできるようです。
最後に
Node.jsの経験がほとんどなく、なんならサーバーサイドの経験がnullに近い状態だったので色々大変でした。
でもこうして触っていると色々できるなぁと思うこともあり、ニコ生コメでLチカさせてみたり、ニコ生コメントではちゅねにネギを振らせてみたりして遊べて色々楽しいなとか思い始めました。今後、もう少し本格的にサーバーサイドもやってみたいなと思います。
もし、不備、誤記、もっといい方法があるよ! などございましたらお気軽にお申し付けください。