親指シフト(NICOLA)キーボードエミュレータ
親指シフトを、もっと快適に。
Rust 製の高速・安定な親指シフトエミュレータ。Chrome・Zoom・LINE など、従来のツールが苦手としてきたアプリでも完全に動作します。
他の親指シフトツールにはない機能を、徹底的に作り込んでいます。
従来の親指シフトツールが苦手としてきたアプリに、徹底対応しています。
TSF composition のタイミング問題を独自の Google 日本語入力 I/O 監視で解決。候補ウィンドウ表示中も安定して動作します。
TSF アプリケーションとして動作する Zoom に完全対応。ビデオ会議中のチャット入力も快適です。
Windows Terminal などの TSF ネイティブアプリでも、cold-start 問題を解決して正確に動作します。
Google 日本語入力の内部動作に合わせた専用の制御方式で、IME ON/OFF を確実かつ副作用なく切り替えます。
LINE が内部で行う IME 状態遷移を推測し、意図通りの IME ON/OFF 切り替えを実現します。ALT+TAB でのアプリ切替時の誤動作も解消。Qt ベースのアプリ全般に対応しています。
Windows 標準の Microsoft IME に対応しています。
従来ツールとの根本的な違いは「内部状態を外部から推測する」アーキテクチャにあります。
サクラエディタ・秀丸エディタなど IMM32 API を使うアプリは、IME との連携が単純で、キーを送り込むだけで正しく動作します。多くの親指シフトソフトがここでは問題なく動いていました。
Zoom・LINE・Windows Terminal などの TSF(Text Services Framework)アプリは、IME との通信が高度な内部プロトコルで行われており、外部プログラムから「今 IME が文字を受け付けられる状態かどうか」を直接問い合わせる手段がありません。
awase は Google 日本語入力の I/O アクティビティをバックグラウンドで監視し、その静止タイミングから「TSF composition context が準備完了したか」を推測します。DLL インジェクションなどの侵襲的手法を使わずに、外部観測だけで内部状態を推定するアプローチです。
Chrome や Edge は複数のプロセスが協調動作するため、通常の IMM32 クロスプロセス API が使えません。従来の親指シフトツールが IME ON/OFF 切り替えで誤動作しやすいのはこのためです。
awase は Chrome/Edge 向けに専用の制御戦略を持ちます。IME の実際の状態を shadow モデルとして内部で追跡し、OS に送信したキーと観測された結果の差分から「本当に IME が切り替わったか」を継続的に検証します。
UWP アプリはフォーカスの仕組みが Win32 と異なり、入力経路も独自です。awase はフォーカス変化のたびにアプリの種別を自動検出し、UWP・TSF・Win32 それぞれに最適な入力戦略を切り替えます。
キーボードフック・同時打鍵判定・n-gram モデル・IME 制御戦略の詳しい仕組みは 内部動作の解説 で説明しています。
タイミングだけでなく「日本語として自然かどうか」を統計モデルで判断します。
高速タイピング時、「よかった」の か は右親指と組み合わせて が になるのか、か のままなのか——タイミングだけで判断すると誤変換が起きやすくなります。
awase は日本語 n-gram コーパスから学習した統計モデルを内蔵し、前後の文脈から「どちらが自然な日本語か」を判定します。速く打っても誤変換が少なく、長文入力でも快適です。
ダブルクリックでセットアップ完了。スタートアップ登録も自動で行います。
最新版をダウンロード (MSI)ダウンロードできない場合は GitHub Releases から手動でダウンロードしてください。
インストール不要。解凍してすぐ使えます。
最新版をダウンロード (ZIP)awase-x.x.x-x64.zip をダウンロードして解凍install.ps1 を PowerShell で実行(スタートアップ登録)awase.exe を実行(トレイアイコンに常駐)confirm_mode |
確定モードの選択。ngram_predictive(推奨)、wait(正確重視)、speculative(速度重視)など |
|---|---|
output_mode |
出力方式。unicode がデフォルト |
hook_mode |
フックの動作方式。relay がデフォルトで、安定性を重視した設計 |
Chrome や Edge でちゃんと動きますか?
はい。Chrome / Edge は TSF composition のタイミングが難しく、従来ツールでは文字化けや遅延が発生しがちでした。awase は Google 日本語入力 の I/O を監視して composition の準備完了を検知する独自方式で、これを解決しています。
Zoom のチャットでも使えますか?
はい。Zoom は TSF アプリケーションとして動作しますが、awase は TSF ネイティブアプリへの入力を最適化しており、問題なく使用できます。
ウイルス対策ソフトに誤検知されませんか?
awase は DLL インジェクションを一切使用しないため、セキュリティソフトに誤検知されにくい設計です。キーボードフックと SendInput による標準的な Windows API のみを使用しています。
IME は何に対応していますか?
Microsoft IME と Google 日本語入力に対応しています。従来ツールの多くは「トグルキー」で IME を切り替えるため、現在の状態を正確に把握していないと意図と逆の状態になってしまうという根本的な問題がありました。Google 日本語入力はとくに現在の IME 状態を外部から正しく取得できないため、この問題が起きやすい IME でした。awase は「IME を ON にする」「IME を OFF にする」という冪等(何度実行しても結果が変わらない)な操作で制御するため、状態がずれていても常に意図した結果になります。
他のキーリマッパー(AutoHotKey 等)と併用できますか?
はい。リレーモードでは全キーが再注入されるため、他のフックベースのソフトウェアにもキーが届きます。
スリープ復帰後に動かなくなりませんか?
スリープ復帰・スクリーンロック解除時に自動でフックを再登録します。また定期的なヘルスチェックで異常を検知し、自動復旧します。Windows Update 後も動作に影響しにくい設計にしており、OS の文字出力方式の内部変更に依存しない実装を採用しています。
パスワード入力画面で誤動作しませんか?
IME が OFF のときは自動的にエンジンが無効になり、通常のキー入力になります。
NICOLA 以外の配列は使えますか?
.yab 形式の配列定義ファイルを作成すれば、任意の配列を定義できます。
Chrome で入力すると最初の1文字だけ英字で出てくることがありました
TSF cold-start 問題です。Chrome は IME の composition context を初期化するのに数百ミリ秒かかることがあり、その完了前にローマ字が届くと「こ → ko」「か → kあ」のように文字が化けます。awase は Google 日本語入力の I/O アクティビティを監視して composition の準備完了を検知し、タイミングを自動的に合わせて送信します。
速く打つとシフトが隣のキーに響いて濁点になることがありました
やまぶきR・紅皿など従来ツールで広く報告されていた問題です。親指シフトキーを離すタイミングが次のキー入力に重なると、意図しない同時打鍵と判定されて濁音や別の文字が出てしまいます。「ゆっくり打てば誤動作しない」という状況が生まれていました。awase は n-gram 統計モデルを使って「日本語として自然かどうか」を判断するため、タイミングが多少ずれても正しく判定できます。確定モードも 5 種類から選べるため、自分のタイピング速度に合わせた調整も可能です。
高速タイピングで文字の順番がおかしくなることがありました
TSF 出力処理の完了を待っている間にキーが溜まり、処理再開後に誤った順序で出力されるバグです。例えば「というのは」と打ったつもりが「とはいうの」になるケースが知られていました。awase はタイマーイベントのインスタンスを厳密に識別することでこの問題を解決し、どんな速度で打っても正しい順序で出力します。
Windows Terminal などターミナルで1文字目だけ英字になることがありました
TSF ネイティブアプリでは、変換確定キー(Enter・スペース)を押した直後に composition context がリセットされます。awase はこのリセットを検知して warmup 処理を行い、次の文字入力までに確実に TSF を ready 状態にします。長時間入力がなかった後の最初の1文字も正しく入力できます。
IME の ON/OFF 切り替えが2回目以降効かなくなることがありました
awase が内部で持つ「IME の状態」と実際の OS の状態がずれてしまい、「もう切り替え済み」と誤判定してしまうケースです。awase はフォーカス変化・アプリ切り替えのたびに IME の実態を再観測し、shadow モデルと照合することでずれを継続的に修正します。
ALT+TAB で別アプリに切り替えると LINE でエンジンが OFF になることがありました
ALT+TAB のタスクスイッチャーが表示されている間、OS は一時的にスイッチャーのウィンドウにフォーカスを移します。この瞬間に IME 状態を読み取ると誤って「IME OFF」と判定され、エンジンが停止してしまうことがありました。awase はフォーカス変更のたびに内部カウンタ(エポック)を更新し、切替アニメーション中に発生した古い観測を自動的に無効化します。これにより ALT+TAB 後も正しく IME 状態が維持されます。
a w a s e
「awase」は QWERTY キーボードで打つと、左小指 → 左薬指 → 左小指 → 左薬指 → 左中指 と、左手だけで外側から内側へ流れるように進みます。
キーボードソフトウェアの名前がキーボード上で美しい動きをする——「合わせ(同時打鍵を合わせる)」という意味とともに、そんな遊び心から名付けました。