LoginSignup
0
2

More than 1 year has passed since last update.

MacのUSキーボードで日本語環境を快適に! MacもWinも同じ⌘キーで!

Last updated at Posted at 2021-10-25

Karabiner-elementsを利用したキー割り当て設定:MacOS/Windows10onVirtualBox

uskeyboard.jpg
MacユーザでUSキーボードを使いたい人は多い、またVirtualBoxでWindows環境を併用している人も多い、私もその一人である。 しばらくはMacキーバインドとWindowsキーバインドでそれぞれ使っていたが、やはり同じキー操作で使うのが快適であると思い立ち、Karabiner-elementsを利用することで「macもwinも同じキー操作に」する方法を紹介する。

確認した環境情報:Apple純正USキーボード(Magic Keyboard US)で...
MacOS BigSur/Monterey/Ventura、
Karabiner-elements 14.3.0(14.12.0でも動作確認済:2023/4月)、
Windows10 on VirtualBox 6.1.28/6.1.32(7.0.6でも動作確認済:2023/4月)

実現したことは下記:
(1)MacOSでの日本語切替は、左⌘キーを押すと「英字」に、右⌘キーを押すと「ひらがな」になる
  (↑これまで通り、⌘+c, ⌘+v, ⌘+x, ⌘+z, ⌘+a, ⌘+s ...などは問題なく機能する)
(2)Windows10 onVirtualBoxでは、左⌘キーを押すと「英数」に、右⌘キーを押すと「かな」になる
  (↑Macと同じ様に、⌘+c, ⌘+v, ⌘+x, ⌘+z, ⌘+a, ⌘+s ...なども機能する)
(3)おまけ:Windows10 onVirtualBoxで、⌘と←, →, ↑, ↓ の押下で それぞれ 行top, 行end, 文書top, 文書end

おまけのカーソル移動:注意点
・MacOSのMS-Officeは一般的なMacキー所作とは異なる部分あり(⌘やctrlの組合せに関して)
・MacOSではctrl+aやctrl+eでも行端移動できるが今回方法のWindows上では未対応


(1)MacOSでUSキーボードの左右の⌘で日本語のON/OFFする手順

Karabiner-elementsのバージョンで下記と画面が異なりますご了承ください

まず、Karabiner-elements をインストールする。
インストールしたら、[Preferences]メニューから表示されるポップアップ画面の[Complex modifications]タブを選んで、左下のボタン[Add rule]を押す。
karabiner-preferences
すると、ポップアップに[Import more rules from the Internet]というボタンが現れるのでコレを押してブラウザを開く。
import-rules
ブラウザ表示されたページの上部リンクから[International(Language Specific)]をクリックすると、ページ下方にジャンプするので[For Japanese(日本語環境向けの設定)] を"Import"する。
page-link
Karabiner-elementsにImportされたので、[Preferences]メニューの一覧から「コマンドキーを単体で押したときに、英数・かなキーを送信する」を"Enable"にする。
これで、左⌘キーを押すと英字モード、右⌘キーを押すとひらがなモードの切り替えが実現する。
enable-set
added-rule

(2)Windows10(VirtualBox)で、MacOSと同じに左右の⌘で日本語のON/OFFする手順

Karabiner-elementsの既存rulesに望みのものが見つからなかったので、新たにruleを作成(JSON記述)
下記のコードでJSONファイルを作成します。
(※下記コードには、(3)のおまけ:カーソル移動キーruleも含んでいます)

