今回は、AutoHotkeyを導入し使えるようになるまでを紹介していきます。(本記事には個人的見解が含まれます)(2022年1月現在)
AutoHotkeyを始めよう
みなさん、AutoHotkeyはご存じでしょうか?
AutoHotkeyはホットキーへの機能の割り当てなど常駐ソフトの作成に特化したスクリプトエンジン。多彩なコマンドが用意されており、GUIを持ったプログラムの作成も可能。
任意のキーの割り当て変更、マクロ、ウインドウ操作 …
オープンソースの簡易プログラム言語、Windows用フリーソフト。
http://ahkwiki.net/Top
AutoHotkeyを使うことで、普段ほとんど使わないキーを有効活用できるようになり、自分だけのショートカットキーを作ることが可能です。
AutoHotkeyの導入
以下の記事が分かりやすいです。
【AutoHotkey】インストールと基本的なコードの書き方
基本的な使い方を知るためにも、「ahkファイルを実行する」の項までは眺めてみましょう。
.ahkを作成してみよう
ここからは、上の記事や同サイト内の別記事(Windows10でスクリーンショットする方法:AHKでショートカットをよりショートに)を参考に、普段ほとんど使わないCapsLockを、スクリーンショットに変えていきます。
まずは、「AHK」というフォルダを分かりやすい場所に作っておきましょう。
フォルダの中で右クリックし、新規作成(X)から、「AutoHotkey Script」を選択します。
ここでは、「スクショ.ahk」としておきます。
作成したファイルを右クリックし、Edit Scriptを選択します。
すると、下のような文字が書かれたメモ帳が起動します。
ここの下に、コードを書いていきましょう。
sc03A::Send, {RWin Down}{RShift Down}{s}{RShift Up}{RWin Up}
上のコードをコピーし、メモ帳に貼り付けてください。
貼り付けたら、Ctrl+s で変更を保存します。
その後、完成した「スクショ.ahk」をダブルクリックし、有効化しましょう。
CapsLockでスクリーンショットを起動できれば成功です。
AutoHotkeyでよく使う文字列を送ろう
次に、よく使う文字列を、キーをクリックするだけで入力する方法を紹介します。
なお、この記事内で使用している関数は、以下の記事に載っていたものを若干変更したものになります。関数の中身を詳しく知りたい方は、そちらをご覧ください。
[AutoHotKey]変数と関数を使って文字出力スクリプトを改良する
まずは、先ほど作成した「AHK」フォルダの中に「メッセージ.ahk」というファイルを作ります。
次に、ファイルの中に関数を書いていきます。
下の関数をコピーしてファイル内に書き込んでください。
getString(str){ ;getStringという名前の関数(呼び出し時に引数を1つ受け取る)
backup := ClipboardAll
Clipboard := str ;受け取った引数をクリップボードに代入
Send,^v
sleep,100
Clipboard := backup
}
これで準備は完了です。
あとは、入力したい文字列と、それに対応するキーを決めましょう。
例えば、キーボードのスペースの右側を有効活用しよう、ということで
「変換」「カタカナひらがな」と書かれたキーに、文字列を割り振りたい、とします。
変換=大学名
カタカナひらがな=よろしくお願いいたします。
としたい場合、以下のようになります。
複数キーで一つの文字列
キーが足りない
先程、文字列を入力する方法を示しましたが、よく使う文字列は他にもよくあるはずです。
(例えば、「よろしくお願いいたします。」「ありがとうございました。」「了解しました。」「ご都合いかがでしょうか。」や自分の名前や住所、電話番号、メールアドレス、etc…)
これらを入力したい場合、キー一つでは割り振るのが大変。
こういう時、二つのキーを押すことで、一つの文字列を出力出来たら便利ですよね(例えば、変換+nで名前、変換+aで住所、変換+cで電話番号、変換+mでメール、などなど)。
二つのキーにする場合
キー & キー ::getString("○○")
とすることで、同時に押したときだけ、文字列が入力されるようになります。
AutoHotkeyでのキーの書き方については、以下を参照ください。
【AutoHotkey】スキャンコードリスト【scコード一覧表】
TeXでの活用
これまでの知識を使って、TeXでよく使う文字列を、簡単に入力する方法をお伝えします。
先ほどと同じように、作成した「AHK」フォルダの中に「クリップボードTeX.ahk」というファイルを作り、関数を宣言しましょう。
次に、ここに、TeX内で使いたいコマンドを入力していきます。
例えば、日本語で文章を書いていて、区切りのたびに一度半角に切り替えて「, 」や「. 」を打つのは面倒ですよね。
ということで、こちらをキー入力で打てるようにします。
上のコードでは、[,.]を入力し、その後ろに半角スペースを空けるようにしています。
次に、よく使うalignやequationを入力できるようにしましょう。
先に、構造の簡単なalign*で説明します。
使うコードは、以下のようになります。
;;;無変換 + z で\begin{align*} \end{align*} を入力
vk1D & z::
getString("\begin{align*}`n`n\end{align*}")
Send,{Up}
return
ここで、少しだけ解説を挟みます。
関数部分では、begin{align*}を入力した後に、2回改行してから、end{align*}を入力します。
その後、Send,{Up}によって、入力位置を一つ上にずらします。
こうすることで、すぐに式を書けるようになりますね。
次は、alignを説明します。
使うコードは、以下のようになります。
;;;無変換 + a で\begin{align} \end{align} を入力
vk1D & a::
getString("\begin{align}`n\label{}`n`n\end{align}")
Send,{Up 2}
Send,{Left}
return
こちらも解説します。
まずは、begin{align}を入力します。
今回は、label{}も欲しいので、それを、間に挟んでいます。
その後、
Send,{Up 2}
Send,{Left}
によって、入力位置をlabel{}の中に移動させます。
これを、equationでも、同じように行います。
;;;無変換 + e で\begin{equation} \end{equation} を入力
vk1D & e::
getString("\begin{equation}`n\label{}`n`n\end{equation}")
Send,{Up 2}
Send,{Left}
return
;;;無変換 + d で\begin{equation*} \end{equation*} を入力
vk1D & d::
getString("\begin{equation*}`n`n\end{equation*}")
Send,{Up}
return
最後に、\nonumber\\も入力が面倒なので、キーで入力できるようにしましょう。
;;;無変換 + n で\nonumber\\を入力
vk1D & n::getString("\nonumber\\`n")
これにより、\nonumber\\を入力し、その場で改行してくれます。
下に、今回作成したコードを載せておきます。とりあえず使ってみたい、という人は、これをコピぺして使ってみてください。
getString(str){ ;getStringという名前の関数(呼び出し時に引数を1つ受け取る)
backup := ClipboardAll
Clipboard := str ;受け取った引数をクリップボードに代入
Send,^v
sleep,100
Clipboard := backup
}
;;;無変換 + , で", "を入力
vk1D & sc033::getString(", ")
;;;無変換 + . で". "を入力
vk1D & sc034::getString(". ")
;;;無変換 + a で\begin{align} \end{align} を入力
vk1D & a::
getString("\begin{align}`n\label{}`n`n\end{align}")
Send,{Up 2}
Send,{Left}
return
;;;無変換 + z で\begin{align*} \end{align*} を入力
vk1D & z::
getString("\begin{align*}`n`n\end{align*}")
Send,{Up}
return
;;;無変換 + e で\begin{equation} \end{equation} を入力
vk1D & e::
getString("\begin{equation}`n\label{}`n`n\end{equation}")
Send,{Up 2}
Send,{Left}
return
;;;無変換 + d で\begin{equation*} \end{equation*} を入力
vk1D & d::
getString("\begin{equation*}`n`n\end{equation*}")
Send,{Up}
return
;;;無変換 + n で\nonumber\\を入力
vk1D & n::getString("\nonumber\\`n")
PC起動時にAHKを起動できるようにしよう
AHKは便利ですが、PCを再起動した際には、もう一度ファイルを起動しなければいけません。
この手間を省く方法として、.ahkのショートカットを作成し、それをWiondowsのスタートアップフォルダに置いておく方法があります(元のahkファイルをコピーした場合、元ファイルの変更がスタートアップ内のahkファイルに反映されず、変更のたびにコピーしなければいけません )。
詳しいやり方は、以下の記事の「Windows起動時に自作したAutoHotkeyスクリプトが自動的に実行されるようにする」の項に書かれていますので、そちらを参照ください。
【AutoHotkey】インストールと基本的なコードの書き方
まとめ
AHKを理解するのは、最初のうちは難しいかと思います。
まずは、上に書いてあるコードをコピペして使用してみましょう。
そして、慣れてきた、もっと便利な使い方を思いついた、という段階になったら、自分なりにカスタマイズして使ってみましょう。
サイトの通りにやっているのに上手くいかない、こういう機能が欲しいけど実装できない、もっといい書き方あるよ、等ありましたら、気軽にコメントください。
参考文献
AHKを自分一人で覚えるのは難しいです。カスタマイズしたい、もっと勉強したい、と思ったときは、以下のサイトやネットで調べて色々なコードを見てみましょう。
- http://ahkwiki.net/Top
- 【AutoHotkey】インストールと基本的なコードの書き方
- [AutoHotKey]変数と関数を使って文字出力スクリプトを改良する
- 【AutoHotkey】Windowsの使わないキーに好きな文字列を割り当てる方法!
- 【コピペで簡単】仕事が超速い人になる~AutoHotkeyで生産性向上~