USキーボードのMacでBootcamp コマンドキーでかな/英数変換とショートカットの両立【Karabiner代用】

Apple

こんにちは、ウマーニャです。
US配列キーボードのMacBook Proで、macOSとWindows10を併用しています。

おもにmacOSを使っていて、『左Command単体押しで英数、右Command単体押しで日本語』に切り替えられるように Karabiner-Elements というフリーソフトを使ってキー割り当てをしています。

ただBootcampでWindows10も使っていて、そのたびに操作の違いで苦労していました。

例えばショートカットキーがCommandでなくCtrlだったり、かな英数切り替えが『Option+`』(クッソ押しにくい)だったりします。

そこで、macOSで自分が使っているのと同じように

・左Commandで英数、右Commandで日本語入力に変更できる
・左CommandをCtrlとしてショートカットに使用できる

という設定にしたので、今回の記事ではその方法をまとめています。

これを読めば、USキーボードMacの操作感そのままでWindowsを使うことができます。

まずCommandキー(Windowsキー)とCtrlキーを入れ替える

BootcampのWindowsだと通常CommandキーはWindowsキーとして動作します。そして、例えばコピーする場合Command+CではなくCtrl+C、ペーストはCtrl+Vとなります。

これ普段Command+Cに慣れているマッカーには不便ですよね。Command押すたびにスタートメニュー開くのも困ります。

そこでまずCommandとCtrlを入れ替えます。

以下の記事を参考にすると簡単にできます。

徒然なるままに bootcampでのcommandとCtrl入替

Command/Ctrl以外のキーバインドも変更したい場合は以下の記事が参考になります。

Windowsのキーボード配列を自由自在に設定する【フリーソフト不要!】|かえるのほんだな
こんにちは。Microsoft信者のかしわばゆきです。今回は、Windowsのキーバインドを自由自在に変更する方法につい

これでCommandキーをCtrlキー、CtrlキーをWindowsキーとして使えるようになりました。


(BootcampでなくMicrosoft Remote Desktopの場合はKarabinerに以下を追加する。その際、普段macOSで使っている「コマンドキー→英数・かな」のコマンドよりも上に置く。「↑↓」アイコンをドラッグすると順番が変えられる)

Karabiner-Elements complex_modifications rules
Karabiner-Elements complex_modifications predefined rules by community

Commandキーでかな/英数を切替できるようにする

日本語IMEの設定

次に左右のCommandキーを単体で押したときにIMEオン/オフ(かな/英数切替)をできるようにします。(2020/7/29更新)

タスクバーで「A」とか「あ」とか書いてあるのを右クリックして、設定をクリックします。

「キーとタッチのカスタマイズ」→「キーの割り当て」→「各キーに好みの機能を割り当て」をオン。

無変換キーは「IME-オフ」、変換キーは「IME-オン」をそれぞれ選択すれば完了です。

参考:日本語IMEの設定(Windows 10 旧バージョンでのやり方)

May 2020以前のWindows 10を使っている方は、以下の記事の「日本語IMEの設定」という章に従ってIMEの設定をしてください。

AutoHotKey

まずはAutoHotKeyをWindowsにインストールしてください。

次に、こちらの記事の「AutoHotKey」の章を参考にahk形式のファイルを作っていきますが、これではショートカットがCommandキーで使えなかったり、CommandとCtrlが逆だったりするので、改良版を以下に載せておきます。

メモ帳に以下のテキストをコピーして、「usmac.ahk」などのahk形式で保存します。保存場所はどこでも大丈夫です。

#USEHOOK ON
LCtrl::Send, {vk1Dsc07B}  ;左Ctrlに変更した左Commandを単体で押すと無変換キーが入力されたことになる
RCtrl::Send, {vk1Csc079}  ;右Ctrlに変更した右Commandを単体で押すと変換キーが入力されたことになる
LCtrl & WheelDown::Send, ^{WheelDown} ;左Command+下スクロールで縮小など
LCtrl & WheelUp::Send, ^{WheelUp} ;左Command+上スクロールで拡大など
LCtrl & Enter::Send, ^{Enter} ;左Command+Enter

;以下は左Command+アルファベット(+Shift)

LCtrl & a::
If GetKeyState("Shift", "P")
Send, ^+{a}
Else
Send, ^{a}
Return

LCtrl & b::
If GetKeyState("Shift", "P")
Send, ^+{b}
Else
Send, ^{b}
Return

LCtrl & c::
If GetKeyState("Shift", "P")
Send, ^+{c}
Else
Send, ^{c}
Return

LCtrl & d::
If GetKeyState("Shift", "P")
Send, ^+{d}
Else
Send, ^{d}
Return

LCtrl & e::
If GetKeyState("Shift", "P")
Send, ^+{e}
Else
Send, ^{e}
Return

LCtrl & f::
If GetKeyState("Shift", "P")
Send, ^+{f}
Else
Send, ^{f}
Return

LCtrl & g::
If GetKeyState("Shift", "P")
Send, ^+{g}
Else
Send, ^{g}
Return

LCtrl & h::
If GetKeyState("Shift", "P")
Send, ^+{h}
Else
Send, ^{h}
Return

LCtrl & i::
If GetKeyState("Shift", "P")
Send, ^+{i}
Else
Send, ^{i}
Return

LCtrl & j::
If GetKeyState("Shift", "P")
Send, ^+{j}
Else
Send, ^{j}
Return

LCtrl & k::
If GetKeyState("Shift", "P")
Send, ^+{k}
Else
Send, ^{k}
Return

LCtrl & l::
If GetKeyState("Shift", "P")
Send, ^+{l}
Else
Send, ^{l}
Return

LCtrl & m::
If GetKeyState("Shift", "P")
Send, ^+{m}
Else
Send, ^{m}
Return

LCtrl & n::
If GetKeyState("Shift", "P")
Send, ^+{n}
Else
Send, ^{n}
Return

LCtrl & o::
If GetKeyState("Shift", "P")
Send, ^+{o}
Else
Send, ^{o}
Return

LCtrl & p::
If GetKeyState("Shift", "P")
Send, ^+{p}
Else
Send, ^{p}
Return

LCtrl & q::
If GetKeyState("Shift", "P")
Send, ^+{q}
Else
Send, ^{q}
Return

LCtrl & r::
If GetKeyState("Shift", "P")
Send, ^+{r}
Else
Send, ^{r}
Return

LCtrl & s::
If GetKeyState("Shift", "P")
Send, ^+{s}
Else
Send, ^{s}
Return

LCtrl & t::
If GetKeyState("Shift", "P")
Send, ^+{t}
Else
Send, ^{t}
Return

LCtrl & u::
If GetKeyState("Shift", "P")
Send, ^+{u}
Else
Send, ^{u}
Return

LCtrl & v::
If GetKeyState("Shift", "P")
Send, ^+{v}
Else
Send, ^{v}
Return

LCtrl & w::
If GetKeyState("Shift", "P")
Send, ^+{w}
Else
Send, ^{w}
Return

LCtrl & x::
If GetKeyState("Shift", "P")
Send, ^+{x}
Else
Send, ^{x}
Return

LCtrl & y::
If GetKeyState("Shift", "P")
Send, ^+{y}
Else
Send, ^{y}
Return

LCtrl & z::
If GetKeyState("Shift", "P")
Send, ^+{z}
Else
Send, ^{z}
Return

#USEHOOK Off

作成したahkファイルを右クリックして「Run Script」を選択します。何もエラーが出なければ成功です。

ただ上記の方法の大きな欠点が一つあって、それはショートカットに右Commandキーが使えないということです。

(スクリプトのLCtrlをRCtrlに書き換えたものを追加すると、かな/英数切替がなぜかうまく動作しなくなるのです。個人的には左Commandでしかショートカットを使わないので問題はないのですが……)

Visual StudioなどでCtrl+記号のショートカットを使用する方は、必要に応じて以下のキーリストを参考にして#USEHOOK Offの前に書き足していってください。アルファベットを記号に変えて追加するだけで良いはずですが、:(コロン)や;(セミコロン)はホットキーとコメントを表す記号なのでsc028、sc027に書き換えてください。

↓AutoHotKeyのキーリスト

キーリスト - AutoHotkey Wiki

Windows起動時に自動でAutoHotKeyが起動するようにする

最後にAutoHotKeyが自動で起動するようにする方法です。

Windowsキー+R (Windowsキーは、AHK起動時ならCtrl、未起動時はCommandです) を押し、「shell:startup」と入力するとスタートアップフォルダが開きます。ここにusmac.ahkのショートカットを入れておくと次回起動時から自動でAutoHotKeyが起動します。PC起動後10~20秒ぐらいで有効化されます。

まとめ

今回はUSキーボードMac&KarabinerユーザーがBootcampする際のキーバインドの方法をまとめました。

・左Commandで英数、右Commandで日本語入力に変更できる
・左CommandをCtrlとしてショートカットに使用できる

個人的にはWindowsがかなり快適に使えるようになったので、お困りの方は一度試してみていただければと思います。

コメント

タイトルとURLをコピーしました