Overriding or Disabling External Hotkeys

レジストリを以下のように変更することで、Win+LWin+U以外のすべてのWindows内蔵ホットキーを無効にすることができる(すべてのOSで動作するはずだが、おそらく再起動が必要):

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
NoWinKeys REG_DWORD 0x00000001 (1)

しかし、それらをすべて無効にするだけでなく、それ以上のことをしたいのであれば、続きを読んでほしい。

他のアプリケーションが所有するホットキーは、スクリプトのアクションに割り当てるだけで、オーバーライドしたり無効にしたりできます。この機能の最も一般的な使い方は、ウィンドウズ自体に組み込まれているホットキーを変更することだ。例えば、Win+E(ウィンドウズ・エクスプローラーを起動するショートカット・キー)に他の動作をさせたい場合は、こうする:

#e::MsgBox "This hotkey is now owned by the script."

次の例では、RUNウィンドウを開くのに使われるWin+Rホットキーが完全に無効になっている:

#r::return

同様に、両方のWinを無効にするには、次のようにする:

LWin::return
RWin::return

アプリケーションの非グローバルホットキー(つまり、そのアプリケーションがアクティブウィンドウであるときにのみ機能するショートカットキー)を無効にしたり変更したりするには、次の例を参考にしてください。Ctrl+P(印刷)をメモ帳でのみ無効にし、他のすべての種類のウィンドウでは有効なままにしておきます:

$^p::
{
	if WinActive("ahk_class Notepad")
		return  ; i.e. do nothing, which causes Ctrl+P to do nothing in Notepad.
	Send "^p"
}

上記の例では、ホットキーがアクティブにならずに「自分自身を送信」できるように、$接頭辞が必要です(そうしないと、無限ループに関する警告ダイアログが表示されます)。こちらもご覧ください:Context-sensitive Hotkeys.

上記の例を「Override.ahk」のような新しいテキストファイルにコピーし、そのファイルを起動することで試すことができる。Alternatively, if your browser supports it, you can download any of them as a script file by clicking the button which appears in the top-right of the code block when you hover your mouse over it.