はじめに
- ここ数年、会社外のPCとしてmacbookばかり使ってたけど、最近になって軽さにひかれて14インチで900gを切るpcを買ったので、久しぶりにwindowsを仕事以外で使い始めた。
- そこで、昔、x1carbonをメイン機としてた頃に大変お世話になったAHKを使おうとしたらv2が登場してて、導入方法を簡単に紹介してくれるHPも見当たらなかったので、メモ代わりに投稿することとした。
- やりたいことは、複雑なことではなく、macbookで使っている「BettertTouchTool」的な使い方。
- 具体的には、「無変換/変換キー」をCtrlキー代わりにして、いろいろなショートカットキーを自作したい。無変換/変換キーは、ご存じの通りwindowsではショートカットキーに使われることはないので、勝手にショートカットキーを自作してもバッティングする恐れがないから気が楽だし、なによりも親指のホームポジションにあるから、Ctrlキーなんかよりも、操作しやすい。
- 以前、x1carbonを使ってた頃はAHKのおかげで色々と楽できたけど、macbookでは「英数/かなキー」をCtrlキー代わりにした自作ショートカットを作れなかったから、残念だったよ。
- まぁ、今回買った900g切りpcは、赤いトラックポイントがないから、ThinkPadに比べて、手をホームポジションに置いたままの作業は難しいだろうけど。
ahkのインストール
- 公式サイトで、v2をダウンロードして、ダブルクリックするだけ。
- インストール後、下記が立ち上がる。
- 操作できるアプリとしては「Dash」(ダッシュボードの意味かな?)と「Spy」(これは、v1にも機能があったね)がインストールされるみたいで、上図は「Dash」の画面ということだね。
- 後述するけど、「Dash」「Spy」とも、全く使わなくても、ショートカット自作は可能です。もう、ahkのインストールは終わっているので、メモ帳とかでコードを書いて、.txtを.ahk拡張子に変えるだけで、出来上がりです。
説明サイト
- 本家が運営しているっぽい雰囲気です。日本語でも書かれているから安心です。
- 詳しいことはこのサイトを見てほしいけど、本投稿では、何をやれば何が出来るかの雰囲気づかみまで出来るようにするね。
- ちなみに、「Dash」画面の右側の「Using the Program」をクリックすると、上記サイトの英語版と同じような内容が見れるよ。でも、日本語がないから、英語ができる人だけ代替可能だね。
はじめての実行
- とにかく、正常にインストールできたか試してみよう。「Dash」は立ち上がってなくてOK。
- 説明サイトの下記ページで、サンプルコードを取得できる。
- 赤矢印の先のボタンを押すと、下記の通り、ahk形式のファイルがダウンロードされる。
- メモ帳で中を見れば、当然これだけ書かれている。
MsgBox "Hello, world!"
- これをダブルクリックすると、スクリプトに従い、下記の画面が出る。
- この画面が出ている間は、タスクトレイに緑の「H」マークが出ている。OKボタンを押すと、タスクトレイのHマークも消える。つまり、Hマークは、「スクリプト実行中ですよ!」ということ。
- また、このHマークを右クリックすると下記が表示される。v1と同じような感じだね。
- ふむふむ、動作確認は出来たよ。
- でも、本来のやりたいことは、メッセージボックスにhello_worldすることじゃなく、自作ショートカットを作ることです。
- ここから先は、多少はコードの学習が必要なようだね。
スクリプトの書き方のイメージ
- 説明サイトのここにこんなことが書いてある。
- 上記に従うと、win+Nをホットキーとして、notepadを起動する場合は、こんな感じ。
#n::Run "notepad"
- 少し高度化して、notepadが起動前か起動後かで行動を変える場合は、こんな感じ
#n::
{
if WinExist("ahk_class Notepad")
WinActivate ; 上記のウィンドウをアクティブにします。
else
Run "notepad" ; メモ帳の新規ウィンドウを開く
}
-
おぉ、これでイメージが掴めたね。
-
また、ショートカットキーという呼び方でなくホットキーと呼ぶのが流儀とわかったよ。
-
そして、ホットキー設定は、「#_winキー」+「nキー」+「::ダブルコロン」+「実行したいコード」
-
ちなみに、このページの下の方を見ると、winキー以外の対応も書いてあった。「一般的な修飾語は、Ctrl(^)、Alt(!)、Shift(+)、Win(#)です。」
-
で、Ctrl等の、他のボタンと一緒に押すことが前提のキーなら、上記のようにホットキーを設定できるけど、単体で機能するキー同士でホットキーを作るときは、下記のような書き方をしないとダメと同じページに書いてある。
-
ふむふむ、このような組み合わせをカスタムコンビネーションと呼ぶのだね。
-
また、本来、カスタムコンビネーションは3つ以上のキーを設定できないみたいだけど、下記の通り、#Hotifを使えば、3つでもいけるみたい。ちなみに、図の文章では「2つ以上のキー」って書いてあるけど、原文では「more than two」だから、2は含まないと思うよ。
-
最後に、最重要なコマンド「Send keys」を紹介するよ。と言っても、単純にキー送信を行うだけのコマンドだけどね。keysについては、以下のとおり。
-
とりあえず、書き方のイメージはここまで!
JISキーボードのスキャンコードとか
- キーを組み合わせるとき、winキーとnキーなら、「#n」だったけど、「変換キー」とかって、どうやって表現すればよいの?と思うだろうけど、そいつらは、スキャンコードで表現するのが、autohotkeyの流儀です。
- 有名どころのスキャンコードは以下の通り。
キー | コード |
---|---|
変換 | sc079 |
無変換 | sc07b |
カナ | sc070 |
半/全 | sc029 |
英数 | sc03a |
- もちろん、全てのキーはスキャンコードを持つよ。自分で確かめたい人は、chgkeyをインストールして調べてみて。AutoHotKeyにその機能があればいいんだけど、なぜか見つからないから、chgkeyを紹介するね。
- このソフトを立ち上げて、「調査」ボタンを押したら、「キーボードのキーを調べます」の画面が開くから、その状態で、何かのキーを押すと、スキャンコードが表示されるよ。AutoHotKeyで使うときは、下3桁の数字の頭に「sc」をつけて使って。
- ちなみに、このchgkeyは、キーの入れ替えを簡単に行えて、しかも常駐しないアプリだから気に入ってる。レジストリを書き換えるだけのアプリだから、cpu負担なし!windowsマシンを買ったら、「カナキー」を「altキー」に入れ替えて、「applキー」を「winキー」に入れ替えるのがお気に入り。それに、でかいくせに使い道の低い「CapsLock/英数キー」を「Ctrlキー」にしたり、使わなくなった「半角/全角キー」を「escキー」にするのも良い。
- また、キーは、スキャンコード以外の「名前」でも表現できるよ、例えば、左矢印キーの名前は「Left」。詳しくは、キー名称一覧を見てね。
「Dash」を使ったエディタ起動
- AutoHotKeyでのホットキー作成は、「メモ帳」アプリでスクリプトを書いて、拡張子を.ahkにするだけで作れるけど、本来的には「Dash」でやるんだろうね。一応、「Dash」の画面の説明するけど、メモ帳とかで直接書くよ、という人は、本項目は読み飛ばしてね。
- 「Dash」を起動して、画面左上の「New Script」をクリックすると、下図が出るよ。
- 画面を見ると、保存用フォルダはユーザー名直下のドキュメントフォルダに勝手に「AutoHotKey」フォルダが作られて、そこに入れることになるみたい。当然、画面右上にあるフォルダボタンを押せば、任意の場所を保存用フォルダに指定できる模様。
- 適当なファイル名をUntiledと書かれている欄に記入し、「Minimal for v2」を選択して、Editボタンを押すと、次の画面になる。
- editor選択が出来るみたいだけど、「メモ帳」を選択すると、Command line にコマンドが埋め込まれるので、その後「OK」を押すと、メモ帳で「先ほど書いたファイル名.ahk」が開かれている。
- つまり、ここまでの一連の流れは、エクスプローラー上で、「ファイル名.ahk」を新規作成して、メモ帳で開いたのと大差ない。「Minimal for v2」を選択して、Editボタンを押したため、メモ帳で開いたファイルの1行目に「#Requires AutoHotkey v2.0」が書かれているのがサービスって感じだろうか。この一行の意味はよくわからないけど、将来的に、v2.1のAutoHotKeyがでて、それ用のスクリプトが書かれたときは「#Requires AutoHotkey v2.1」と書いて、そのスクリプトを実行しようとしたPCにインストールされてるAuとHotKeyがv2.0だったときに、「v2.1がインストールされていません!」とか表示させるつもりなのかな?現時点では、不要っぽい文だね。
ahkでホットキーを追加
-
ここからやっと、本来やりたかったことの説明ができるよ。
-
昔よく使っていたホットキーとして、以下の二つがあったから、v2でも再現してみるね。
- [変換]+[i]:デスクトップ画面を左へ1つ進む
- [変換]+[o]:デスクトップ画面を右へ1つ進む
-
上記は、下記の通りタッチパッド4本指でのスワイプでもできるように設定しているし、macbookでも同じスワイプ動作にしているけど、ホームポジションから話すことになるから、少し嫌なんだよね。
-
さて、じゃあ、コードを書いてみようか...おっと、そうだった。AutoHotKey用のコードは「スクリプト」と呼ぶのが流儀だった。
~sc079 & i::Send("#^{Left}")
~sc079 & o::Send("#^{Right}")
- とりあえず、これで動いたよ。
- ところで、「~:チルダ」を忘れずにね。これをつけないと、「変換キー」を普通に使うとき(例えば、「IMEオン割当て」で使用時)の機能が使えなくなるよ。
おわりに
- AutoHotKeyは、高機能だけど、使いこなすにはそれなりの知識が必要。
- だけど、「変換キー」を有効活用する程度なら、上記のスクリプトで十分。
- この投稿が、みんなの利便性向上につながったら嬉しい。