皆さんはIMEの「単語登録」使ってますか?「おつ」って入力すると、変換の候補に「お疲れさまです。〇〇です。」とか出るようにするアレ。
今はスマホでもメジャーな単語登録ですが、今回はAutoHotKeyの単語登録的な機能である「ホットストリング」をご紹介します。
ホットストリングを試す
基本的な書き方
スクリプトファイルを開いて1行記述してください。
::ahk::AutoHotKey
リロードして他のアプリケーションに「ahk」と書いてみましょう。
何も起こりませんか?ではEnterを押してみましょう。すると「AutoHotKey」と文字が変化したはず。これがホットストリングです。
::タイプするキー::出力される文字
で定義することができます。
ちなみに初期状態ではIMEがONでもOFFでも変換可能です。IMEがONの場合はEnter2回で確定することができます。
2バイト文字を出力する際の問題と解決法
次に日本語を出力してみましょう。
::otu::お疲れさまです。中川です。メールの件承りました。
全く同じ文法で出力は可能です。ただしこの場合、IMEがONだと変換した際に1文字消去されてしまいます。
これは文字を変換する際、Backspaceで変換前の文字を消去しているのが原因です。入力した文字数と消去される文字数が合っていないと、こんな風に元々書かれていた文字が消されてしまいます。
これを避けるにはタイプするキーを「otk」など文字数が変化しない組み合わせにすることです。
またアプリケーションによっては「お疲レ様です。中川です。メールの件承リマした。」と正しく変換されないこともあります。
これを解決するには、
::otk::
Clipboard = お疲れさまです。中川です。メールの件承りました。
Send,^v
Return
このように記述しましょう。少々記述は長くなりますが、正しく変換されない問題は解決できます。
「otk」とタイプしても何も出力しない代わりに、クリップボードに文字列をコピーし、それをペーストしています。
この方法であればIMEの状態に関わらず、2バイト文字も問題無く出力できるはず。
複数行の記述
例えば「ahk」と入力して複数行出力したい場合は、Sendコマンドを使ってみましょう。Enterを{}で囲めば改行されます。
::ahk::
Send,Auto
Send,{Enter}
Send,Hot
Send,{Enter}
Send,Key
Return
Auto
Hot
Key
ホットストリングのオプション
終了文字の設定
終了文字とは「これを入力すると変換します」というキーです。最初に提示したEnterがこれに当たりますが、デフォルトの状態だとそれ以外にも沢山あります。
ハイフン | カッコ | カンマ/ドット | コロン | スラッシュ | クオート | 感嘆符 | 特殊 |
---|---|---|---|---|---|---|---|
– | () | , | : | / | ‘ | ! | Space |
{} | . | ; | \ | " | ? | Enter | |
Tab |
結構な数ですよね。個人的にはこんなにいらないので、Enterのみにしたいと思います。
ホットストリングを記述したファイルにこの1行を付け加えましょう。
#Hotstring EndChars `n
これはホットストリングの終了文字を設定する記述です。もし他のキーを加えたい場合、
#Hotstring EndChars `n`t ./
こんな風に記述してもかまいません。(この場合エンター、タブ、スペース、ドット、スラッシュを指定)
その他のオプション
その他様々なオプションがありますが、ここでは使用頻度の高そうなものを抜粋してお伝えします。記述方法は、
#Hotstring OC*
など#Hotstring
からスペース1つ開けてオプション名です。複数のオプションを設定する場合、オプションごとにスペースは不要ですが、あってもかまいません。
O – 終了文字を出力するかどうか
まずはアルファベットのOです。このオプションがONの場合、終了文字の入力が文字としては無視されます。
オプションがOFFの場合は最後に入力したEnterが文字としても有効になり、改行されていますが、オプションがONの場合それはありません。
C – 大文字小文字を区別するかどうか
::ahk::auto hot key
こんなホットストリングがあるとします。
デフォルトでは「ahk」と入力すると「auto hot key」と出力されますが、「Ahk」だと「Auto hot key」、「AHK」だと「AUTO HOT KEY」と入力に応じて大文字に変換されます。
Cオプションを有効にすると、「AHK」や「Ahk」では変換されません。逆に言えば大文字の入力を別のホットストリングとして登録しておけば、大文字を入力した際、全く別の文字を出力することができます。
* – 終了文字無しで発動させる
アスタリスクです。このオプションが有効になると、終了文字を入力しなくてもホットストリングが発動します。
非常に快適に入力できますが、意図しない発動には注意しましょう。
ホットストリング個別のオプション
ホットストリング単体に対してオプションを有効にすることも可能です。
:*:ahk::autohotkey
最初のコロンの後にオプションの文字を入力することで、「このホットストリングだけは終了文字無しで発動」など、柔軟な設定ができます。