JapaneseSettingForMacUSkeyOnVirtualBox.json
{
    "title": "Japanese-Setting for US-keyboard on VirtualBox",
    "rules": [
    {
        "description": "Japanese On/Off : Make ⌘key for Japanese on(right⌘)/off(left⌘) as 'CTRL+7'/'CTRL+.' under VirtualBox",
        "manipulators": [
        {
            "type": "basic",
            "from": { "key_code": "left_command", "modifiers": { "optional": [ "any" ] } },
            "parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
            "to": [ { "key_code": "left_control", "lazy": true } ],
            "to_if_held_down": [ { "key_code": "left_control" } ],
            "to_if_alone": [ { "key_code": "7" , "modifiers" : [ "left_control" ] } ],
            "conditions": [ { "type": "frontmost_application_if",
                "bundle_identifiers": [ "^org\\.virtualbox\\.app\\.VirtualBoxVM$" ] } ]
        },
        {
            "type": "basic",
            "from": { "key_code": "right_command", "modifiers": { "optional": [ "any" ] } },
            "parameters": { "basic.to_if_held_down_threshold_milliseconds": 100 },
            "to": [ { "key_code": "left_control", "lazy": true } ],
            "to_if_held_down": [ { "key_code": "left_control" } ],
            "to_if_alone": [ { "key_code": "period" , "modifiers" : [ "left_control" ] } ],
            "conditions": [ { "type": "frontmost_application_if",
                "bundle_identifiers": [ "^org\\.virtualbox\\.app\\.VirtualBoxVM$" ] } ]
        }
      ]
    },
    {
        "description": "Cursor-Move with CTRL+←,→,↑,↓ (i.e. CTRL=⌘) as lineTop,lineEnd,docTop,docEnd under VirtualBox",
        "manipulators": [
        {
            "type": "basic",
            "from": { "key_code": "left_arrow", "modifiers": { "mandatory":["left_control"] } },
            "to": [ { "key_code": "left_arrow", "modifiers": [ "fn" ] } ],
            "conditions": [ { "type": "frontmost_application_if",
                "bundle_identifiers": [ "^org\\.virtualbox\\.app\\.VirtualBoxVM$" ] } ]
        },
        {
            "type": "basic",
            "from": { "key_code": "right_arrow", "modifiers": { "mandatory":["left_control"] } },
            "to": [ { "key_code": "right_arrow", "modifiers": [ "fn" ] } ],
            "conditions": [ { "type": "frontmost_application_if",
                "bundle_identifiers": [ "^org\\.virtualbox\\.app\\.VirtualBoxVM$" ] } ]
        },
        {
            "type": "basic",
            "from": { "key_code": "up_arrow", "modifiers": { "mandatory":["left_control"] } },
            "to": [ { "key_code": "home", "modifiers": [ "left_control" ] } ],
            "conditions": [ { "type": "frontmost_application_if",
                "bundle_identifiers": [ "^org\\.virtualbox\\.app\\.VirtualBoxVM$" ] } ]
        },
        {
            "type": "basic",
            "from": { "key_code": "down_arrow", "modifiers": { "mandatory":["left_control"] } },
            "to": [ { "key_code": "end", "modifiers": [ "left_control" ] } ],
            "conditions": [ { "type": "frontmost_application_if",
                "bundle_identifiers": [ "^org\\.virtualbox\\.app\\.VirtualBoxVM$" ] } ]
        }
      ]
    }
  ]
}

このruleの概要:VirtualBox環境の時のみに適用されるルール
・単独で左⌘キーを押した場合にctrl+7 に置換え、右⌘キーを押した場合にctrl+. に置換える
 (↑後でWindows側のIME設定変更あり:ctrl+7 , ctrl+. を それぞれ 英数, かな に変更)
・⌘を装飾キー(組合せ)で使う場合は、ctrlとして機能する
・カーソル移動に⌘を使えるようにする:⌘+←,→,↑,↓ は 行頭, 行末, 文書頭, 文書末へ移動する
 (↑⌘はctrlに置き換わっているので、実際はctrl+←,→,↑,↓ の置換え処理)

作成したJSONファイルを、Karabiner-elementsのrule保存場所(下記)に保存します。

rule格納場所
~/.config/karabiner/assets/complex_modifications

