AutoHotkeyで*指定と例外の組み合わせ記述方法

例えば、Windowsで特定のソフトのときだけキオスクモードのようにしたいというときがあります。
ですが、TABとAltの組み合わせ、左右のWindowsキー単独やAltなど修飾キーとの組み合わせで、OSのタスク切り替え系の画面が出てしまいます。
これを止める方法の1つに、AutoHotkeyで TAB+Alt を無効にしたり、他のキー入力だとさせることで回避することができます。例えば TAB+Alt を F5+Shift にすることで、アプリ側で TAB+Alt が押された時の動作、というのを実現することもできます。

組み合わせが膨大(ShiftとAlt同時押しの組み合わせも有効なので)なので *TAB とホットキーを指定すればTABを含む組み合わせの全て、だと指定できます。
ここでのポイントは、しかしながら、TAB単独やTAB+Shiftのときはそのままにしておきたいという問題です。
なにしろ、A_ThisHotkey という変数にホットキー名が格納されているのですが、TABでもTAB+Shiftでも「*TAB」だけしか格納されないのです!

なので、以下に対処方法として、A_PriorHotkeyを使用するケースを記載します。

TAB:: ;次のTAB UPのときに、1つ前のホットキー名としてA_PriorHotkeyに「TAB」が格納されるのを利用します。
+TAB::
!TAB::return ;ホットキーとして来るが、何もしない。

*TAB UP:: ;「*TAB」だけだとホットキー名が重複してるというエラーが出てしまいます。
;TABキーが(押し下げられた状態から)上がったとき、という指定方法で回避しています。
if(A_PriorHotkey == "TAB") { ;TAB単独のとき
send, {TAB} ;他の内容でもいいのですが、TAB単独は同じ動作で。
} else if(A_PriorHotkey == "+TAB") {
send, +{TAB} ;ホットキー名は「+TAB」ですがsendのときは「+」{TAB}です。
} else if(A_PriorHotkey == "!TAB") {
send, +{F5} ;TAB+AltをShift+F5にしてみます。
}
;ここに記述の無い組み合わせは無効(何も動作しない)とします
return

*AppsKey:: ;これらのキーは単純に無効化にします。
*LWin::
*RWin::
return




これで、TAB+Alt+Shift等も無効にしつつ、TAB単独の場合の動作を記述できました。
これを特定のソフトのときだけ有効、とすればキオスクモード的になります。
もちろん、Ctrl+Alt+Deleteや、Ctrl+Alt+TABのような特殊なものはOSが最優先にフックしてしまいますので、AutoHotkeyでは対応できません。これらは他のドライバレベルで対応するソフトが必要です。

AutoHotkeyは記述方法がイラッとすること多々ありましたが、慣れて動くようになってくると手放せない便利さがあります。