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)にもホットキーを登録する機能がある。ファイルショートカットを作成したあと、プロパティの「ショートカット」タブを開く。
すると、「ショートカットキー」という欄があり、ここに「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が利用しているホットキーがわかれば、これを避けて割り当てをすることが可能だ。
この記事に関連するニュース
-
これからはいつでも一緒 持ち運べる最高峰キーボード「REALFORCE RC1」は誰に適した製品か?
ITmedia PC USER / 2024年11月14日 17時0分
-
表計算ソフトを効率的に、快適に操作できる静音テンキー
ITライフハック / 2024年11月11日 23時59分
-
「ロキソニン解熱鎮痛薬シリーズ」の特長と開発秘話 / 6キーのプログラマブルキーボード【まとめ記事】
ITライフハック / 2024年11月10日 19時0分
-
キー操作を自由に割り当てできる!6キーのプログラマブルキーボード
ITライフハック / 2024年11月8日 23時59分
-
窓辺の小石 第190回 キーパッドの日々
マイナビニュース / 2024年11月1日 13時25分
ランキング
-
1LINEアルバム、他人の写真が誤表示される不具合で続報 「30日午前には解消予定」 Android版はアップデートを
ITmedia NEWS / 2024年11月29日 18時51分
-
2イオンカード、不正利用に関するNHK報道を受け声明 「1日も速く調査結果を報告できるようにする」
ITmedia NEWS / 2024年11月29日 16時52分
-
3NHKのネット受信契約(案)が“ダークパターン”過ぎて見過ごせない件(前編) NHKの見解は?
ITmedia NEWS / 2024年11月28日 19時9分
-
4“年利実質18%”で話題、ヤマダ積立のページが閲覧できない状態に 今後の方針、同社に聞いた
ITmedia NEWS / 2024年11月29日 19時35分
-
5“セクシー女優”が「明日花キララから詐欺にあった」と主張→“虚偽”認め謝罪 「多大なご迷惑」「誠に申し訳ございません」
ねとらぼ / 2024年11月29日 19時46分
記事ミッション中・・・
記事にリアクションする
記事ミッション中・・・
記事にリアクションする
エラーが発生しました
ページを再読み込みして
ください