👻

US配列での日本語切替ショートカットを変更した

2024/07/23に公開

はじめに

いつもUS配列のMacBookAirを使うなかで
入力ソースの切替をKarabiner-Elementsを使って
左Command英数、右Commandで日本語、というショートカットでやってきました。
しかし、私のなかでこれには1つ問題がありました。
それは、速い速度でタイピングをしていると誤って
Command+その他のキーが押されてしまうんです。
例えば、

  • 印刷画面が急に現れる
  • ブラウザのタブが閉じる
  • アプリケーションが終了する
  • カレントアプリケーションの文字が全選択状態になる
    などです・・・
    そこで1つの試みとして、
  • Control+jで英数入力モードにする
  • Control+kで日本語入力モードにする
    としてみてはどうかという考えになりました。

メリット

  • Commandとかけ合わせたショートカットの誤作動がなくなる
  • 右手をホームポジションから外さずに入力ソースの切替ができる

デメリット

  • Emacsキーバインドである行末までの削除ができなくなる
  • Control+jに改行などを設定している場合はそれができなくなる
  • 手に馴染むまで時間がかかる

設定内容

{
    "description": "Control+jで英数に切り替える。Control+kで日本語に切り替える。",
    "manipulators": [
        {
            "from": {
                "key_code": "j",
                "modifiers": {
                    "mandatory": [
                        "control"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "japanese_eisuu"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "k",
                "modifiers": {
                    "mandatory": [
                        "control"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "japanese_kana"
                }
            ],
            "type": "basic"
        }
    ]
}

(2024/07/24)追記

困りました。。。 手が慣れない。
そこで従来通り、左Commandで英数、右Commandで日本語を追加して、
さらに、誤操作を起こしやすいコンビネーションキー自体を無効化するようにしてみました。

  • Command + d は無効化
  • Command + q は無効化
  • Command + w は無効化
{
    "description": "左コマンドで英数 右コマンドでかな SAKAMOTO Kenji",
    "manipulators": [
        {
            "from": {
                "key_code": "left_command",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "left_command"
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "japanese_eisuu"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "right_command",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "right_command"
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "japanese_kana"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "d",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "vk_none"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "q",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "vk_none"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "w",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "vk_none"
                }
            ],
            "type": "basic"
        }
    ]
}

(2024/07/24) 更に追記

Commandとのコンビネーションキーが有効になる時間を
100ミリ秒間同時押ししないと有効にならないように調整してみた。

{
    "description": "左コマンド押下で英数、右コマンド押下でかな SAKAMOTO Kenji",
    "manipulators": [
        {
            "from": {
                "key_code": "a",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ]
                }
            },
            "parameters": {
                "basic.to_if_held_down_threshold_milliseconds": 100
            },
            "to_if_held_down": [
                {
                    "key_code": "a",
                    "modifiers": [
                        "command"
                    ],
                    "repeat": false
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "d",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ]
                }
            },
            "parameters": {
                "basic.to_if_held_down_threshold_milliseconds": 100
            },
            "to_if_held_down": [
                {
                    "key_code": "d",
                    "modifiers": [
                        "command"
                    ],
                    "repeat": false
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "left_command",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "parameters": {
                "basic.to_if_held_down_threshold_milliseconds": 100
            },
            "to": [
                {
                    "key_code": "left_command",
                    "lazy": true
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "japanese_eisuu"
                }
            ],
            "to_if_held_down": [
                {
                    "key_code": "left_command"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "right_command",
                "modifiers": {
                    "optional": [
                        "any"
                    ]
                }
            },
            "parameters": {
                "basic.to_if_held_down_threshold_milliseconds": 100
            },
            "to": [
                {
                    "key_code": "right_command",
                    "lazy": true
                }
            ],
            "to_if_alone": [
                {
                    "key_code": "japanese_kana"
                }
            ],
            "to_if_held_down": [
                {
                    "key_code": "right_command"
                }
            ],
            "type": "basic"
        }
    ]
}

最後に

これ以外にも良い方法があればまだ共有していきたいと思います。

Discussion