たぬきの AutoHotKey 設定

AutoHotKeyとは、キーボードの入力やマウスクリックなどを決まった手順で自動化してくれるフリーソフトです。(詳しくは「AutoHotKey の活用方法」を参照)

たぬきは以下のスクリプトを .ahkファイルとして保存し、かつそれを .exeファイルに変換して使っています。 .ahkファイルは AutoHotKey の独自形式で、 .exeファイルはWindowsのソフトウェアを実行するファイル形式です。AutoHotKey Dash という AutoHotKey のソフト内で変換できます。(ただし、 .exeファイルはたぬきの知る限り直接コードを編集できないので、細かい改訂をするのが面倒くさい。.ahk での運用に戻そうかと検討中)

できあがった .exeファイルのショートカットを作成して、それをスタートアップ・フォルダ1に置いているので、パソコンを立ち上げたときに自動でこのプログラムも立ち上がるようになっています。便利~!(ただし、 .ahkファイルでも同じことはできる)

では、具体的にどのような内容のコードを書いているのかというと、概略はざっとこんな感じ。ショートカットキーを作成し、それぞれの機能を割り当てています。

  • Shift + F1 ☞ どのショートカットキーでどの機能が立ち上がるかのカンペを開く
  • Ctrl + F2 ☞ PDFビュアーの選択範囲をハイライトしたうえで、そのテキストをエディタに引用符付きでコピペする
  • Shift + F2 ☞PDFビュアーの選択範囲をハイライトしたうえで、そのテキストをエディタに引用符無しでコピペする
  • Shift + F4 ☞ Excelに作成した訪問先リストにカーソルを合わせた状態で実行すると、Google Maps を開きその用語で検索し、「リストに保存」のボタンをクリックする
  • Shift + F5 ☞ 「Shift + F4」を実行後、Google My Maps (Google Mapsとは別物)でも同じ場所を検索する
  • Shift + F6 ☞ ネットやPDFからコピペしてきた文章を整形する。Wikipedia の註釈削除や、全角/半角変換など諸々
  • Shift + F7 ☞ ブラウザで Zotero Connector のアドオンを実行する
  • Shift + F8 ☞ PDFの任意の箇所をスクショして、あらかじめ決めたフォルダに画像として保存する
  • Ctrl + Shift + Alt + 0 ☞ 1. 2. 3. … のような数字リストを縦並びで作成

コードを見る前に弁明しておくと、めちゃくちゃ杜撰です。コードも基本 ChatGPT に書いてもらっているし、ショートカットキーの割り振りとかも、もうちょっと頭の良いやり方がありそう……

さらに言うと、最初は個々の機能をそれぞれ別のプログラムとして書いていたのですが、途中で「1つにまとめた方が便利じゃね?」と気づきました。なので、個別で書いたプログラムを呼び出して実行する仕様の箇所と、この統括的なコードに直接スクリプトが書かれているものとが混在しています。こういうの、ホントは良くない。普通に自分でも「煩わしい仕様だな」と感じます。まあ、時間のあるときに改良する予定。

ということで、言い訳は終了。コードはこんな感じです。

; Shift + F1  ☞ Help
+F1:: {
    MsgBox("Ctrl  + F2 - Foxit_English_Quote`nShift + F2 - Foxit_Quote_Plain`nShift + F3 - OneTimeAHK`nShift + F4 - RepeatAHK`nShift + F6 - Obsidian_Space_Remover`nShift + F7 - Zotero_Connector`nShift + F8 - FoxitSnapshot")
}

; Ctrl + F2  ☞ Foxit_English_Quote
^F2::{
    Run "C:\Users\●●●●●\OneDrive\AutoHotkey\Foxit_English_Quote.ahk" ; 指定されたスクリプトを実行
}

; Shift + F2  ☞ Foxit_Quote_Plain
+F2::{
    Run "C:\Users\●●●●●\OneDrive\AutoHotkey\Foxit_Quote_Plain.ahk" ; 指定されたスクリプトを実行
}


; Shift + F4 ☞ Excel to Google Maps
+F4::{
    Send("^c")   ; Ctrl + C(コピー)
    Sleep(100) ; 少し待機

    ; Vivaldiをアクティブにする
    If WinExist("ahk_exe vivaldi.exe")
    {
        WinActivate ; Vivaldiをアクティブ化
        Sleep(1000)  ; ウィンドウ切り替えのため少し待機
    }
    else
    {
        MsgBox("Vivaldiが開いていません。Vivaldiを開いてから実行してください。")
        return
    }

    ; Vivaldi上での処理
    Send("^1")   ; Ctrl + 1
    Sleep(1000) ; 少し待機

    Send("g")   ; g
    Sleep(200) ; 少し待機
    Send("i")   ; i
    Sleep(400) ; 少し待機
    Send("^a")  ; Ctrl + A
    Sleep(400) ; 少し待機
    Send("^v")   ; Ctrl + V(貼り付け)
    Sleep(800) ; 少し待機
    Send("{Enter}") ; Enter
    Sleep(3200) ; 少し待機
    MouseClick "left", 392, 530
}

