8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

YUMEMI Advent CalendarAdvent Calendar 2021

Day 1

Macbook US 配列キーボードの Caps Lock と US 配列 HHKB の Control キーで同じ英数・かな IME 切り替えを実現したい

Last updated at Posted at 2021-12-01

この記事は、ゆめみ Advent Calendar 2021 の1日目の記事です。本当は Firestore で何か書きたかったんですが、何もネタが思いつかなかったのでストックを消費することにしました。

Macbook と HHKB (どちらも US 配列) のキーボードで、同じ IME 切り替え体験を実現するための Karabiner-Elements 設定方法です。

TL; DR

達成したい要件

  • CapsLock としての機能は使わない
  • Control キーの単押しで英数・かなの IME 切り替えをしたい
  • Control キー + 他のキー入力の際は、 IME 切り替えをしない

設定手順

Complex modification rules を書く

以下の JSON を ~/.config/karabiner/assets/complex_modifications/ 配下に適当なファイル名で作る

~/.config/karabiner/assets/complex_modifications/left_control_toggle_ime.json
{
  "title": "Left Control キーを単体で押したときに、英数・かなをトグルで切り替える",
  "rules": [
    {
      "description": "Left Control キーを単体で押したときに、英数・かなをトグルで切り替える",
      "manipulators": [
        {
          "type": "basic",
          "conditions": [
            {
              "input_sources": [
                {
                  "language": "ja"
                }
              ],
              "type": "input_source_if"
            }
          ],
          "from": {
            "key_code": "left_control",
            "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": "japanese_eisuu"
            }
          ]
        },
        {
          "type": "basic",
          "conditions": [
            {
              "input_sources": [
                {
                  "language": "en"
                }
              ],
              "type": "input_source_if"
            }
          ],
          "from": {
            "key_code": "left_control",
            "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": "japanese_kana"
            }
          ]
        }
      ]
    }
  ]
}

Complex modifications rule をプロファイルに追加

  1. Karabiner-Elements Preferences を開く
  2. Complex modifications タブを開く
  3. 左下の Add rule をクリック
  4. 先ほど書いた Rules が見れるので、 Enable を押す

image.png

Simple modifications で CapsLock を Control に上書き

Macbook のビルトインキーボードの CapsLock を Control として認識させつつ、単押しで英数・かな IME 切り替えをするなら必須です

image.png

キーボード設定の修飾キーカスタマイズだけでは、 CapsLock → Control はできても、それを英数・かな IME 変換にはできませんでした

image.png

動機

Macbook を使い始めてしばらく、ビルトインキーボード(US配列)だけでタイピングしていました。
英数・かな IME 切り替えは、 CapsLock 切り替えを使っていました。1

image.png
こういうやつ

HHKB 導入

そのうち、据え置き時は HHKB(US配列)を使うようになりましたが、ここで問題発生。
HHKB は CapsLock のところに Control があるんですよね。

「Control を英数・かな IME 切り替えに使いたいな〜」
「でも Controlは他のキーと組み合わせたバインドでも使うしなあ」
「外出時に Macbook 単体で使うこともあるから、ビルトインキーボードと同じようなタイピングができる設定に揃えられるといいなあ」

救世主、公式 Complex modification rules

そんな悩みでモヤモヤしながら、公式 Complex modifications を見てみると、日本語向けで良さそうなのを見つけました。

image.png

「なるほど、修飾キーを単体で押して機能させることってほぼないから、これを IME 切り替えにあてるのはアリだ」
「CapsLock で切り替えてたときと同じ体験にできる」
「オプションキーやコマンドキー単体の英数・かなトグルはあるけど、なぜか Control だけはない」
「無いなら自分で作るか」

で、今に至る

参考

コマンドキー(左右どちらでも)を単体で押したときに、英数・かなをトグルで切り替える。 (rev 2) を参考にました。
こういう感じで、 left_commandleft_control に置き換えていくだけの単純なお仕事です。

  "to": [
    {
-     "key_code": "left_command",
+     "key_code": "left_control",
      "lazy": true
    }
  ],
  "to_if_held_down": [
    {
-     "key_code": "left_command",
+     "key_code": "left_control",
    }
  ],
  "to_if_alone": [
    {
      "key_code": "japanese_eisuu"
    }
  ]

需要があれば、すぐインポートできるよう、個人のリポジトリで Publish したり、あるいは本家に Pull Request でも送ってみようと思います。

どうでもいい話

一年以上あたためてしまった

image.png

  1. Ctrl-Space は、 IDE の補完とかぶるので避けたかった

8
3
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
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?