昨日まで、無変換キーとアルファベットなどの同時打鍵時の動作を設定してきました。これとは別に、AutoHotkey には「ホットストリング」という、特定の文字列が入力されると自動的に別の文字列に置換したり、何か処理を実行させる機能があります。 AutoHotkeyJp > リファレンス > ホットストリングによれば「主に英語圏でのテキスト入力の省力化を想定」した機能らしいです。試しに漢字直接入力 TUT-Code の全てのストローク約2700字を割り当てたら、一部の例外(四打鍵のカナ)を除き普通に動作したので、四打鍵のカナを修正して三打鍵にし、昨日まで行った無変換キーのショートカットと合わせたスクリプトを紹介。いずれ Bitbucket にリポジトリを作ってソース全体を管理していく予定で、その際は追記します。 TUT-Code の情報は Let's Type with TUT-CODE にまとまっており、今回ホットストリング用に作った定義ファイルの元も、こちらで公開されていたものです(詳しくは後述)。 実行環境はいつもと同じ Windows 7 32bit + AutoHotkey 1.1.21、ポータブルな Unicode 32bit 版(ダウンロード元はこちら)。下は簡単なデモ動画で、エクスプローラ上でのファイル名変更の中でこの入力方式を使っている様子。タスクトレイに IME がなく、AutoHotkey だけで日本語入力しているのが分かると思います。入力速度はデモ用にゆっくりしました。(5月26日追記:Chromeで正常再生できる動画に差し替えました)
準備
適当な作業用フォルダを作り、下のファイル群を作りました。AutoHotkey のプログラム本体、起動用バッチファイル、そしてスクリプト四つ。一番上がバッチから呼び出すメインで、他三つはメインからインクルードされるショートカットとホットストリングの定義ファイルです。なおバッチの start コマンド末尾にある true はスクリプトに渡す引数で、起動時のモードを指定するもの。true なら最初から TUT-Code 有効、false なら起動時は TUT なしで普通の英数直接入力になります。
TUT-Code 用ホットストリング定義ファイル
先ほど紹介したウェブサイト Let's Type with TUT-CODE では、最近の漢字動向を踏まえて拡張コードを追加した WXG用TUT-CODE定義ファイルが公開されています。これは WXG という日本語入力システム用のバイナリファイルですが、今回、作者の方の承諾を得て TUT のストロークを抽出し、四打鍵とカタカナに若干修正を加えて AutoHotkey のホットストリング定義に変換しました。 修正点の詳細は下記のとおり。四打鍵は AutoHotkey のホットストリングの仕様上、途中で別の字に変換されてしまうため、またカタカナは英語の大文字と同じイメージで、入力モードを変更せず漢字・ひらがなとシームレスに打つためです。 • 四打鍵カナの二・三打鍵目をコロンに変更。例 「ぱ」 tltk → t:k • ひらがなと同じストロークを Shift 押下で打ったものをカタカナに。例 「パ」T*K 下がファイルの中身で、一部のキーはエスケープのためバッククォート(`)を前置しています。記号はカスタマイズし易さを考えて別の定義ファイルとし、ここには入っていません。
スクリプト
下が、バッチファイルから呼び出すメインのスクリプトです。ホットキー・ホットストリングは全て外部ファイルにあり(#Include で読み込み)、こちらではモード切り替えだけを制御。Ctrl+J で TUT-Code 入力、Ctrl+セミコロンで普通の英数直接入力になり、モード変更に連動してトレイアイコンが変わります。 モード変更のたびにスクリプトを再起動していますが、これは入力したキーのバッファをクリアするための苦肉の策。こうしないとモード切り替えの前後で入力バッファが維持されてしまい、期待どおりの動作になりません。もっとスマートな方法があればいいですが…。 下は、昨日設定した無変換キー+アルファベットのショートカットをそのまま外部化したもの。TUT-Code を使う使わないに関係なく、常に有効になります。 TUT-Code では、ホームポジションのキー+スペースに句点・読点など記号類を割り当てます。これは漢字やカナと違ってカスタマイズ頻度が高いので、下のように別ファイルとしました。スラッシュ+スペースのようにそのまま入力させたいものは、出力側スベースを {Space} と書きます。
使い方と今後の課題
冒頭の動画のとおり、バッチファイルから起動します。IME との共存・同時使用は考えていませんが、試しに VJE-Delta 4.0 のかな漢字入力と一緒にこのスクリプトで TUT-Code を有効にしたら、後者の方が優先して働きました。事実上 IME を無視する形です。 動画で示したエクスプローラ上の他、コマンドプロンプト、Terapad、Firefox、pgAdmin のクエリツールなどいくつかのアプリケーション上で、今のところ同じように使えています。エディタによっては、キーバッファの取り合いになるのか、動作しない場合あり。なおエクスプローラでファイル・フォルダ名を入力する際は、コロンを含むストロークが使えません(そもそもパス名にコロンを使えないため)。 課題の一つとして、ストロークを忘れた or 未習得の漢字をどうやって入力するかがあります。その時だけ IME を有効化 & TUT-Code を無効化して普通に入力する手もありますが、切り替えが面倒。いま試しているのは、ひらがなと漢字を対応させたテキストファイル(いわゆる単漢字辞書)を別途用意して AutoHotkey で読み込み、擬似的な単漢字変換を行うことです。AutoHotkey では連想配列や簡単な GUI もでき、そこそこ使えそうなので、いずれ Bitbucket のリポジトリで公開できると思います。