macOS Sonoma 14.8 環境で、親指シフトツールの Lacaille を使っていたら、「かな/英数」キーを素早く押したときに、たびたび入力状態が噛み合わなくなる現象があります。
具体的には、日本語入力(Google日本語入力)は有効になっているのに、Lacaille 側の親指シフトが有効にならない、という状態です。
macOS Sonoma 14.8
Google日本語入力
Lacaille 2.5

長らくパソコンの負荷やキーボードの反応が遅さが原因なのかなと諦めていましたが、先日 Ergodoxのファームウェアの修正でキー入力がスムーズになりました。
しかし、まだこの不具合があるため、原因を調べてみることにしました。
結論は、Lacaille 2.5.1にアップデートすることですが、入力と変換の処理について整理してみます。
1. 発生した現象の整理
普段どおり「英数」で英字入力をしていて、「かな」キーを押すと日本語入力に切り替わります。
このとき、本来であれば Lacaille の親指シフトも同時に有効になります。
しかし、キー操作を素早く行った場合に次のような状態になることがありました。


日本語入力にはなっているのに、親指シフトが効かない。
ローマ字入力のような挙動になります。
この状態で、もう一度「かな」キーを押しても直りません。
ところが、一度「英数」に戻し、少し間を置いてから改めて「かな」を押すと、今度は正常に親指シフトが有効になります。
1.1. 前提条件
Google日本語入力そのものが「かな/英数」を取りこぼすことはなく、入力ソースの切り替え自体は常に正しく行われていました。
最初は「Lacaille がキー入力に反応していないのでは?」と考えました。
しかし、現象をよく観察すると、少し違和感があります。
というのも「かな」を取りこぼしたあと、もう一度「かな」を押しても直らない。
もし単なるキーの取りこぼしであれば、再度同じキーを押せば復帰しそうです。
しかし実際には、必ず一度「英数」を経由しないと直らない。
2. 入力ソースとLacailleの関係を考える
ここで、「日本語入力が有効かどうか」と「Lacailleが有効かどうか」は、別の仕組みで管理されているのではないかと考えました。
Google日本語入力は、macOS が公式に提供している InputMethodKit という仕組みを使った、いわゆる IME(日本語変換エンジン)です。
一方、Lacaille は IME ではなく、キーボード入力そのものを横取りして変換するタイプのツールです。
そのため、Lacaille には「プライバシーとセキュリティ」の設定でアクセシビリティ権限を与えています。
2.1. 「変化イベント」に依存している可能性
すでに日本語入力になっている状態で「かな」を押しても、Lacaille は復帰しない。
一方、「英数 → かな」という入力ソースの変化が起きたときだけ、Lacaille は正しく同期します。
このことから、Lacaille は「今が日本語入力かどうか」という状態そのものを常に監視しているのではなく、「入力ソースが切り替わった」というイベントをきっかけに内部状態を更新している可能性が高いと考えました。
もし、切り替えイベントを取りこぼすと、Lacaille の内部状態だけが古いまま固定されてしまいます。
そして、状態が変わらない限り、再同期のきっかけを失います。
2.2. なぜ速い操作で起きやすいのか
macOS の入力ソース切り替えは、内部的には非同期で処理されています。
キー入力が発生し、入力ソースの切り替え要求が出され、実際に各アプリやツールに反映されるまでには、わずかな時間差があります。
Lacaille はアクセシビリティ権限を使い、低いレイヤーでキーイベントを処理しています。
そのため、入力ソースの切り替えが完全に反映される前に、次のキー入力を処理してしまうことがあります。
結果として、OS と IME の状態は正しいのに、Lacaille だけが取り残される、というズレが発生します。
2.3. Sonomaとの関係について
この種のズレは以前の macOS でも起こり得ましたが、Sonoma では入力まわりの実装やセキュリティの扱いが変わり、非同期性がより表に出やすくなった印象があります。
特に「かな/英数」キーは、通常の文字キーとは違い、状態変更と入力を同時に引き起こす特殊なキーです。
そのため、イベントフック型のツールにとっては、もっとも不安定になりやすいポイントだと言えます。
3. Lacaille 2.5.1 にアップデートした
Lacaille を 2.5.1 に入れ直したところ、この現象は少し減りました。




Lacaille バージョン 2.5.1 — Lacaille_2.5.1.dmg(2024.1.6)
Lacaille – 親指シフト for macOS
英字モードへの切り替え直後に単独打鍵の動作をしてしまう不具合を修正。
ちゃんと2024年の時点でアップデートがあったんですね。
もっと速く公式サイトを確認すればよかったです。
ただ、アップデート後もまだ同様の現象があります(減った気はしますが・・・)。