Ule4JIS
の代わりにAutoHotKey
を使い始めた。
更新履歴
- 2022/10: 一部リマップ対象のキーの修飾キーの付与に対応した
.ahk
に更新。
AutoHotKey
AutoHotKey
は、Windows向けの独自スクリプト言語によるオートメーションツール。
MacOSでいえば、AppleScript
みたいな感じ。(すこし乱暴にあてはめている)
キーのリマップ、自動化、GUIの作成までできるというから驚く。
基本的な使い方は、
- スクリプトを自分で作るか、ネットの海から拾ってきたのを修正するなどして用意する。(
.ahk
または.exe
ファイル) - 用意したファイルをダブルクリックするとスクリプトが常駐しはじめる。
- 対応した操作でスクリプトの処理を実行できる。
といった感じ。
.exe
ファイルは.ahk
から変換したものがある。AutoHotKey
をインストールしていなくても利用できる形式になっている。
配布されているものならば、配布元などを信頼して実行する方がいい。不用意に実行しないこと。
今回は使い始めた経緯と見るべき資料、そしてキーボードのリマップについて書いておく。
使いはじめた経緯
以前はule4jis
を使っていたのだが、若干使い勝手が悪いのと、もとは別の目的でもAutoHotKey
を導入したが、キーボードのリマップでも使えるのでこちら1本にした。ule4jis
については前に記事を参照:
資料探しは少し難
日本語の資料は多いが、バージョンが古いもの(v1.0)も多く、その頃はAotoHotKey_L
というものもあって、今現在はその_L
がバージョン1.1になっているようだ。バージョン履歴をみると分かる。といってもメジャーバージョンが同じなだけあって、古いものでもそのまま動く。ただ、記述が古いものも新しいものもそのまま動くので、何が新しい表現か戸惑う。
ちゃんとヘルプ・ドキュメントを読めば分かることなので、読もう。 日本語のwikiもあるにはあるがやはり古いようだ。公式は検索もやりやすいので結構見やすい。
環境
- AutoHotKey: Version 1.1.33.09
- windows 10 21H1
リマップ
キーボードのリマップは、呼称には別があるかもしれないが、ここでは、あるキーを押したら別のキーを押したことにする、というくらいの意味。AutoHotKey
ではホットキーという名称。
これを利用してUle4JIS
で実現していたUSキーボードの使用を可能にする。これもフックしている形なので、一部ソフトでは使えないことには留意する。一方でAutoHotKey
では、指定アプリがアクティブなときのみ、リマップ動作を実行できる、などの利点がある。
スクリプトに書く必要があるので、対応表を作るような感じになる。Autohotkeyを用いてWindowsでUS配列キーボードをJIS配列設定で使えるようにする(US->JIS) - 粗大メモ置き場も参考にさせてもらった。
2022/10追記: ctrl
などの修飾キーとリマップしたキーの同時押しに対応するときは、send
を使うと出力において、修飾キーをワイルドカードのように指定することができないのでこれを使わないようにしている。ctrl
+]
などを使えるようにした。
USキーボードのキーの位置に対応するJISキーボードのキーを、USキーボードのキーに置き換えていく:
; us2jis.ahk
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
; autohotkey用のスクリプトusキーボードレイアウトを有効化する。
*"::send @
*&::send {^}
*'::send &
*(::send *
*)::send (
*+0::send )
*=::send _
*^::send {=}
; 修飾キー対応
*~::+
; `ctrl+[`などの修飾キーにも対応するならsendはつけない。
*@::[
*`::send {{}
; 修飾キー対応
*[::]
*{::send {}}
*]::send \
*}::send |
*+::send :
+*::send "
*vkBA::send '
SC029::send {``}
+SC029::send {~}
;; 右ウィンドウズキーで全角半角切り替え。
RWin::send {SC03A}
<before>::<after>
の形式でリマップ(正式にはホットキー登録)できる。send
についてはこちら: Send - Syntax & Usage | AutoHotkey
手前についたりしている*
や+
は修飾キー。+
はシフトキーも押されているときに働く。*
はワイルドカードで、他の修飾キーが押されていても働く。詳細はこちら: Hotkeys - Definition & Usage | AutoHotkey
send
の後ろにある{}
で囲んだりしてるのは、+
や^
などがShift
やAlt
などとして解釈されるのを防いでいる。エスケープのようなもの。バッククォート`
はさらにバッククォートでエスケープする必要がある。
半角全角切り替えは少しいじっている。
使っているキーボードには、右ウィンドウズキーがあるが使うことがないので、SC03A
つまりCapsLock
キーへリダイレクトしている。CapsLock
は全角半角切り替えになっている(設定した覚えはない?)ので、右ウィンドウズキーで全角半角切り替えができるようになる。
また、参考サイトでは、+VKF4::send{~}
などで全角半角キーを扱っていたが、こちらの環境では、全角状態で~
を打ち込んでも最初の1回が表示されないという状態になっていたので、キーを調整した。後述のKey History
でSC029
が全角半角キーなのを確認して、変更したところうまく動作するようになった。
一時停止やキー調整
基本的にはタスクトレイにあるH型アイコンで操作する。このアイコンは起動中のスクリプトごとに1つある。どれが対応するかは、カーソルを置いた時に表示されるポップアップというかツールチップにスクリプトのファイル名が載るのでそこから判断する。
一時停止など
邪魔になるときなどで、スクリプトの一時停止をしたいときは、Windowsのタスクバーのタスクトレイから停止できる。H型のアイコンを右クリックするとメニューが表示される。その中の下のほうの:
- Suspend Hotkeys
- Pause Script
が停止関連。上のスクリプトは、ホットキーを使っているので前者のSuspend Hotkeys
で一時停止できる。Pause Script
の方は処理中の内容を停止できるんだろう(使ったことがない)。
KeyHistory
キーの調整やキーコードを調べる時は、同じくタスクトレイのH型のアイコンから、一番上にあるOpenを選択すると、ウィンドウが表示されるのでウィンドウ上のメニューから、Key Historyを開けばいい。キーを押して、F5やメニューのRefresh
を押すと最新のキー履歴が表示される。そこからコードやUp
やDown
などのストローク情報、修飾キーなどが分かる。
おわり
AutoHotKey
はリマップ以外も結構使えるので便利。もう少しうまいこと使いこなしたく思う。
英語スラスラと読みたいなとドキュメント見ながら思いました…
Windowsの再起動後は自動で常駐しないので、自動で起動させるならスタートアップにスクリプトを登録しておくこと。
以上です。
使っているキーボードはこれ。4年くらい使っているが壊れていない。まだ普通に売ってて安心感がある。問題はないと思うが右ウィンドウズキーと書いたが正確には右コマンドキー。 おすすめキーボード。
コメント