WindowsをMacのように - MacのCMD + バッククォートキーのショートカットをWindowsで使用する方法

Juntai Park @arkjun@hackers.pub
長い間、メインの開発環境としてMacを使っていましたが、Windowsを再びメインで使い始めて1年が経ちました。
いくつかのデメリットはあるものの、Windows 11+WSL(Ubuntu)環境での開発も悪くありません。もちろん、CMDキーがないことや、Ctrlキーを使ったコピー&ペーストが不便な点は否めません。
しかし、MacにはないWindowsのメリットが気に入っており、逆にWindowsにはないMacのメリットも魅力的です。
またいつかMacを再びメインにして、Windowsをサブにする日も来るでしょう。メイン環境は状況によって柔軟に変えていけるものと考えています[1]。
前置きが長くなりましたが、僕がMacでよく使うショートカットキー、CMD + `(バッククオート) は、同じアプリ内のウィンドウを切り替える機能を持っています。例えばChromeブラウザを2つ開いている場合、このショートカットを押すとChromeのウィンドウ間を切り替えられます。 Macで一番よく使っていたショートカットで、Windowsでも似たような機能をするショートカットを一生懸命検索しましたが見つかりませんでした。
そこで、AutoHotkey[2] を使って簡単なスクリプトを作成して使用しています。
完璧に動作するわけではなく、個人的には「そこそこ満足できる」レベルの動作ですが、
- Macに慣れているがWindowsも使っている誰かの役に立つように
- Hackers' Pubの活性化(?)を願って
このAutoHotkeyのスクリプトコードを共有します。
; Alt + `キーを押したときに実行されるコード
; MacOSのCMD + `(バッククオート)キーと同じ機能(同一アプリ内のウィンドウ切り替え)をWindowsで実現
!`::
{
focusedWindow := WinExist("A")
if !focusedWindow
return
focusedPID := WinGetPID(focusedWindow)
focusedPName := WinGetProcessName(focusedWindow)
focusedClass := WinGetClass(focusedWindow)
focusedTitle := WinGetTitle(focusedWindow)
; Get all windows of the same class and process
windows := []
for window in WinGetList()
{
if (WinGetPID(window) = focusedPID && WinGetTitle(window) != focusedTitle)
{
windows.Push(window)
}
}
if (windows.Length > 1)
{
WinActivate(windows[2])
} else if (windows.Length = 1) {
WinActivate(windows[1])
}
}
実行方法は上記のコードを任意のahk拡張子のファイルとして保存し、AutoHotkeyで実行するだけです。また、AutoHotkeyを使えばこのスクリプトを実行ファイル(exe)としてコンパイルすることもできます。
追記)以前、GitHub Gistにも共有しています。
お読みいただきありがとうございました。
実は、最近1年間は主にWindowsを使用していましたが、その間に時々Macをメインで使うこともありました。 ↩︎
AutoHotkey(オートホットキー): 独自のプログラミング言語(マクロ言語)を用いてコンピュータを制御することができる。「AutoHotkey」という名称から想像できるように、当初はキーボードのホットキー(ショートカットキー)をカスタマイズすることを目的として開発されたが、ユーザーの要望を取り入れる形で開発が進むにつれスクリプト言語と分類されるほどに膨大な機能が実装され、コミュニティも大きなものとなっている。出典: ウィキペディア (https://ja.wikipedia.org/wiki/AutoHotkey) ↩︎