今回は、Windowsで快適なプログラミング環境を作るためによく使われている「AutoHotKey」について、作業効率化のためにどのような設定を行っているかをご紹介します。
※ AutoHotKeyは「Ctrl(Control)キーとCapslockキーを入れ替える」や「あるキーを組み合わせて押すとブラウザを開いてGoogle検索をする」などができるキーボードの入力をかなり自由にカスタマイズできるアプリです。
設定のコンセプトは「CapslockでWindowsでもEmacs風のキーバインドを使えるようにしつつCtrlキーとして動かす」で作成しました。
本記事執筆時点の設定内容をGitHubに上げておきますので、使えそうなところをコピペで使ってもらえたらと思います。
matatabi3/autohotkey Release 2020042901-for-blog(GitHubリンク)
※ ターミナル上のCapslock+bにバグがあったので修正しました。
少しでもプログラミングしやすい環境づくりや作業効率向上のお手伝いができれば幸いです。
目次
1. 前提条件
まず本記事の内容を使うために必要な条件は以下のようになっています。
- Windows10であること
おそらくWindows7以降であれば大丈夫だと思いますが、他バージョンでは動作確認していません。 - 管理者権限が使えること
レジストリの変更を行うため、管理者権限が必要になります。 - AutoHotKeyが使えること
Zip版もあるので、インストールできなくても大丈夫だと思います。
2. 想定利用環境
次に、今回の設定を使っているキーボード環境です。
自分は仕事の関係上WindowsとMacOSを行ったり来たりする必要があり、外付けキーボードは同じものを使用しつつ両OSでできるだけ操作感を揃えながらよりキーボードのホームポジションから手を離さずに作業できる環境を作りたいと思い、AutoHotKeyの設定いろいろ見直しました。
(Mac本体のキーボードも英字配列にしています。)
- Surface Pro TypeCover(英字配列)
- Mistel BAROCCO MD770(英字配列)
方向キーやHome/End・PageUp/DownはFnなどと組み合わせなくても使えるキーボードの方がより便利に使える設定になっていると思います。
3. F13キーを作成する
いきなり「F13キーを作成する」という表現に疑問を持たれたかもしれませんが順を追って解説します。
先ほどAutoHotKeyではキーボードの入力を自由にカスタマイズできると紹介していたのですが、完全に自由に制御できないキーがいくつかあります。
Capslockがまさにそのキーの1つで、AutoHotKeyでカスタマイズを行うときに「Capslock+○を▲にする」という設定がうまく動きませんでした。
こちらは公式でも既知の問題としてFAQにも記載があります(半角/全角、CapsLock、かな(カナロック) などのLock系のキーへのキー割り当てが上手く行かない。)
そのため公式の解決策に従ってCapslockを使ったカスタマイズを実現するために、一般的なキーボードには存在しないF13作成して対応します。(CapslockをF13に割り当てる)
ChangeKeyを使ったF13の割当方法はこちらが参考になります。→「キーボードの配列をカスタマイズして使いやすくする」
※ 米国版のSurface Proを使っているせいか、自分の環境ではChangeKeyを使った設定がうまくいかなかったため、「zkxs/map_capslock_to_f13.reg (GitHubリンク)」を使って直接レジストリの変更を行いました。
4. Capslockキー+αの設定
CapslockがF13になれば、あとは「F13+○を▲にする」という設定をガシガシ進めていくだけですね。
設定の最新は「matatabi3/autohotkey (GitHubリンク)」にリンクを貼っておきます。
設定のコンセプトとしては以下をイメージしています。
- 基本的にはCtrlキーとして動作
- Emacsのようなカーソル移動
- 日本語入力切り替えをラクに
- 一部MacOSと同じ挙動
順番に解説していきます
4.1. 基本的にはCtrlキーとして動作
F13 & Enter::Send {Blind}^{Enter} |
上記のような Send {Blind}^▲
とシンプルになっているところは、ほとんどがCtrlキーとしての役割を持たせるための設定です。(^はCtrlキーを押しながらを指します)
{Blind}を付けておくことで、Shiftキーなどとの組み合わせで押したときもCtrlキーの役割を維持したまま動作してくれます。
以前「Ctrl(Control)キーの配置を変えて作業を効率化する方法」の記事でも書いていたのですが、これまではCapslockをCtrlキーとして使っていましたので、Capslockの基本的な動きとしてはCtrlキーとして動作させています。
やはりCtrl+cやCtrl+vは10年以上愛用していますし、多用するショートカットなのでやはり指や手首への負担が少ない位置に置いておこうという想いです。
4.2. Emacsのようなカーソル移動
F13 & BS::backspace_line() |
上記のような関数を割り当てている箇所の設定です。(Enterはシンプルに割り当てています。)
MacOSを使っていて「ここは本当に良いな」と思っているのは、Ctrl+aなどでEmacsのようなカーソル移動ができる機能です。
矢印キーまで手を移動しなくてもカーソルが移動できるのは、プログラミングをする上で非常に重要だなと感じました。
それをWindowsでも実現したいと思い、「usi3/emacs.ahk (GitHubリンク)」を参考にEmacs風カーソル移動を盛り込んでみました。
p,b,n,fのカーソル移動とa,eでHome/Endの動きをするのは本当にラクなので、Backspace, Enter もEmacs風にするとほとんどホームポジションから手を動かさずに作業ができるのでオススメです。
直接方向キーの割当をせず関数呼び出しとしているのは、例えばWindows Terminalを使っているときはCapslock+a
をHomeではなくCtrl+aとしたいときがあるので、入力しているアプリを判定して割当を変えるようにするためです。
If is_target()
の箇所で該当のアプリかどうかを判定しています。
4.3. 日本語入力切り替えをラクに
F13 & j::Send {Blind}!{sc029} ; Alt + ` |
先日の記事「Mistel BAROCCO MD770 のレビュー【完成度高い分離キーボード】」でも触れたのですが、BAROCCO MD770は左Altキーが少し小さく左に寄っているため、入力切り替えで使用しているAlt+`
が若干押しにくくなってしまいました。
入力切り替えは使う頻度も相当高いため、ホームポジションに近い位置に割当を変えようと思い「Capslock+j」を「Alt+`」に割り当てるようにしました。
これでほぼ手を動かさずに入力切り替えができるようになり、かなりスムーズに文章が入力できるようになりました。
4.4. 一部MacOSと同じ挙動
!q::Send,!{F4} |
MacOSでアプリケーションを終了するショートカットがCommand+q、タブを閉じるがCommand+wに割り当てられていますが、これが便利だなと思っていました。
WindowsではAlt+F4でアプリを終了になりますがかなり押しにくいので、MacOSの挙動と同じになるよう以前からAlt+qでアプリが終了できるように設定しています。
また、Capslockが完全にCtrlと全く同じではなくなったため、元々Ctrl+fなどに割り当てられていたキーを少し押しやすくするため、右のAltキーを右Ctrlキーに変更しています。(一番左下のCtrlはなんだかんだで押しにくい組み合わせが多いため)
MacOSでも同じようにCapslockの挙動をこの記事とほぼ同じになる設定を行っていますので、Ctrl+fなどのEmacs風になってしまったキーはスペースの右のAlt/Commandキーを押しながら実現するという形で統一しています。
以上、AutoHotKeyでCapslockを使って快適なプログラミング環境を作る方法のご紹介でした。
AutoHotKeyの基本的な機能しか使っていませんが、いろいろな設定ができて本当に便利なアプリだと思います。
特に普段あまり使わないキーをF13~F24に変えてしまって、組み合わせるキーの幅を広げるとかなりやりたい放題できるので、自分にとって使いやすい環境を追求していくのも面白いと思います。
快適なプログラミング環境づくりや作業効率向上のお役に立てれば幸いです。