IMEを使用せずに漢字 (人名) を直接入力する

IME を使わずに漢字を直接入力する AutoHotKey のスクリプトです。


はじめに

少しずつ鍛えた単漢字・人名辞書を基に、入力システムを作成しました。

※ 2024/10/27 追記
新しいバージョン 1.1.0 を公開しました。新機能と合わせて内容を更新した記事を別に作成しましたので、最新版についてはそちらをご覧ください。

主な機能

  • IME を使用せずに漢字を入力します

  • 変換キーを使用しません

  • 入力した読みが辞書にマッチした時点で自動的に変換されます

  • ただし、読みは 2 文字または 3 文字までで、登録単語には単漢字もしくは姓/名を想定しています

半角 2 文字で漢字変換する「連想入力」方式と同じようなものだと思いますが、本システムでは 2 文字および 3 文字の読みで漢字変換を行います。

運用には AutoHotKey を使用します。自分用に作ったものでまったくユーザーフレンドリではないので、申し訳ありませんが分かる方のみ使ってみてください。

動作環境

  • AutoHotKey が動作する環境

動作確認は Windows 10 + AutoHotKey v1.1.24.02 で行っております。また、本システムへの直接的な影響はありませんが、IME には ATOK 2015 を使用しています。

インストール方法

ダウンロード先

zip をダウンロードしてください。

インストール手順

ダウンロードしたリポジトリを適当なフォルダに配置してください。AutoHotKey がすでに稼働している環境であれば、登録などは必要ありません。

添付している辞書ファイルはあくまでサンプルとして使用してください。この辞書は作成者が完全な独自ルールで作成したものであり、この中の読みを覚えてもまったくメリットはありません。本入力システムを継続してご利用いただく場合は、ご自身で読みのルールを決めて新しく辞書を作成することをお勧めします。

使用方法

実行前の準備と基本的な操作方法

実行する前に設定・編集が必要な箇所がいくつかあります。

  • direct-input23.ahk の 6 行目あたりで、入力システムを使用するウィンドウグループを指定してください。初期状態では Chrome とメモ帳を指定していますので、変更または追加してください。

  • そのすぐ下にある 「global dictionaryFile := 」の行で使用する辞書ファイルを指定します。

また、トップ画像でも使用している動作確認用のテストページをutils\inputtest フォルダに用意しました。任意の http サーバで動かしてください。
http サーバが必要な場合は utils フォルダの testserver.py をご利用ください。utils フォルダで

python testserver.py

を実行すれば、http://localhost:8000/inputtest/inputtest.html でアクセスできます。

準備ができたら、direct-input23.ahk を実行してください。

ページには入力対象と、その読み、入力フォームが表示されますので、読みに従ってフォームに文字を入力すると、入力内容が自動的に漢字変換されます。

重要 : 1 文字削除には「^h」ホットキーを使用してください。このホットキーで Backspace を SendInput すると同時に、本システムの入力バッファを操作しています。キー自体はご自身の環境・設定にあわせて自由に変更していただいてかまいません。

下まで入力したら (もちろん途中でもいいですが) 再読み込みしてください。表示される人名は inputtest/names.txt に記述していますので、自由に編集してご利用ください。読みは同じフォルダの辞書ファイル (dictionary.txt) から自動で取得します。辞書に登録されていない漢字の読みは表示されません (し、入力もできません)。サンプルにも表示されない箇所があると思いますが、ご容赦くださいませ。

動作の仕組みと入力バッファ

入力したキーは本システムの入力バッファに追加され、バッファ内が 2 文字または 3 文字となったときに変換処理が発生します。辞書の検索は、入力内容に対して読みが最長一致となるように行っています。したがって、読み 2 文字が変換された時点では入力バッファはクリアされず、続く 1 文字で 3 文字読みの登録が見つかると、先の変換を破棄し、あとから見つかった単語に置き換えます (動画の「大輔」の部分。「ds」で「山崎」に変換されたあと、「dsk」で直前の「山崎」が BS 2回で破棄され「大輔」に変換されています)。
最初の 2 文字読みの変換を明示的に確定したい場合は、^Space などに登録している clearBuffer() を呼び出すホットキーを使用してください (入力バッファをクリアします)。
もしくは、後述する再変換機能を使用すれば、直前の (読み 3 文字の) 変換を取り消して、最初の 2 文字の変換を確定できます。

