AutoHotKeyでUSキーボードのリマップ

Ule4JISの代わりにAutoHotKeyを使い始めた。

更新履歴

  • 2022/10: 一部リマップ対象のキーの修飾キーの付与に対応した.ahkに更新。

AutoHotKey

AutoHotKeyは、Windows向けの独自スクリプト言語によるオートメーションツール。 MacOSでいえば、AppleScriptみたいな感じ。(すこし乱暴にあてはめている)

キーのリマップ、自動化、GUIの作成までできるというから驚く。

基本的な使い方は、

  • スクリプトを自分で作るか、ネットの海から拾ってきたのを修正するなどして用意する。(.ahkまたは.exeファイル)
  • 用意したファイルをダブルクリックするとスクリプトが常駐しはじめる。
  • 対応した操作でスクリプトの処理を実行できる。

といった感じ。

.exeファイルは.ahkから変換したものがある。AutoHotKeyをインストールしていなくても利用できる形式になっている。 配布されているものならば、配布元などを信頼して実行する方がいい。不用意に実行しないこと。

今回は使い始めた経緯と見るべき資料、そしてキーボードのリマップについて書いておく。

使いはじめた経緯

以前はule4jisを使っていたのだが、若干使い勝手が悪いのと、もとは別の目的でもAutoHotKeyを導入したが、キーボードのリマップでも使えるのでこちら1本にした。ule4jisについては前に記事を参照:

windows10でJIS/USキーボード設定を切り替える
日本語JISキーボードと英語USキーボードを切り替える。(windows10) 設定で切り替えてもいいが、手間がかかる。 なので、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の後ろにある{}で囲んだりしてるのは、+^などがShiftAltなどとして解釈されるのを防いでいる。エスケープのようなもの。バッククォート`はさらにバッククォートでエスケープする必要がある。

半角全角切り替えは少しいじっている。 使っているキーボードには、右ウィンドウズキーがあるが使うことがないので、SC03AつまりCapsLockキーへリダイレクトしている。CapsLockは全角半角切り替えになっている(設定した覚えはない?)ので、右ウィンドウズキーで全角半角切り替えができるようになる。

また、参考サイトでは、+VKF4::send{~}などで全角半角キーを扱っていたが、こちらの環境では、全角状態でを打ち込んでも最初の1回が表示されないという状態になっていたので、キーを調整した。後述のKey HistorySC029が全角半角キーなのを確認して、変更したところうまく動作するようになった。

一時停止やキー調整

基本的にはタスクトレイにあるH型アイコンで操作する。このアイコンは起動中のスクリプトごとに1つある。どれが対応するかは、カーソルを置いた時に表示されるポップアップというかツールチップにスクリプトのファイル名が載るのでそこから判断する。

一時停止など

邪魔になるときなどで、スクリプトの一時停止をしたいときは、Windowsのタスクバーのタスクトレイから停止できる。H型のアイコンを右クリックするとメニューが表示される。その中の下のほうの:

  • Suspend Hotkeys
  • Pause Script

が停止関連。上のスクリプトは、ホットキーを使っているので前者のSuspend Hotkeysで一時停止できる。Pause Scriptの方は処理中の内容を停止できるんだろう(使ったことがない)。

KeyHistory

キーの調整やキーコードを調べる時は、同じくタスクトレイのH型のアイコンから、一番上にあるOpenを選択すると、ウィンドウが表示されるのでウィンドウ上のメニューから、Key Historyを開けばいい。キーを押して、F5やメニューのRefreshを押すと最新のキー履歴が表示される。そこからコードやUpDownなどのストローク情報、修飾キーなどが分かる。

おわり

AutoHotKeyはリマップ以外も結構使えるので便利。もう少しうまいこと使いこなしたく思う。 英語スラスラと読みたいなとドキュメント見ながら思いました…

Windowsの再起動後は自動で常駐しないので、自動で起動させるならスタートアップにスクリプトを登録しておくこと。

以上です。


使っているキーボードはこれ。4年くらい使っているが壊れていない。まだ普通に売ってて安心感がある。問題はないと思うが右ウィンドウズキーと書いたが正確には右コマンドキー。 おすすめキーボード。

https://amzn.to/38gDi0i

コメント

タイトルとURLをコピーしました