追記 (2023/1/6) :このあとまたさらに紆余曲折あり、結局現在では解決していないです…。「M1 Mac では致命的なバグがあった」とか「JIS 配列モデルだけ起きやすい」とか「トグル割り当てするキーの影響があったりなかったりする」とかなんか色々意味不明な法則っぽいものは見つかりつつも、結局 Mac 側の何かが安定していないゆえに挙動も理解できずただただ運に任せるという状況になっています…。これまで人生で遭遇した中で最もやっかいな問題です。
ということでこれは時間しか解決方法がないやつっぽいのでもう諦めることにしました。
そもそも記事の主題が誰にも理解されていないと思われますが、一応いまの状況を書いておくと、「2021 年モデルの M1 MacBook Pro (US 配列) だと発生しない」です。でも「トグルが高速で動いてしまっていまの状態に戻ってきてしまう」という別の悩ましい問題もあり、はあ~~~~~~~って感じです。
世界の誰かがこの記事に到達して同じ悩みを共有できたら超嬉しい。
追記 (2025/11/9) :現在では解決していることを思い出したので簡単にサマリーを書いておきます!
やったことは Karabiner-Elements でホストされている Complex Modifications を利用したというのがメインです。公開されているルール集がこのサイトで、そのなかのこのルールが日本語入力関連のもの。このうちどれかしらやりたいことに近いものがあると思うのでそれをベースにするといいと思います。自分は Mac の使用環境として JIS キーボード、US キーボード、外部キーボード接続時、と 3 パターンあるのでどれにでも対応できるようにちょっと手を加えている形跡がありました。細かいことは覚えていないのだけどなんでちゃんと記録に残しておかなかったのか…。
ただ、これ何度中身を見てもこれまで自分がずっと試していたものと変わりないんですよね…。マジで謎なんですが解決したのでよしとしています。
あまりにも大きいストレスだった問題を解決できた喜びがあまりにも大きいので記事に残します。
「もっと良い方法がある!」という方はぜひ本記事へのコメントという形でスレッドを残してほしいです!!
問題だったこと
Karabiner-Elementsを使ってMacの日本語入力ON/OFFを1つのキーでトグル切り替えしている場合、画面右上の "あ", "A" はちゃんと切り替わっているのに入力される文字には適用されていないという問題が多発するようになりました。

今は日本語入力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日本語入力を使っていることが問題に思えたというのが今回の解決法を思いついたきっかけでした。

「トグル切り替え後に少し待ってから入力を開始する」というので実際に成功するケースが多く、これはことえりを使うときだと起きる回数がかなり少なかったんですよね。
そこで同じ設定ファイルをことえり用で作ったりしていたのだけど解決せず、「クソくらえ」と思いながらごちゃまぜにしたらまさかの解決したというラッキー展開です。
本音を言えばGoogle日本語入力をIME:ONとして使いたいんだけどねー。
まあMacで日本語の文章を大量に入力することは僕は今のところないので(開発用)、現状はこれで問題ないという判断です。

Mac版のGoogle日本語入力ってちょっとUIも滲んでたりして満足感薄いしね…。
同様の問題で何かこの記事と違うことが起きたりなどした方は、ぜひご報告いただけると嬉しいです!
おわりに
ちなみに他に試したのは、
- 設定ファイル内で
toを配列で持たせて切り替えコマンドを3回分送る - トグルに使うキーを変更する
とかでした。いずれもダメだったけど。
また、Karabiner-Elementsを使わずに英数キーとかなキーを使って普段通り切り替える場合はもちろん正常に動きました。
Karabiner-Elementsには絶大な信頼感があるけど、Mac側から見ると何かしらは予想外のことが起きてるってことなんでしょうかね。
以上!!
全く同じ悩みで困ってました・・・!
私の場合はトグルではなく、かなキー(Lang1)と英数キー(Lang2)で変換していたのですが、いろいろ試した結果「切り替えコマンドを2回送る」という方式で発生率が激減しました。(まだ、稀に発生します。とくにサイドディスプレイを使っているときになりやすい・・・?)
ただMacだと「かなキー(Lang1)」を2回押すと「再変換」になるという仕様があるせいで別の問題が発生してしまうので、下記のように「space → Lang1 → backspace → space → Lang1 → backspace」とスペースで1文字ずらした後にLang1を送ってバックスペースで消すという動作で無理やり対処しています。
"to": [
{ "key_code": "spacebar" },
{
"key_code": "lang1",
"repeat": false
},
{ "key_code": "delete_or_backspace" },
{ "key_code": "spacebar" },
{
"key_code": "lang1",
"repeat": false
},
{ "key_code": "delete_or_backspace" }
この方式をトグルで再現するならば、「現在の状態が英数なら上記を実行し、現在の状態が日本語なら上記をLang2に変えたものを実行」という命令をトグルボタンに割り当てることで再現できるかなと思います。
とはいえこの方式も完全ではないので、もっと良い方法ないかなと思ってます・・・!
コメントありがとうございます!
なんとこの記事に同種の報告をいただける日が来るとは思いませんでした笑
数年経っており当時の状態の記憶があやふやなのですが、なんといまでは Mac によらず完璧に問題を解決できています。…が、それをこの記事に反映させるのを忘れていました!すみません…。
たしか「Karabiner-Elements が公式で用意しているコンフィグを適用したらなぜかうまくいった」という感じだった気がしています。近いうちにその内容を本記事にも軽くアップデートさせておきますね。
追記ありがとうございます!
公式コンフィグに変えて試したところ、なぜか全く症状が起きなくなりました。
"basic.to_if_held_down_threshold_milliseconds": 100
の部分以外はほぼ同じだったので、おそらくこの辺りに原因があるのかなと思いました。
(ちなみに100ではなく60に変えたら、頻度は減りましたがときどき発生しました)
不思議です・・・
おかげでこの症状に悩まされなくなりました。本当にありがとうございました!
おお、やはり公式のものにすると効果があるんですね…!
なるほどー、なんかチャタリング防止のためのしきい値みたいのが必要なんですかね。でも不思議なんですが、僕の設定ファイルにはその行すらないんですよww
お役に立ててなによりです!