Pages

Monday, March 20, 2023

Windowsで利用可能なホットキーを探す (1/2) - ASCII.jp

kuncikn.blogspot.com

Windows Info 第371回

2023年03月19日 10時00分更新

文● 塩田紳二 編集● ASCII

ホットキーは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キーの組み合わせを個人的にホットキーを使うアプリなどで使うメリットはある。

Adblock test (Why?)


からの記事と詳細 ( Windowsで利用可能なホットキーを探す (1/2) - ASCII.jp )
https://ift.tt/EOFX09u

No comments:

Post a Comment