ホットキーはWindowsのキーボードショートカットの1つ
アプリケーションのウィンドウが表示されなくても動作する
Windowsには、「ホットキー」と呼ばれる機能がある。これは、アプリケーションの非子ウィンドウに割り当てたキーの組み合わせで、アプリケーションウィンドウの状態に関わらず、アプリケーションにキーが押されたことを示すメッセージが送信される。アプリケーションは、このメッセージを受信して、なんらかの機能(たとえば、ウィンドウを開くなど)を実行する。
ホットキーはWindowsのキーボードショートカットの1つで、キーボードショートカットには、このほか、「アクセスキー」や「アクセラレーター」などがある。
ホットキーと他のキーボードショートカットの違いは、設定したアプリケーションのウィンドウが表示されていなくても、また前面ウィンドウになっていなくても、いつでも動作する点にある。逆に言えば、ホットキー以外のキーボードショートカットは、対象アプリケーションのウィンドウが前面ウィンドウになっていなければ動作しない。Windowsでは前面ウィンドウのみがキーボードイベントを受け取るからだ。
こうした特性を使って、ホットキーはWindows自体の操作や各種のユーティリティで機能を実行するために使われる。Windows Vistaで追加されたWinキーを使うホットキーに関しては、以前記事にした(「Windowsキー絡みのショートカットは徐々に増えて、減って、また増えている」)。
また、Windows 10/11で定義されている「キーボードショートカット」は、Microsoftの以下のページに記述がある。
●Windows のキーボード ショートカット
https://support.microsoft.com/ja-jp/windows/windows-%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89-%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88-dcc61a57-8ff0-cffe-9796-cb9706c75eec
ファイルショートカット(.lnk)にもホットキーを登録する機能がある。ファイルショートカットを作成したあと、プロパティの「ショートカット」タブを開く。
すると、「ショートカットキー」という欄があり、ここに「Ctrl+Alt+英数字」「Ctrl+Shift+英数字」「Ctrl+Shift+Alt+英数字」のショートカットを定義できる。たとえば、Amazon Kindleアプリが「Ctrl+Alt+K」を登録している。
問題なのは、Windowsには利用されているホットキーの一覧を表示する機能がなく、いざアプリケーションなどを割り当てようとしてもそれが難しいことだ。ホットキーはアプリケーションが登録するが基本的には早い者勝ち。もし同じキーボードの組み合わせを使う2つのプログラムがあったときには、先に登録したほうが有効になる。
そのため、衝突した場合はどちらかが動き、どちらかが動かなくなる。最近では、Windows TerminalとPowerToysでホットキーの衝突があった。両者ともに「Win+@」をホットキーとして登録していた。現在では「Win+@」は、Windows Terminal用となり、PowerToysは「Win+Shift+@」を使うようになった。
ホットキーの仕組み
ホットキーを実現するにはいくつかの方法がある。1つは、WindowsのAPIを使う方法、もう1つはキーボードフックを使う方法だ。このほかに古いやりかたとしてウィンドウに対してホットキー登録のメッセージ(WM_SETHOTKEY)を送信する方法もある。
WindowsのAPIを使う方法では、RegisterHotKey関数を使う。このとき、キーは「修飾キー+ファイナルキー」という形式で定義をする。修飾キーは「Ctrl」「Alt」「Shift」「Win」の4つのキーの組み合わせであるが、修飾キーで「Shift」単独は、通常の文字入力に使われるため、英数字と組み合わせてホットキーにしない。しかし、タブキーやスペースキーなどと組み合わせてはホットキーにすることがある。
ファイナルキーは、あくまでキーボード上のキートップに対応する「キー」であって、文字ではない点に注意してほしい。106/109キーボードにおいて、「Oemplus」キー(VK_OEM_PLUS)をファイナルキーとして指定すると、Lキーの右側にあるキートップに「;」があるキーがこれに対応するが、US配列の101/104キーボードでは、最上段にあるバックスペースの左側の「=」のキーとなる。この2つは位置が異なるため、異なるスキャンコードを出力するが、Windowsでは指定されたキーボードレイアウトに応じて、適切な仮想キーコードを割り当てる。
また、このRegisterHotKey関数では、左右のCtrlキーなどは区別ができない。逆に言えば、左右のCtrlキーを区別して割り当てられるホットキーは、キーボードフックを利用したホットキーである。これはキーボードやマウス、ゲーム用キーパッドに付属のプログラムで見かけることがある。
他のホットキーと重複しなければ、1つのアプリケーションでホットキーをいくつでも登録できる。ただし、ホットキーは他のキーボードショートカットよりも優先されるので、著名なキーボードアクセラレータ(たとえば、クリップボード貼り付けの「Ctrl+V」など)と重複してしまうと、キーボードアクセラレータが動作しなくなる。このため、ホットキーの割り当ては慎重にする必要がある。
Windowsでは、ルールとして「Ctrl」「Ctrl+Shift」「Alt」「Alt+Shift」と文字キー(0~9、A-Z、記号文字)の組み合わせは、アクセラレータで使う。ホットキー用には「Winキー+他の修飾キー+文字キー」、「Ctrl/Alt/Shift+機能キー(HomeやInsertなどの文字を出力しないキーとEsc、Tab、Enter、Spaceなど)」の組み合わせを使う。Winキーを使うホットキーは、原則としてマイクロソフトがWindows用に使うことになっているため、今後のアップデートなどで利用される可能性がある。
とは言え、Winキーを使う組み合わせは、アクセラレーターなど他のキーボードショートカットと衝突する可能性がない。そういう意味では、空いているWinキーの組み合わせを個人的にホットキーを使うアプリなどで使うメリットはある。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