まるノート

備忘録も兼ねて、様々なお役立ち情報をまとめています。

【AutoHotkey】自分のカスタマイズ内容とその解説

AutoHotkeyのカスタマイズ例として、自分が行っている方法を紹介します。
インストール方法や初期設定方法は以下の記事に記載
AutoHotkeyのイントール方法と初期設定


カスタマイズ内容

まずは結果から。以下のようなカスタマイズにしています。

; 無変換の単発押しは無変換
vk1D::vk1D

;「無変換 + Space」で「Enter」
vk1D & Space::Enter

;「無変換  + J 」で「←」
;「無変換  + I 」で「↑」
;「無変換  + K 」で「↓」
;「無変換  + L 」で「→」
vk1D & I::Up
vk1D & J::Left
vk1D & K::Down
vk1D & L::Right

;「無変換  + H 」で「Back Space」
;「無変換  + ; 」で「Delete」
vk1D & H::BS
vk1D & vkBB::Delete

;「無変換  + A 」で「Home」
;「無変換  + E 」で「End」
vk1D & A::Home
vk1D & E::End


行頭にある;はコメントアウトを表しています。 vk1Dは無変換キー、vkBBはセミコロンを表しており、他にも特殊キーの書き方は様々なものがあります。


参考(無変換との組合せで①~⑧を実現)

①「Enter」
②~⑤「←」「↑」「↓」「→」
⑥「Back Space」、 ⑦「Delete」、 ⑧「Home」、 ⑨「End」



解説

あるキーを別のキーとして割り当てる。

A というキーを C に割り当てたいなら、シンプルに

A::C

と記載します。


以下のようにSendをつけた書き方もできますが、意味が変わってきます。

A::Send,C 

A::Send,C と書いた場合、A 単発 で押した場合のみ C として機能するようになります。


例えば、Crtl + Aというショートカットキーをご存知でしょうか。 メモ帳など開いてこのショートカットキーを使うと、入力済みの文字が全選択できます。


ここでAutoHotkeyのスクリプトにA::Send,Cと書いていた場合、ACとして機能しているはずなのです。 (Aを押下すると「C」が入力される)

しかしCrtl + Aのショートカットキーは引き続き利用できます。
単発押しではないため、AがそのままAとして機能しているということです。


複数のキーを組み合わせて別のキーとして割り当てる。

A と B を組み合わせて、C の機能を割り当てる場合は、

A & B::C

と記載します。

これは A を 押しながら B と押す、という意味です。 A と B の同時押しとは少し違います。


そして注意点として、A & B::C と書いた場合、A 単発で A を入力することができなくなります。

この事象を解決するには、以下のような記述が必要です。

; A の単発押しは A
A::A


冒頭で挙げた自分がカスタマイズしたスクリプトですが、
すべて無変換vk1Dとの組み合わせに対して、なんらかのコマンドを割り当てていることがわかると思います。
なのでvk1D::vk1Dと書いておかないと、無変換を単発で利用できなくなってしまいます。


無変換なんか使わないよ、という方は特に問題はないでしょう。


※自分の場合google日本語入力を利用して、変換/無変換 キーに 半角/全角 を割り当てているので、無変換単発で利用できないと不都合があるのです。


send について補足

Sendを記載すると、 A を 押しながら B を押した場合のみ、C として機能します。

A & B::Send,C


例えば、左矢印を実現するために以下のような記載したとします。

vk1D & J::Send,Left


この場合、無変換と J を押した時点で Left を押したことになります。
範囲選択をするためにShiftを押下しても、Shiftは受付けられません。


上の方で「A::Send,C と書けば、A 単発 で押した場合のみ C として機能するようになります。」との記載をしました。
なんとなくキーの用途を限定するような役割がある、ということをとりあえず覚えておけばよいかと思います。


なお、Send を記載した場合でも他のキーとの組み合わせを可能にしたいのであれば、以下のようにBlindをあわせて記載します。

vk1D & J::Send,{Blind}{Left}


おわりに

当初以前自分は、例えばLeftを実現するために、vk1D & J::Send,{Blind}{Left}のような書き方をしていました。
様々なWebサイト等ではこのような書き方になっており、その内容を参考にしていたからです。


しかし色々検証してみた結果、そもそも Send って使う必要ないのでは?と思いスクリプトの書き直しをしました。
(わかりにくいと思いますが、わざわざBlindを追加するのであれば、最初からSendはなくていいはずです。認識違っていたら教えて欲しいです)

どんな場合にSendが必要かというのを正しく理解できたら、またこの記事を更新しようかと思いますが、 とりあえずは問題なくキー割り当てはできており、想定した通りの挙動になっているので、しばらくこのままで使うと思います。

AutoHotkey のカスタマイズ内容の紹介や解説は以上となります。


その他別のソフトを利用したキーカスタマイズ

AutoHotkey以外のソフトでもキーボード入力に関わる設定を行っています。
こちらも便利なのでやっておいて損は無いと思います。

  • 「半角 / 全角」の切替方法の変更 → 「google日本語入力」で実現。
  • #%&$^_|¥を常に半角入力する → 「google日本語入力」で実現。

google日本語入力については別の記事に記載済みです。よろしければご参考下さい。