状況
タイトルの通りだが、MacのJIS配列に慣れた状況からWindowsのUS配列PCを使わなければいけなくなった。
US配列になったことで記号の配置など一部便利になったところはあるものの、日本語/英語の入力切替や、commandキーによる便利なショートカットが使えなくなってしまった。。
- 移動が多いので、外付けのキーボードは使いたくない
- 今後もMac/Win両方使っていく可能性があり、Win特有のショートカットにあまり慣れたくない
- 「以前のバージョンの Microsoft IME」は使いたくない ※後述
ということでカスタマイズ方法をいろいろ試してみたところ、【Power Toys】と【Auto Hot Key】を使って実現できました。
実現したいこと
先に今回実現したいリマップやホットキーを整理しておく。
- 日本語入力/英字入力の切り替えをUS配列でもワンタッチでできるようにしたい
- 左右のCtrlキー(Commandキーの代わり)をそれぞれ内側に寄せたい
- CapsLockを無効化し、Ctrlキーに変えたい
- Ctrl+a, Ctrl+e, Ctrl+k のショートカットをMacと同じように使いたい
最後の Ctrl+k 以外は、OS側の設定とPower Toys でできました。
使ったツール
Power Toys
Microsoft PowerToys | Microsoft Learn
Microsoftが提供しているユーティリティーセットで、キーボードの設定のほかにもマウスやウィンドウのカスタマイズなどいろいろできるやつ。
このツールがあれば「以前のバージョンの Microsoft IME を使う」をオンにしなくても大体のことが実現できました。
↓詳しくはこちら
以前のバージョンの Microsoft IME のご使用について | Microsoft Japan Windows Technology Support Blog
「IMEオン/オフ」「割り当て」とかでググると、「以前のバージョンの Microsoft IME を使う」をオン にして使っている人が一定数いるようです。
そのうちサポートされなくなる可能性が無きにしもあらずで、中長期的に考えてあまりよくなさそうだな、、と思ってたので、これをする羽目にならなくてよかった。
Auto Hot Key
スクリプトを書いたファイルを実行し、任意のキーの割り当て変更やウィンドウ操作などができるスクリプトエンジン。
多彩なコマンドがあったりしてかなり自由度が高そうだけど、とんちんかんなスクリプトを書きまくって大事なところで意図せぬ挙動をしたらいやだなーと思い、今回はできるだけこちらを使わない方向で実現した。
やったこと
前置きが長くなったが実際に1つずつ設定していく。
日本語入力/英字入力の切り替えをワンタッチでやりたい
MacのJISキーボードで便利だったのが、この「英数」キーと「かな」キーだった。
これに慣れ切っていたので、たとえばAlt+Spaceみたいなツータッチでの切り替えを許容したくない。絶対にだ。
WindowsのUSキーボードではこのような形になっている。
Macの「英数」「かな」のところには左右のAltキーが鎮座。
やることとしては
- 「無変換」「変換」キーによりIMEのオン/オフ切り替えをできるようにする
- 「無変換」「変換」をAltキーにリマップ
1. 「無変換」「変換」キーによりIMEのオン/オフ切り替え
まずはOS側での設定。
Windowdメニュー>設定>時刻と言語>言語>優先する言語内の日本語をクリック>オプション>Microsoft IME をクリック>オプション>キーとタッチのカスタマイズ
これで「ワンタッチで日本語入力/英字入力切替」ができるようになった。
ところがどっこい、US配列には「無変換」「変換」キーがない。
「無変換」「変換」をAltキーにリマップ
「無変換」「変換」がないなら、つくればいいじゃない。
ここでPower Toysの登場。
セットアップが済んだら、左上のハンバーガーメニューから、「KeybordManager > キーの再マップ」
左Altキーに「IME Non-Convert」、右Altキーに「IME Convert」をリマップします。
このとき、Altキーをどこか任意の場所にリマップしないと使えなくなってしまうのでそちらも忘れずに。
私は右Ctrlに割り当てました。
これでOKを押下すると、「次のキーには割り当てがありません」という警告が出ます。
要はAltキーが片方どこにもリマップされてないよ!という意味なのですが、個人的にAltは1つあれば問題ないので無視しちゃいます。
これにて「ワンタッチで日本語/英字入力切替」まで完了!
左右のCtrlキー(Commandキーの代わり)を移動したい
MacbookでいうところのCommandキーのようなふるまいをするwindowsのCtrlキーですが、ちょっとセンターポジションから遠くないですか??
こちらもMacのときのようにセンターポジションからできるだけ近い位置に配置したいので、それぞれキーひとつ分ずつ内側に移動させることに。
それぞれWinキーとPrtScキーを選択しました。
Winキーは何かと使いそうなので左Ctrlのリマップ先とし、結果的にWinと左Ctrlを入れ替える形になりました。
PrtScは個人的に使わないので、リマップは行いません。先ほどと同じく警告が出ますがこちらも無視。
CapsLockを無効化してCtrlキーに変えたい
CapsLockって要らなくないですか??要らないですよね。
ということでこちらも引き続きPower Toysでリマップしてしまいます。簡単。
また、この場合も「CapsLockがどこにも割り当てられてないよ」と警告が出ますが問題ありません。
ショートカットをMacと同じように使いたい
Mac時代、下記のショートカットを好んで使っていました。
- Ctrl+a(行の先頭に移動)※Winの場合、Homeキー
- Ctrl+e(行の末尾に移動)※Winの場合、Endキー
- Ctrl+k(カーソルより右を削除)※Winの場合、Shift+End→Delキー
WindowsではHomeキーやEndキーを使って実現できるのですが、いかんせんホームポジションから遠い。
Ctrl+aとCtrl+eに関しては、HomeキーまたはEndキーをリマップするだけで済むので、こちらは引き続きPowerToysで実現していきます。
で、ここからが問題。
MacのCtrl+kの挙動をWindowsで実現しようとすると、「Shift+Endで行全体を選択→Delキーで削除」という操作をする必要があり、この一連の動作はショートカットキーのリマップでは実現できない。
Auto Hot Keyを使う
ここからAuto Hot Keyを使います。
- 拡張子が
.ahk
のファイルを任意の場所に作成し、実現したいスクリプトを書く .ank
ファイルをコンパイルし、実行ファイル(.exe)を作成.exe
ファイルを実行
まず、下記のようなファイルを作成します。拡張子は.ahk
で。
^k:: Send, {Shift down}{End}{Shift up}{Del down}{Del up} Return
スクリプトについてそれぞれサクッと説明すると、
^k::
... Ctrl+kを押下したときSend,
... 右の挙動を実行Return
... スクリプト終了
という感じ。ちなみに改行は必要なく、一行でも書けます。
ショートカットキーとしてよく使うキーは^
のような記号が割り当てられており、二行目のように{Shift}
と表現することもできます。
Return
はキーマップのブロックごとに必要で、一つのahkファイルにつき必ず一つ以上は記述が必要です。
このへんの細かいところは公式に詳しく書いてあります。
Beginner Tutorial | AutoHotkey
.ank
ファイルを保存したら、右クリックして「Compile Script」を押下すると拡張子が.exe
の実行ファイルが作成され、これをダブルクリックすると実行されます。
一見何も起こっていないように思えますが、右下のツールバーにAutoHotKeyの緑アイコンが確認できれば実行中です。
<注意点>
最初、Send, {Shift}{End}{Del}
とシンプルに書いて実行したところ想定通りの挙動はしてくれましたが、ShiftキーやDelキーを押下した状態から抜けられず、ほかのキー操作に影響が出たためdownやupを併用したところうまくいきました。
公式にも「挙動としては同じだけど、downやupを使うとより安全だよ」と書いてあります。
これにて完了。ようやくMacと同じような挙動でキーボード操作ができるようになった!!!
参考
以前のバージョンの Microsoft IME のご使用について | Microsoft Japan Windows Technology Support Blog
Windows10とPowerToysでUSキーボードでも無変換・変換キーを使ってIMEを一発で切り替える - Qiita