Windows 11の日本語IME「Copilot Keyboard」を試したところ、キー操作はもともとATOKにかなり近く、AutoHotkeyで少し補うだけで、ATOKに近い操作感にできました。
この記事では、実際に安定して使えている設定をまとめます。
Copilot Keyboardをインストールする
Microsoft Storeから Copilot Keyboard をインストールします。
ATOKをアンインストールする必要はありません。ATOKとCopilot Keyboardは共存できます。
AutoHotkey v2をインストールする
AutoHotkey公式サイトから AutoHotkey v2 をインストールします。
例えば、
atok-keymap.ahk
というファイルを作成します。
Copilot KeyboardはもともとかなりATOK風
以下のキーは、AutoHotkeyで設定しなくてもそのまま使えました。
| キー | 動作 |
|---|---|
| Ctrl+U | ひらがな |
| Ctrl+I | 全角カタカナ |
| Ctrl+O | 半角カタカナ |
| Ctrl+P | 全角英数字 |
| Ctrl+T | 半角英数字 |
| Ctrl+M | 変換確定 |
このため、Ctrl+U / I / O / P / T はAutoHotkeyで再定義する必要はありません。
「変換」キーで日本語/半角英数を切り替える
ATOKでは「変換」キーで日本語入力と半角英数入力を切り替えていました。
Copilot Keyboardでは標準では同じ動作にならないため、「変換」キーを「半角/全角」キーとして送ります。
私の環境では、
- 変換キー:
vk1C - 半角/全角キー:
vkF3sc029
でした。
$vk1C::SendEvent "{vkF3sc029}"
これで、
日本語入力 → 変換キー → 半角英数
半角英数 → 変換キー → 日本語入力
と切り替えられます。
Ctrl+Nで変換を確定する
ATOKでは Ctrl+N を変換確定に使っていました。
Copilot Keyboardでは Ctrl+M が確定なので、
^n::SendEvent "^m"
とします。
これで Ctrl+N で変換を確定できます。
ChatGPTなどではEnterが送信になるため、Enterを使わずに確定できるのは便利です。
「変換」キーで候補を1ページずつ送る
ATOKでは、候補一覧を表示した状態で「変換」キーを押すと、候補を1画面ずつ送れました。
Copilot Keyboardでも、候補表示中に PageDown を押せば同じ動作になります。
最初はSpaceやTabを押したことから「候補表示中」と推測していましたが、状態が残ってしまい、通常時でも「変換」キーがPageDownになることがありました。
そこで、実際の候補ウィンドウを直接検出する方法に変更しました。
Chromeと秀丸エディタで確認したところ、Copilot Keyboardの候補ウィンドウは、
Class: APNGWndCls
でした。
ただし、入力モード切り替え直後にも同じクラスの小さなウィンドウが一瞬表示されます。
実測では、
入力モード表示: 26 × 26
候補一覧: 299 × 385
でした。
そのため、APNGWndCls の有無だけでなく、ウィンドウサイズも確認します。
最終的なAutoHotkeyスクリプト
現在は次のスクリプトで安定して動作しています。
#Requires AutoHotkey v2.0
#SingleInstance Force
#UseHook True
; Convert key:
; - PageDown while a real candidate window is visible
; - Otherwise toggle Japanese/English input
$vk1C::
{
if IsCandidateWindow()
SendEvent "{PgDn}"
else
SendEvent "{vkF3sc029}"
}
; Ctrl+N -> Copilot Keyboard commit
^n::SendEvent "^m"
IsCandidateWindow()
{
for hwnd in WinGetList("ahk_class APNGWndCls") {
try {
WinGetPos &x, &y, &w, &h, "ahk_id " hwnd
; Ignore small mode-indicator popups.
if (w > 100 && h > 100)
return true
}
}
return false
}
これで、
通常時
変換キー → 日本語/半角英数切り替え
候補一覧表示中
変換キー → PageDown
となります。
候補ウィンドウそのものを判定しているため、状態変数やタイマーは不要です。
Chromeと秀丸エディタの両方で動作を確認しました。
MobaXtermユーザーはCtrl+Mに注意
Copilot Keyboardで Ctrl+M を押すと、変換は確定するものの、同時に別のウィンドウへ移動する問題がありました。
原因は MobaXterm でした。
MobaXtermでは Ctrl+M がグローバルショートカットとして使用されており、MobaXtermの表示/非表示と競合します。
MobaXtermのショートカット設定から Ctrl+M の割り当てを解除または変更すると解決しました。
MobaXtermを常駐させている場合は注意が必要です。
Evernoteなどの常駐アプリにも注意
調整中には、Chromeで文字入力欄以外を選択して「変換」キーを押すと、Evernoteのキャプチャが起動することもありました。
ATOKやGoogle日本語入力では発生しなかったため、Copilot Keyboard使用時には常駐アプリのグローバルショートカットと競合する場合があるようです。
キー操作がおかしい場合は、IMEだけでなく常駐アプリのショートカットも確認するとよいです。
Windows起動時に自動実行する
Win + R を押して、
shell:startup
を実行します。
開いたスタートアップフォルダに atok-keymap.ahk のショートカットを置けば、Windowsへのサインイン時に自動実行できます。
まとめ
Copilot Keyboardは、もともとかなりATOKに近いキー操作を持っています。
AutoHotkeyで補ったのは主に、
- 「変換」キーによる日本語/半角英数切り替え
-
Ctrl+Nによる確定 - 候補表示中の「変換」キーによるPageDown
です。
特に候補ページ送りは、SpaceやTabから状態を推測するより、実際の候補ウィンドウ APNGWndCls とそのサイズを判定する方法の方が安定しました。
ATOKからCopilot Keyboardへ移行する場合でも、かなり近い操作感にできます。