見出し画像

【キーボード】US配列での英数・かな切り替え問題の解決方法

US配列キーボードを使用している人にとってしばしば問題となる「英数・かな切り替え問題」について、よい解決法を探ってみました。


前提

Mac向けの内容です。キーマッピングにはKarabiner-Elementsを利用します。
なお、トグル方式での切り替えでも問題ないという人には本記事の内容は関係ありません。本記事は「英数」と「かな」それぞれに別のキーを割り当てたい人に向けた内容となります。

左右コマンドキーに割り当てる

JIS配列のスペースバー左右の英数・かなキーから方式の移行としては、一番自然な方法かと思います。
この方法の気になる点としては、親指の折り曲げ角度が大きくてつらいことと、スペースバーの長さが通常と異なるキーボードを使った際に押し間違いが発生しやすいことがあげられます。
そして一番大きな問題は、切り替えと文字入力を速い速度で行った際にショートカットキーが誤発動してしまうことです。
ブラウザで検索キーワード入力中にcmd + sでページを保存しようとしたり、cmd + bでブックマーク保存されたり、ということが多発するという問題があります。

設定例:

{
  "description": "コマンドキーを単体で押したときに、英数・かなキーを送信する。(左コマンドキーは英数、右コマンドキーはかな) (rev 3)",
  "manipulators": [
    {
      "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_held_down": [
        {
          "key_code": "left_command"
        }
      ],
      "to_if_alone": [
        {
          "key_code": "japanese_eisuu"
        }
      ]
    },
    {
      "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_held_down": [
        {
          "key_code": "right_command"
        }
      ],
      "to_if_alone": [
        {
          "key_code": "japanese_kana"
        }
      ]
    }
  ]
}

特定キー単体・連打に割り当てる

私の場合左シフトキーに割り当ててみたのですが、左の小指だけ疲れました。また該当キーを連打することになり、そのキーだけ物理的にバカになってしまわないか不安になったのでやめました。

設定例:

{
  "title": "シフトキー単体で英数、2連打でかな",
  "rules": [
    {
      "description": "シフトキー単体で英数、2連打でかな",
      "manipulators": [
        {
          "type": "basic",
          "from": {
            "key_code": "left_shift"
          },
          "to": [
            {
              "set_variable": {
                "name": "left_shift_tapped",
                "value": 0
              }
            },
            {
              "key_code": "japanese_kana"
            }
          ],
          "conditions": [
            {
              "type": "variable_if",
              "name": "left_shift_tapped",
              "value": 1
            }
          ]
        },
        {
          "type": "basic",
          "from": {
            "key_code": "left_shift",
            "modifiers": {
              "optional": [
                "any"
              ]
            }
          },
          "parameters": {
            "basic.to_if_held_down_threshold_milliseconds": 10
          },
          "to": [
            {
              "set_variable": {
                "name": "left_shift_tapped",
                "value": 1
              }
            },
            {
              "key_code": "japanese_eisuu"
            }
          ],
          "to_if_held_down": [
            {
              "key_code": "left_shift"
            }
          ],
          "to_if_alone": [
            {
              "key_code": "japanese_eisuu"
            }
          ],
          "to_delayed_action": {
            "to_if_invoked": [
              {
                "set_variable": {
                  "name": "left_shift_tapped",
                  "value": 0
                }
              }
            ],
            "to_if_canceled": [
              {
                "set_variable": {
                  "name": "left_shift_tapped",
                  "value": 0
                }
              }
            ]
          },
          "conditions": [
            {
              "type": "variable_if",
              "name": "left_shift_tapped",
              "value": 0
            }
          ]
        }
      ]
    }
  ]
}

左右シフトキーに割り当てる

最終的にこの方法を採用しました。
これまで右シフトキーをあまり使う習慣がなかったので、右シフトキーを使うこと自体、個人的には新鮮な感覚でした。しばらくの間プライベートや仕事でこの方法を試してみましたが特に問題はありませんでした。
この方法の懸念点としては、コンパクトキーボード等の特殊レイアウトキーボードで右シフトキーの位置や大きさが標準規格と異なるキーボードだと使いづらい点かと思います。

<2024/01/11 追記>
この方法を続けたところ、手の筋を痛めてしまいました。
人間の腕の構造として、ホームポジションに手をおいたときに手首が八の字になるのが自然です。しかし、シフトキーを押す際に小指を下げる必要があるため手首を逆八の字に旋回させる必要があります。この動作を繰り返した結果手首から肘にかけての外側の筋肉に痛みを感じ始めました。
なのでこの方法もやめました。

設定例:

{
  "description": "シフトキーを単体で押したときに、英数・かなキーを送信する。(左シフトキーは英数、右シフトキーはかな)",
  "manipulators": [
    {
      "type": "basic",
      "from": {
        "key_code": "left_shift",
        "modifiers": {
          "optional": [
            "any"
          ]
        }
      },
      "parameters": {
        "basic.to_if_held_down_threshold_milliseconds": 100
      },
      "to": [
        {
          "key_code": "left_shift",
          "lazy": true
        }
      ],
      "to_if_held_down": [
        {
          "key_code": "left_shift"
        }
      ],
      "to_if_alone": [
        {
          "key_code": "japanese_eisuu"
        }
      ]
    },
    {
      "type": "basic",
      "from": {
        "key_code": "right_shift",
        "modifiers": {
          "optional": [
            "any"
          ]
        }
      },
      "parameters": {
        "basic.to_if_held_down_threshold_milliseconds": 100
      },
      "to": [
        {
          "key_code": "right_shift",
          "lazy": true
        }
      ],
      "to_if_held_down": [
        {
          "key_code": "right_shift"
        }
      ],
      "to_if_alone": [
        {
          "key_code": "japanese_kana"
        }
      ]
    }
  ]
}

コマンド+カンマ(,)/ピリオド(.)を割り当てる

シフトキー方法での打ちづらさと、コマンドキー単体を割り当てたときのショートカット誤爆問題を回避できる点がこの方法のメリットだと思います。
ただし、この方法も大きな問題があります。
コマンド+カンマ(,)はわりと多くのアプリケーションで設定呼び出しのショートカットとして使っており、重複してしまいます。
よってこの方法も断念しました。

設定例:

{
    "description": "Cmd+, で 英数 Cmd+. で 英数",
    "manipulators": [
        {
            "from": {
                "key_code": "comma",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "japanese_eisuu"
                }
            ],
            "type": "basic"
        },
        {
            "from": {
                "key_code": "period",
                "modifiers": {
                    "mandatory": [
                        "command"
                    ],
                    "optional": [
                        "any"
                    ]
                }
            },
            "to": [
                {
                    "key_code": "japanese_kana"
                }
            ],
            "type": "basic"
        }
    ]
}

まとめ

というわけで、「左右シフトキーに割り当てる」が個人的に最もおすすめの設定となります。
<2024/01/11 追記>
最終的に現段階では、「左右コマンドキーに割り当てる」を採用しています。ショートカット誤発動問題はあるものの消去法でこちらの方法に落ち着きました。。


Header photo by Pisit Heng on Unsplash

この記事が気に入ったらサポートをしてみませんか?