; Shift + F5 ☞ My Maps登録 (Google Maps 登録後連続で)
+F5::{
    if !WinActive("ahk_exe vivaldi.exe") {
        MsgBox("Vivaldiのウィンドウがアクティブではありません。")
        return
    }

    Send("^2")   ; Ctrl + 2
    Sleep(1000) ; 少し待機

    MouseClick "left", 611, 102
    Sleep(500) ; 少し待機

    Send("^v")   ; Ctrl + V(貼り付け)
    Sleep(800) ; 少し待機
    Send("{Enter}") ; Enter
}

; Shift + F6 ☞ Obsidian_Space_Remover
+F6::{
    Run "C:\Users\●●●●●\OneDrive\AutoHotkey\Obsidian_Space_Remover.ahk"
}

; Shift + F7 ☞ Zotero_Connector
+F7::{
    Run "C:\Users\●●●●●\OneDrive\AutoHotkey\Zotero_Connector.ahk"
}

; Shift + F8 ☞ FoxitSnapshot
+F8::{
    Run "C:\Users\●●●●●\OneDrive\AutoHotkey\FoxitSnapshot.ahk"
    Run "C:\Users\●●●●●\WorkSpace\Picture\FoxitCapture"
}



; Ctrl + Shift + Alt + 0 ☞ 数字リスト作成
^+!0::
{
    ; 無変換キーでIMEをオフにする
    Send "{vk1D}"

    ; 変数 UserInput を空で初期化
    UserInput := InputBox("数字を入力してください", "行の数")
    UserInput := Number(UserInput.Value)

    ; 入力が数字でない場合は終了
    if !(UserInput is Integer)
    {
        MsgBox("数字を入力してください。")
        return
    }

    ; 入力された数だけ繰り返し出力(最後だけ改行なし)
    Loop(UserInput)
    {
        if (A_Index < UserInput)
        {
            Send(A_Index . ". " . "{Enter}")
            Sleep(200) ; 0.2秒待機
        }
        else
        {
            Send(A_Index . ". ")
        }
    }
}


^+F1::ExitApp() ; Ctrl + Shift + F1でスクリプトを終了

前提として、ここにはいくつもの機能が乱立しています。全部がひとつながりになっているわけではありません。なので、一部分だけコピペしても(変なところで区切らなければ)動きます。

2つ例にとって解説します。

まず1つ目はこの部分。

; Ctrl + F2  ☞ Foxit_English_Quote
^F2::{
    Run "C:\Users\●●●●●\OneDrive\AutoHotkey\Foxit_English_Quote.ahk" ; 指定されたスクリプトを実行
}

AutoHotKey において、セミコロン(; ← これ)はコメントアウトの機能を持ちます。つまり、セミコロンの後に書かれた内容は、プログラムとして処理されない、単なるメモとなります。適用される範囲はセミコロンからその行のお尻までです。

つまり、上の抜粋部分に関しては、1行目の「Ctrl + F2 ☞ Foxit_English_Quote
」と、3行目の「指定されたスクリプトを実行」がコメントアウトされています。この、3行目のように、途中からコメントアウトすることも可能です。

