【Angular】ショートカットキーを設定しよう!【hotkeys-js】

ANGULAR

みなさんこんにちは、現役エンジニアのサメハックです

未経験からWebエンジニアに転職し、
正社員として5年働いたのちフリーランスとして独立しました。

Angularの解説シリーズです。

今回はhotkeys-jsを使ってショートカットキーを設定する方法について学んでいきましょう!

駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!

この記事を読むと・・・
  • hotkeys-jsをインストールできる
  • オリジナルのショートカットを設定できる

※PCにnpm、nodeがインストールされている前提で記述します。
 yarn等をお使いの方は読み替えてください。

実行環境

Angularのバージョンが古いと動かないことがあるよ!
うまく動かなければアップデートしてね!

hotkeys-jsを使ってショートカットキーを設定しよう

■公式サイト

hotkeys-js
A simple micro-library for defining and dispatching keyboard shortcuts. It has no dependencies.. Latest version: 3.13.7, last published: 10 months ago. Start us
一言でいうとキーと関数を結びつけるライブラリだよ!

hotkeys-jsをインストール

npm install hotkeys-js --save

hotkeys-jsを使う構文

hotkeys("設定したいキー", 紐付ける関数名);
これでオリジナルのショートカットキーが設定できるよ!

実際に動かしてみよう!

今回作成するショートカットキー

  • 1 ⇒ アラート表示
  • 2 ⇒ アラート表示
  • ctrl + 1 ⇒ アラート表示
  • command + 1 ⇒ アラート表示
複数キーの設定も行うよ!

app.component.ts

import { Component, OnInit } from '@angular/core';
import hotkeys from 'hotkeys-js';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss'],
})
export class AppComponent {
  constructor() {}

  /**オリジナルのショートカット ※これだけでは設定はされない */
  shortcutList = [
    { key: '1', method: this.click1 },
    { key: '2', method: this.click2 },
    { key: 'ctrl+1', method: this.clickCtrl1 },
    { key: 'command+1', method: this.clickCommand1 },
  ];

  /**1が押された際の関数 */
  click1() {
    alert('1が押されました');
  }

  /**2が押された際の関数 */
  click2() {
    alert('2が押されました');
  }

  /**ctrl+1が押された際の関数 */
  clickCtrl1() {
    alert('ctrlと1が押されました');
  }

  /**command+1が押された際の関数 */
  clickCommand1() {
    alert('commandと1が押されました');
  }

  ngOnInit() {
    // 作成したショートカットを実際のキーに設定する
    for (let shortcut of this.shortcutList) {
      hotkeys(shortcut.key, shortcut.method);
    }
  }

  ngOnDestroy() {
    // 【重要】設定したキーボードショートカットを解除
    //  この設定をしないとコンポーネントが破棄されてもショートカットが解除されない
    for (let shortcut of this.shortcutList) {
      hotkeys.unbind(shortcut.key, shortcut.method);
    }
  }
}
これでnpm startすると同じものが出来上がるよ!

注意点

重要な注意点ですが、ブラウザやPCデフォルトのショートカットとは
絶対に被らないようにしてください。
バグの原因となってしまいます。

【例】ctrl + v
基本的にはブラウザやPCデフォルトのショートカットが優先されるので
期待動作しなくなることが多いよ!

矢印をキーバインドしたい!

通常のキーバインド

  • ↑ : “up”
  • ↓ : “down”
  • ← : “left”
  • → : “right”

このように指定できます。

キーコードを取得

ちなみに、キー入力イベントからキーコードを取得したい場合は
以下のキーコードになります。

  • ↑ : “ArrowUp”
  • ↓ : “ArrowDown”
  • ← : “ArrowLeft”
  • → : “ArrowRight”
shortcutList = [
  { key: 'up', method: this.pressKey },
  { key: 'down', method: this.pressKey },
  { key: 'left', method: this.pressKey },
  { key: 'right', method: this.pressKey },
];

pressKey(event){
  // キーコードが渡される
  console.log(event.key);
}

GitHubのサンプルコード

今回作ったものはGitHubにあげているので
使いたい人は是非ダウンロードしてみてください。

GitHub - same-hack/Angular_hotkey: hotkey-jsの使い方
hotkey-jsの使い方. Contribute to same-hack/Angular_hotkey development by creating an account on GitHub.

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈

タイトルとURLをコピーしました