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. 実は、最近1年間は主にWindowsを使用していましたが、その間に時々Macをメインで使うこともありました。 ↩︎

  2. AutoHotkey(オートホットキー): 独自のプログラミング言語(マクロ言語)を用いてコンピュータを制御することができる。「AutoHotkey」という名称から想像できるように、当初はキーボードのホットキー(ショートカットキー)をカスタマイズすることを目的として開発されたが、ユーザーの要望を取り入れる形で開発が進むにつれスクリプト言語と分類されるほどに膨大な機能が実装され、コミュニティも大きなものとなっている。出典: ウィキペディア (https://ja.wikipedia.org/wiki/AutoHotkey) ↩︎

Read more →

Tokyo-based の daisuke です。

洪さんの実装力に感化された一人です。

dai (daisuke) Tokyo-based.

 リモートユーザーのため、情緒が不安定です。

空リプ、見逃しがちだからリプか引用、もしくは本文中に名前を含めてね
幼女を自称する人と関わるのがへたくそなインターネット幼女
お一人様で墓石なインスタンスの鯖缶
未成年者フォロー非推奨

An intersectionalist, feminist, and socialist guy living in Seoul (UTC+09:00). @tokolovesme금강토's spouse. Who's behind @fedifyFedify: an ActivityPub server framework, @hollo, and @botkitBotKit by Fedify :botkit:. Write some free software in , , , & . They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme금강토)의 配偶者. @fedifyFedify: an ActivityPub server framework, @hollo, @botkitBotKit by Fedify :botkit: 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub!

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。

嗨,我是 FedifyHolloBotKit 以及這個網站 Hackers' Pub 的開發者!