Karabiner-Elements で日本語入力のトグル切り替えが正常動作しない問題を解決した!!

Karabiner-Elements で日本語入力のトグル切り替えが正常動作しない問題を解決した!!
みるみ

追記 (2023/1/6) :このあとまたさらに紆余曲折あり、結局現在では解決していないです…。「M1 Mac では致命的なバグがあった」とか「JIS 配列モデルだけ起きやすい」とか「トグル割り当てするキーの影響があったりなかったりする」とかなんか色々意味不明な法則っぽいものは見つかりつつも、結局 Mac 側の何かが安定していないゆえに挙動も理解できずただただ運に任せるという状況になっています…。これまで人生で遭遇した中で最もやっかいな問題です。

ということでこれは時間しか解決方法がないやつっぽいのでもう諦めることにしました。

そもそも記事の主題が誰にも理解されていないと思われますが、一応いまの状況を書いておくと、「2021 年モデルの M1 MacBook Pro (US 配列) だと発生しない」です。でも「トグルが高速で動いてしまっていまの状態に戻ってきてしまう」という別の悩ましい問題もあり、はあ~~~~~~~って感じです。

世界の誰かがこの記事に到達して同じ悩みを共有できたら超嬉しい。

あまりにも大きいストレスだった問題を解決できた喜びがあまりにも大きいので記事に残します。

「もっと良い方法がある!」という方はぜひ本記事へのコメントという形でスレッドを残してほしいです!!

問題だったこと

Karabiner-Elementsを使ってMacの日本語入力ON/OFFを1つのキーでトグル切り替えしている場合、画面右上の "あ", "A" はちゃんと切り替わっているのに入力される文字には適用されていないという問題が多発するようになりました。

mac-google-ime-1

今は日本語入力OFFのはずなのに日本語が入力されている、という状態。

Karabiner-Elementsの設定には問題がないので、これが起きたときは

  • だいたい3回くらい切り替えて正常に反応するまで試す
  • トグルの切り替えしたあとに少し時間を空けてから文字入力を始める

などとくだらない対処療法をするしか手がありませんでした。

原因は全くよく分かっていないのだけど、たぶんMacのせいです。Karabiner-Elementsのイベントビューアでも正常にトグル反応しているのは確認できるし、「OS担当範囲の画面上の表示と実際の動作がリンクしていない」という点から見てもMac側の問題と考えるのが自然かなーと思います。

というわけでこれがどれほどのストレスを産むかは言葉にするまでもなく、いつキーボードクラッシャーしてMacごとお釈迦になるかの瀬戸際だったわけです。

解決方法:IMEのON/OFFで入力ソースを変える

日本語入力のONとOFFを現在の状態で振り分けてインプットするわけですが、そのONとOFFをことえりとGoogle日本語入力で互い違いにすると解決しました。

設定ファイル的にはこう。

{
    "title": "",
    "rules": [{
        "description": "",
        "manipulators": [{
            "type": "basic",
            "from": {
                "key_code": "japanese_kana"
            },
            "to": [
                {
                    "select_input_source": {
                        "input_source_id": "^com\\.apple\\.inputmethod\\.Kotoeri.RomajiTyping.Japanese$"
                    }
                }
            ],
            "conditions": [{
                "type": "input_source_if",
                "input_sources": [{
                    "language": "en"
                }]
            }]
        },
        {
            "type": "basic",
            "from": {
                "key_code": "japanese_kana"
            },
            "to": {
                "select_input_source": {
                    "input_source_id": "^com\\.google\\.inputmethod\\.Japanese\\.Roman$"
                }
            },
            "conditions": [{
                "type": "input_source_if",
                "input_sources": [{
                    "language": "ja"
                }]
            }]
        }]
    }]
}

日本語入力ON側をGoogle日本語入力にするパターンでは解決しません。
…なんでやねん!!!!

この辺はおま環もあるかもなので他のマシンでもテストしてみたいところ。

 

一番最初この件に気が付いたとき、Google日本語入力を使っていることが問題に思えたというのが今回の解決法を思いついたきっかけでした。

mac-google-ime

「トグル切り替え後に少し待ってから入力を開始する」というので実際に成功するケースが多く、これはことえりを使うときだと起きる回数がかなり少なかったんですよね。

そこで同じ設定ファイルをことえり用で作ったりしていたのだけど解決せず、「クソくらえ」と思いながらごちゃまぜにしたらまさかの解決したというラッキー展開です。

本音を言えばGoogle日本語入力をIME:ONとして使いたいんだけどねー。

まあMacで日本語の文章を大量に入力することは僕は今のところないので(開発用)、現状はこれで問題ないという判断です。

みるみ
みるみ

Mac版のGoogle日本語入力ってちょっとUIも滲んでたりして満足感薄いしね…。

同様の問題で何かこの記事と違うことが起きたりなどした方は、ぜひご報告いただけると嬉しいです!

おわりに

ちなみに他に試したのは、

  • 設定ファイル内でtoを配列で持たせて切り替えコマンドを3回分送る
  • トグルに使うキーを変更する

とかでした。いずれもダメだったけど。

また、Karabiner-Elementsを使わずに英数キーとかなキーを使って普段通り切り替える場合はもちろん正常に動きました。

Karabiner-Elementsには絶大な信頼感があるけど、Mac側から見ると何かしらは予想外のことが起きてるってことなんでしょうかね。

以上!!

みるみ
みるみ

ブロガー、ソフトウェアエンジニア。

この「みるめも」というブログの筆者です。

この記事へのコメント
コメントはまだひとつもありません :)

新しいコメントを書く

  • 必須項目はコメント本文のみですが、お名前はぜひご記入いただけると嬉しいです。
    ※メールアドレスを書いた場合も公開されることはないのでご安心ください。
  • 特定のコメントに返信したい場合は各コメントにある「返信する」ボタンからどうぞ。
  • コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください。
    ※ここ数年スパムが激化しており、誤って削除されてしまうケースが増えてきました。スパムボックスも毎日自分の目で確認するようにはしているのですが、どうしても限界があります。確実に僕に連絡を取りたい方は メールTwitter からお願いします。