Karabiner-elementsの[Preferences]メニューから表示されるポップアップ画面の[Complex modifications]タブを選んで、左下のボタン[Add rule]を押す。 表示されるruleから、"Japanese-Setting for US-keyboard on VirtualBox"の [Japanese On/Off:...] を"Enable"にする。
【重要】EnableになったRulesの順番を変更します、[Japanese On/Off:...]を "↑Up"ボタン で先頭に移動します。
commandKeyToCtrlKey.jpg
【重要】ここで、VirtualBoxを起動してWindows10のVMにし、IMEのキー割り当てを変更します。
IMEの「あ/A アイコン」で右クリックしてプロパティを開きます、さらに詳細設定を開いて、[全般][編集操作][キー設定]の"変更"ボタンから開いたウインドウで"キー追加"ボタンを押し、ctrl+7 を押下でOKします。これで追加されたctrl+7の行の先頭項目'入力/変換済み文字なし'を"IME-オフ"に設定します(項目を右クリック)
同じように、"キー追加"ボタンを押し、ctrl+. を押下でOKします。これで追加されたctrl+.の行の先頭項目'入力/変換済み文字なし'を"IME-オン"に設定します(項目を右クリック)
※つまり、Karabiner-elementsで、左⌘はctrl+7 , 右⌘はctrl+. となっているので、これをIME-オフ, オンにする
winKeySetting.jpg
これで、Windows10(VirtualBox)で、Macと同じように左⌘キー/右⌘キーで日本語が切り替わります。

★追記!:困ったWindows変更:IMEプロパティ設定が勝手に無くなる!!キー変更が機能しない...
対処方法:いろんな人が文句を言いながらも対処を載せている(下記参考:記事の一例)
※一度プロパティ設定してある場合は、プロパティ表示が無くなっても復活させればキー設定も復活します

【参考URL:IMEプロパティ復活】
IMEのプロパティがない!詳細設定がない!最短で元に戻す方法【Windows 10】

(3)おまけ:Windows10(VirtualBox)で、MacOSと同じに⌘+←,→,↑,↓ でカーソル移動の手順

Karabiner-elementsの[Preferences]メニューから表示されるポップアップ画面の[Complex modifications]タブを選んで、左下のボタン[Add rule]を押す。 表示されるruleから、"Japanese-Setting for US-keyboard on VirtualBox"の [CursorMove with CTRL...] を"Enable"にする。
【重要】EnableになったRulesの順番を変更します、[CursorMove with CTRL...]を "↑Up"ボタン で先頭の次(2番目)に移動します。
ctrlKeyToLineMove.jpg
これで、Windows10(VirtualBox)で、Macと同じように⌘+←,→,↑,↓ が行頭,行末,文書頭,文書末へのカーソル移動となります。

【windows側の日本語切り替えは、なぜ ctrl+7, ctrl+. キーなのか? の話】
Windows(VirtualBOX)でMS-Officeを使使いますよね〜ふつう...
で、Word,PowerPoint,Excel,特にExcelではショートカットキーが大量に存在してて、そのキーを変更できなかったり変更が面倒だったりします。このために、日本語のIME-オフ、オンにしたいキーとカブったりすると困るわけです。
そこで、MS-Officeのどれにも使われてないショートカットキーを探しました、すると(たぶん...)ctrl+7, ctrl+. は大丈夫そうでした。
そういうわけで、このキー割り当てになっています。

その後の話 ...(2023年)
Windowsアプリは、どうにもショートカットキーが散乱・混乱してて統一されておらず勝手に個々にアサインしている気配。なので被らないキーを割り当てようとしても難しい・・・
現時点では、左⌘キーは CTRL+Shift+F11 とすることで他アプリと競合しない模様.
JapaneseSettingForMacUSkeyOnVirtualBox.jsonスクリプトは、
"description": "Japanese On/Off :...のブロックの最初のルール定義部分の

"to_if_alone": [ { "key_code": "7" , "modifiers" : [ "left_control" ] } ],

"to_if_alone": [ { "key_code": "f11" , "modifiers" : [ "left_control" ,"shift" ] } ],

に変更してください.


参考情報:
快適キーボード操作のためのキーカスタマイズ ~Mac編~
Karabiner Elementsの記号対応表

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2