君は「『Windows のショートカット』にショートカットを割り当てられる」ことを知っているか

Windows では、各種ファイルへのアクセスを短縮するためにショートカット ファイル (`.lnk` 拡張子のファイル) を作成できます。

実はこの `.lnk` ファイルには個別にショートカット キーを割り当てることができ、任意のショートカットをキーボード操作のみで起動できます。

## ショートカット キーの割り当て方法

ショートカット キーの設定は、`.lnk` ファイルのプロパティから行えます。プロパティ ダイアログを表示し、[ショートカット] のタブへ移動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509844/fe3f016f-d318-7e32-8e8f-0697e9aabf41.png)

`.lnk` ファイルを起動する際のキーの組み合わせは、[ショートカット キー] の項目で設定できます。

標準では `Ctrl + Alt + [任意のキー]` で `.lnk` ファイルを開くためのショートカット キーを割り当てられます (項目にフォーカスした状態でキーを押すと、自動で `Ctrl + Alt` が補完されます) 。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509844/51c7dd94-d821-5c46-976d-84514350eea8.png)

キー コンビネーションには `Shift` キーとの組み合わせも可能で、修飾キー以外では記号や `F1`～`F12` のキーも使用できます。

総括すると、以下のルールによりショートカット キーを設定可能です。

| 使用するキー         | 修飾キー                                   | 組み合わせ                                |
| ------------------ | ------------------------------------------ | ----------------------------------------- |
| `A-Z`, `0-9`, 記号 | `Ctrl`, `Alt`, `Shift` のいずれか 2 つ以上 | `(26 + 10 + 11) * (3 * 2 + 1)`<br>`= 329` |
| `F1`～`F12`        | `Ctrl`, `Alt`, `Shift` のいずれか 1 つ以上 | `12 * (3 + 3 * 2 + 1)`<br>`= 120`         |

記号キーは (英語配列であれば) `` `-=[]\;',./`` のいずれかが該当し、ファンクションキーも含めた組み合わせの総数は 449 通りにもなります。

## 類似機能との比較

ショートカットキーのみでアプリケーションを起動できる同様の機能としては、タスクバーにピン留めしたアプリを起動する際のショートカット `Windows + [0-9]` があります。

両機能には、おおまかに以下のような違いがあります。

| 観点           | アプリのピン留め                                   | `.lnk` へのショートカット割り当て                  |
| -------------- | ------------------------------------------------------ | ------------------------------------------ |
| 設定箇所       | タスクバー                                             | システム上に存在する任意の `.lnk` ファイル |
| 事前操作       | アプリケーションをピン留めする                         | プロパティからショートカットを登録する     |
| 組み合わせ     | 10 通り                                                | 449 通り                                   |
| 設定の確認方法 | アプリケーションを全て終了した状態のタスクバー                                   | 個別のショートカットのプロパティ           |
| 固有の機能     | `Windows + Alt + [0-9]` による<br>ジャンプリストの展開 | アプリケーション以外も実行可能             |

比較すると、タスクバーにピン留めする方法は「ショートカットの組み合わせ」と「起動されるアプリ」との対応が視覚的にわかりやすく、また Windows キーとのコンビネーションであることから他ショートカットとの重複が起こりにくいといえます。

`.lnk` ファイルに対してショートカットを割り当てる方法は起動できる対象が多く、応用の幅が広いですが、ファイルの設定を個別に変更する手間であったり、設定したショートカットが増えてくると全貌を把握するのが困難になったり、という欠点もあります。

## 推奨事項

前述した管理の煩雑さを低減するため、`.lnk` ファイルに対するショートカット割り当て機能を利用する場合には、以下のような運用ルールを規定することになると思います。

- ショートカットを割り当てる `.lnk` ファイルの配置場所を限定する
- 使用するキーの幅をあえて制限する

自分の場合、上記のルールに則って以下の方針でショートカットを設定しています。

- デスクトップに配置した `.lnk` ファイルに対してのみショートカットを設定する  
  (デスクトップ アイコンは非表示に設定する)
- 使用するキーは `A-Z` のみとし、数字や記号は使用しない
- 起動対象アプリケーションの頭文字をとってショートカットに使用する
- 使用頻度の高いものを `Ctrl + Alt + [A-Z]` で、低いものを `Ctrl + Shift + Alt + [A-Z]` で登録する

## 自分の環境での登録例

例として、上記のルールに則って自分が設定しているショートカットは以下の通りです。

| 起動対象             | ショートカット           |
| -------------------- | ------------------------ |
| Blender              | `Ctrl + Alt + B`         |
| Visual Studio Code   | `Ctrl + Alt + C`         |
| Docker Desktop       | `Ctrl + Alt + D`         |
| Groove ミュージック  | `Ctrl + Alt + G`         |
| Kindle               | `Ctrl + Alt + K`         |
| Office               | `Ctrl + Alt + O`         |
| 付箋                 | `Ctrl + Alt + S`         |
| Windows Terminal     | `Ctrl + Alt + T`         |
| (Geforce Experience) | `Ctrl + Shift + Alt + G` |
| Twitter              | `Ctrl + Shift + Alt + T` |

Geforce Experience を括弧書きで表記したのは、ショートカットの設定を `.lnk` ファイルではなく、Geforce Experience 自身の設定から行っているためです。Geforce Experience の起動ショートカットは標準で `Alt + Z` であり、将来的に `Ctrl + Alt + Z` のショートカットを設定する場面での衝突を避けるため、あえて変更を行いました。