Karabiner-elementsでFor Japanese(日本語環境向けの設定)を使うとCommandキー組み合わせのショートカットが効かなくなる問題解決した

タイトルが長い。

MojaveにアップデートしてKarabiner-Elementsを入れてから困っていた。例えばブラウザでリンクを新規タブで開きたいナーっていうときに自分はCommand+クリックでやっていたけど、そういうCommand+[some]な組み合わせのショートカットが一切効かなくなっていたからだ。

状況下

USキーボードで日/英キーボード入力の切り替えをCommandキー単体押しでできるように

このcomplex_modificationsを入れている。けどどうやらこれが原因っぽい。無効化するとCommand+[some]なショートカットが効くようになる.

f:id:hitonatsu:20181021154739p:plain

Parameterの値をいじったりしたけどうまく直らなくて困っていた。

解決

結局の所ドキュメントめっちゃ読んでたらLazyの指定が怪しそうということでここの指定を変えたら直った。

Karabiner-elementsの設定はデフォルトではMacでは~/.config/karabiner/karabiner.jsonにある。このjsonのForJapaneseオブジェクトの"to"オブジェクトのなかの"lazy"の指定をfalseに変える。

"rules": [
                    {
                        "description": "コマンドキー(左右どちらでも)を単体で押したときに、英数・かなをトグルで切り替える。",
                        "manipulators": [
                            {
                                "conditions": [
                                    {
                                        "input_sources": [
                                            {
                                                "language": "ja"
                                            }
                                        ],
                                        "type": "input_source_if"
                                    }
                                ],
                                "from": {
                                    "key_code": "left_command",
                                    "modifiers": {
                                        "optional": [
                                            "any"
                                        ]
                                    }
                                },
                                "to": [
                                    {
                                        "key_code": "left_command",
                                        "lazy": false // ← これ
                                    }
                                ],
                                "to_if_alone": [
                                    {
                                        "key_code": "japanese_eisuu"
                                    }
                                ],
                                "type": "basic"
                            }
.
.
.

ForJapaneseオブジェクトのなかでlazy指定いくつかあるはずで、該当するものをfalseにする。全部書くとjson長いので上のは省略している。

助かった

結構Command系のショートカットが効かない場面がきつくて苦しんでいたけど、解決してよかった…。

本件の問題をなんてググればいいのかわからないというのもあって解決策がぱっと出てこなかった。そういう意味ではこのブログも検索に引っかかってこないかもしれない。