各行をさらに細かく解説していきます。

  1. [Ctrl + F2] で Foxit_English_Quote というプログラム(自分で作成したやつ)を実行するよという自分用のメモ
  2. [Ctrl + F2] を押したときに { } 内のプログラムを実行。^ が Shiftキーに対応している(AutoHotKeyの記法については別の記事で解説)
  3. Run """" 内のファイルを実行する(●●●●●の箇所は自身のユーザー名)。また、先述のように途中にセミコロンを打って以後の「指定されたスクリプトを実行」をコメントとして記載している
  4. 終わりをわかりやすくするために } だけ改行している

別の箇所も見てみましょう。

; Shift + F5 ☞ My Maps登録 (Google Maps 登録後連続で)
+F5::{
    if !WinActive("ahk_exe vivaldi.exe") {
        MsgBox("Vivaldiのウィンドウがアクティブではありません。")
        return
    }

    Send("^2")   ; Ctrl + 2
    Sleep(1000) ; 少し待機

    MouseClick "left", 611, 102
    Sleep(500) ; 少し待機

    Send("^v")   ; Ctrl + V(貼り付け)
    Sleep(800) ; 少し待機
    Send("{Enter}") ; Enter
}

こっちは長いので、要点だけ解説します。

  • 3~6行目:もしVivaldiというソフトが起動状態でなければ「Vivaldiのウィンドウがアクティブではありません。」とエラー表示を出し、処理をそこで中止。
  • 8~16行目:そうでない場合、以下の入力を順次実行(空行を入れて見やすくしているが、別に空行を挟まなくてもいい)
    1. [Ctrl + 2] を押下
    2. 1秒間(1000ミリ秒)何もしない(読み込みや処理が完了するのを待って次の処理をするため)
    3. スクリーンの(611, 102)の座標位置で左クリック
    4. 0.5秒間何もしない
    5. [Ctrl + V] を押下
    6. 0.8秒間何もしない
    7. Enter を押下

はい、こんな仕組みで自動化をして、単純作業の効率化を図っています。決まったショートカットキーを叩くだけで、あとはプログラムが動いて処理を進めてくれるので、ながら作業にうってつけです。サブディスプレイ2やポップアップ・ウィンドウ3でYouTubeとかをボーッと見ながら、脳死で「ッターン、ッターン」と決まったキーを小刻みに打っていると、気づいたら作業が終了しています。

「なんで自動化したいのに1回で全部終わる仕組みにしないの?」と思うかもしれませんが、AutoHotKey は決まったとおりに処理を遂行する文字通りのマッスィーンなので、読み込みが遅いとか、サイトのレイアウトが変わっていてクリックする場所が変わっているといった場合でも、気にせずガンガン先に進めてしまうからです。最悪の場合、「その処理が終わる前にそのキー押したらマズいことになる」とか、「そのレイアウトでそこクリックしたらデータが消える」みたいなケースも想定できるので、完全自動化はあえて避けています。

というわけで、若干面倒ではありますが、1回1回の処理が正しく進んでいるかどうかをチラ見で確認しつつ――基本的には意図通りに処理されるので――意識の9割は YouTube や映画に向けるという運用で進めています。

なお、これらの処理は、たぬきのパソコンにインストールされている特定のソフトでのみ動く仕様なので、これをコピペしてもたぶん思うようには動きません。また、AutoHotKey だけでこれらの自動化を実現しているわけではなく、AutoHotKey が動かすソフトウェアのショートカットキーも、たぬきが独自に変更しています。(たとえば、Vivaldi というブラウザで「[Ctrl + 数字]を押すとn番目のタブに移動」とか、Foxit PDF Viewer というPDFビュアーで「iを押すと選択箇所をハイライト」とか)

というわけで、最初に提示したフルバージョンのコードの、各箇所の各行の意味であったり、それがどういうソフトと連動していて、連動先のソフトではどういう設定をしているのか、という話はそこそこ長くなります。以下に冒頭の目次的なやつを再掲するので、興味のある機能があったらリンクをクリックしてそのページに飛んでみてください。解説記事を書いたものから、順次リンクを貼っていきます。

  • Shift + F1 ☞ どのショートカットキーでどの機能が立ち上がるかのカンペを開く
  • Ctrl + F2 ☞ PDFビュアーの選択範囲をハイライトしたうえで、そのテキストをエディタに引用符付きでコピペする
  • Shift + F2 ☞PDFビュアーの選択範囲をハイライトしたうえで、そのテキストをエディタに引用符無しでコピペする
  • Shift + F4 ☞ Excelに作成した訪問先リストにカーソルを合わせた状態で実行すると、Google Maps を開きその用語で検索し、「リストに保存」のボタンをクリックする
  • Shift + F5 ☞ 「Shift + F4」を実行後、Google My Maps (Google Mapsとは別物)でも同じ場所を検索する
  • Shift + F6 ☞ ネットやPDFからコピペしてきた文章を整形する。Wikipedia の註釈削除や、全角/半角変換など諸々
  • Shift + F7 ☞ ブラウザで Zotero Connector のアドオンを実行する
  • Shift + F8 ☞ PDFの任意の箇所をスクショして、あらかじめ決めたフォルダに画像として保存する
  • Ctrl + Shift + Alt + 0 ☞ 1. 2. 3. … のような数字リストを縦並びで作成

ながら作業の世界へようこそ!


  1. ● ユーザーごとのスタートアップ・フォルダの場所(パス)
    C:\Users\貴様のユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    ● 全ユーザー共通のスタートアップ・フォルダの(場所)パス
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup ↩︎
  2. 複数のディスプレイ(液晶画面)を並べる、システムエンジニアとかがよくやってるやつ ↩︎
  3. 小さいサイズで画面の一番手前に動画を表示する機能 ↩︎