入力バッファの処理はあまり本気でやっていないので、別のウィンドウに移動したりとかでちょいちょいクリアされてしまうことがあります。逆にクリアされずにたまってしまうこともありますので、そのときは前述した ^Space などのホットキーを利用してください (入力バッファの内容は後述するバッファウィンドウで確認できます)。

以下、ホットキーに登録している機能を説明していますが、ご利用中の環境・設定に合わせて適宜ご変更ください。

再変換機能

トップ画像の「和田 祐希」さんを入力するときに、読みのとおりに「yykb」と入力すると「悠b」と変換されてしまいます。仕組みは後で詳述しますが、このような場合はホットキー「^l」(エル) で区切り位置を修正できます (1回押せば、「悠b」→「祐希」に再変換されます)。

サスペンド機能

^q で入力システムを停止します。同時に IME をオンにしますので、本システムの辞書に登録されていない文字を入力するときに使用してください。

IME によっては、IME をオンにしたままでも本システムが動作する場合があります。ただしその場合も、入力文字種を「英文字」にしておかないと、2文字→ 3文字の (明示的でなくても) 再変換で表示上の文字が合わなくなります (余計に削除されます) ので、ご注意ください (動作がおかしいと思ったら、まずは IME がオンになっていないかご確認ください)。

IME のオンが不要な場合は、IME_SET() の呼び出しをコメントアウトしてください。

リセット機能

^!s でシステムをリセットします。辞書を再読み込みする際や入力システムが不安定になったときに使用してください。

バッファウィンドウ

画面左上に、入力バッファと直前の変換内容および2つ前の変換内容を含むウィンドウを表示しています。また、サスペンド時には背景がオレンジになります。
このウィンドウの表示は ^!p でトグルできます。

辞書について

辞書には「(読み)=(登録文字)」の形式で単語を登録していきます (「=」を含む行がエントリして認識されます。行頭にセミコロンを置いただけでは無効になりません)。このときに、読みが重複しないように登録する必要があるので注意してください。読みが重複している場合は、先に登録された単語が有効になります 後に登録された単語が有効になります。※ 2024/10/27 修正: 「後」でした。

登録単語の読みがすべて 2 文字であれば気にする必要はないのですが、3 文字の読みが混ざると、上で説明したようにどうしても単語の区切りが意図したとおりにならないケースが発生します。もう一度別の例をあげると、

tt=高
tth=高橋
hk=博

という登録があるときに「高博」を入力するには、「tt hk」(スペースは入力しません) とタイプしますが、変換では入力バッファの前方から最長一致になる単語を検索していきますので、まず「高」、続いて (1文字目の「高」を破棄して)「高橋」に変換され、そのあと「k」を入力しても「高橋k」(tth k) となってしまいます。
このような場合、「^l」に登録している再変換機能 (reConvert() 関数) を使用すると、直前に変換した内容 (この場合は「高橋」の「tth」) を入力バッファに戻し、最所の 2 文字を優先的に再変換・確定します。残った部分は辞書にマッチすれば変換、なければそのままバッファに残るような仕組みです。^l を「高橋」の状態で押せば「高h」、「高橋k」で押せば「高博」と再変換される、という具合です。

再変換はできますが、あまり利用すると IME (の変換キー) を使用しない (= 打鍵数が減る)、というメリットが薄れてしまうので、できれば再変換は避けたいわけですが、これは辞書の編成や最適化によって回避できると思います。方法はいろいろありますが長くなりますので、この辺りはまた別の機会に。

(本体も含めて) 雑な作りで申し訳ないのですが、辞書の統計情報を表示するページを utils/statistics に用意しましたので (statistics.html)、辞書を作成する際に参考にしてみてください。初期状態では、同一フォルダにある deictionary.txt の内容を解析します。この辞書には、読み 2 文字が400件、読み 3 文字が 2,500 件ほど登録されています。

データ (人名) について

本ページの画像や入力テストで使用している人名は、いずれも架空のものです。実在の人物とは一切関係ありません。

本スクリプト、およびスクリプトの補助ツールの作成にあたっては、Claude Sonnet Sonnet 3.5 を使用しました。※ 2024/10/27 追記。

免責事項

当ソフトウェアの使用に関連して生じたいかなる損害、損失、またはトラブルについても、一切の責任を負いません。これには、データの損失、収益の損失、ビジネスの中断、およびその他の金銭的損失が含まれますが、これに限られません。

謝辞

IME の制御に IME.ahk を使用しています。本システムに未登録の文字の入力が楽になりました。作製者の eamat. 様に心より感謝申し上げます。



いいなと思ったら応援しよう!