1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

Windowsで利用可能なホットキーを探す

ASCII.jp / 2023年3月19日 10時0分

ホットキーは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)にもホットキーを登録する機能がある。ファイルショートカットを作成したあと、プロパティの「ショートカット」タブを開く。

ファイルショートカットは作成後にプロパティでホットキーを指定できる。ここにWinキーを修飾キーとするホットキーは指定できず、Ctrl/Alt/Shiftの組み合わせに限られる

 すると、「ショートカットキー」という欄があり、ここに「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キーの組み合わせを個人的にホットキーを使うアプリなどで使うメリットはある。

ホットキーの空きを調べる

 Windowsにはホットキーを表示する機能はないが、調べることができないのかというとそうではなく、プログラムを作れば、「RegisterHotKey」関数で割り当てたホットキーを調べることは可能だ。

 キーの組み合わせをRegisterHotKey関数で登録しようとしたとき、すでに割り当てられている組み合わせは、エラーになって登録できない。これからすでに使われている組み合わせを知ることができる。

 ただ、キーボードフックやメッセージを使う方法は、検出が困難だ。アプリケーションのコードを調べればわかるのだが、基本的には困難で事実上調べることはできない。残された方法は、プログラムひとつひとつでホットキーが有効化どうかを確かめる方法である。

 インターネット検索するとホットキーを調べるツールがいくつか見つかる。筆者も自作のプログラム用にPowerShellで空いているホットキーの組み合わせを探すプログラムを作った。プログラム自体には、あまり興味が持てないだろうから、リストを掲載するのはやめてGitHubに上げておいた。

●ShinjiShioda/SerchWindowsHotkey: PowerShell Search Windows Hotkey program  https://github.com/ShinjiShioda/SerchWindowsHotkey

 また、上記のリポジトリに、作成したプログラムで出力したCSVファイルとそれを取り込んだExcelファイルも置いてある。

ホットキーの割り当て状態

 以下の表は、Windows 11 Ver.22H2で機能キーを使うホットキーの割り当て状態である。機能キーは、Winキーあり/なしの組み合わせがホットキーに使われている。ただし、修飾キーにWinキーを含まない組み合わせはごく少数である。また、「Win+Alt+Ctrl」を修飾キーに持つ組み合わせは定義されていないようだ。ファンクションキーのF14以降にホットキーの割り当てが多数あるが、検証はできなかった。F12までしかないキーボードでは、「Shift+F1~F12」が「F13~F24」になるとされているが、この方法では、F13~F24に割り当てられたホットキーを押すことはできないようだ。これについては別途調べてみたい。

 文字/数字/記号を使うホットキーは、修飾キーにWinキーを含むものだけが定義されており、Winキーを含まない組み合わせは、ホットキーとしては定義されていなかった。これは、そもそも文字数字キーは、アクセラレータでの利用が想定されているからだろう。

 ホットキーは原則は文字ではなく、キーに対して定義する。Windowsでは、さまざまな配列のキーボードを使うため、記号類に対応したキーには特殊な仮想キーコードが割り当てられており、特定の配列に依存しないようになっている。日本語用の109キーボードの場合の記号キーの割り当てを以下の表に示す。

 ホットキーを使って、さまざまな機能をキーだけで実行できるユーティリティなどもあり、ホットキーで作業効率などを改善できる。残念ながら、すべてのホットキーを調べることはできないが、少なくともWindowsが利用しているホットキーがわかれば、これを避けて割り当てをすることが可能だ。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください