みなさんこんにちは、現役エンジニアのサメハックです
未経験から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フォローしてもらえると嬉しいです🦈