プログラミング
MacBook Neoのカーソル遅延を「修正」:10秒ごとに画面の1ピクセルを録画する
"Fix" MacBook Neo Cursor Lag: Record 1 Pixel of the Screen Every 10 Seconds (gist.github.com)
要約
本記事は、MacBook Neo(macOS Tahoe 26.5.1)で発生するカーソル遅延問題に対する「暫定的な修正策」を提案しています。遅延はハードウェアカーソルからソフトウェアカーソルへの切り替え時に発生すると推測されており、解決策として10秒ごとに画面の1ピクセルを記録する(実質的に/dev/nullへ)ことで、常にソフトウェアカーソルを使用させ、遅延を解消します。この簡単なスクリプトによって、ユーザーは問題を軽減できます。
全文翻訳
MacBook Neo(macOS Tahoe 26.5.1を使用)のカーソルは、画面の端付近やターミナルウィンドウに入ると遅延します。[1][2][3][4][5] [詳細情報と背景はこちらをクリック]
なぜ遅延するのでしょうか?私にはわかりません。しかし、遅延が発生する瞬間、システムはハードウェアカーソルからソフトウェアカーソルに切り替わります(CGCursorIsDrawnInFramebuffer()が0から1に変わります)。おそらく、MacBook Neoではその切り替えが何らかの形で滞っているのかもしれません。おそらく画面の端ではマウスの半分がレンダリングされ、ターミナルでは他のグラフィック処理が行われているため、macOSがそこでソフトウェアカーソルを使用したいと考えているのかもしれませんが、詳細は不明です。何らかの理由で、画面がロック解除されてから約17秒後にのみハードウェアカーソルが使用されます。それ以前は遅延はありません。
適切な修正策としては、遅延を直接修正するか(Appleがそうしてくれることを期待します)、または常にソフトウェアカーソルの使用を強制することが中間ステップとして役立つかもしれません。ソフトウェアカーソルを直接強制するには、WindowServerをリバースエンジニアリングする手もありますが、それはSIPをオフにするなどの作業を伴う可能性があります。あるいはそうでないかもしれません。そして、ハードウェア/ソフトウェアカーソルは単なる相関関係にすぎないのかもしれません。Macがロック解除されてから約17秒後に何が起こるかを見ることもできます。
今のところの別の妥当な「修正策」として、macOSのカラーフィルター(例:青/黄フィルター)を低い設定でオンにすることもできますが、これは色が少し変わり、ナイトシフトが同時にオンになっていると効果がないようです。また、マウスポインタのサイズを変更することもできます。しかし、色とカーソルを良好な状態に保つには、画面録画を行うこともできます。ただし、画面録画を行うと、画面の右上部にインジケーター()が表示されます。SIPをオフにすれば無効にできるかもしれませんが、私は調べていません。本質的に、コンポジター(?)にソフトウェアカーソル(またはその他何でも)を強制させることで、遅延はなくなります。
別のアイデアとして、ターミナルウィンドウに特有の点を見つけ出し、同じことを行うアプリを作成し、そのウィンドウをすべてのウィンドウの上にオーバーレイさせることも考えられます。とにかく、私は画面録画を選びました。
現在の私のお気に入りの「修正策」:画面録画
私にとって、画面録画ソリューションは最も煩わしくないものです。インジケーター()は十分に小さく、全画面ビデオを再生しているとき(インジケーターが邪魔になる場合)には画面録画をオフにすることができます。もちろん、このような修正策はそのインジケーターの目的を無効にすることになりますが、インジケーターには2種類あると思います。より大きなものもあり、(私の考えでは)App Storeアプリが持っているものなので、私たちは大丈夫だと思います。カーソルは遅延しなくなります。CPU/GPUもそれほど必要ありません:10秒ごとに1ピクセルを記録します(基本的に/dev/nullに、SSDへの書き込みはありません)。
やり方:このGistにスクリプト(create_unlag_neo_app.sh)があります。このスクリプトは、起動できる.appを作成します(開発者アカウントやXcodeなどは不要です)。スクリプトは次のように使用できます(ターミナル):
chmod +x create_unlag_neo_app.sh
./create_unlag_neo_app.sh # -> "Unlag Neo.app"が作成されます
スクリプトが作成したアプリ:Unlag Neo.appをどこかに置きます。/Applicationsなどです。実行し、必要な権限を付与します。メニューバー()でオフにしたり、「フルスクリーンで一時停止」機能を試したりすることもできます。これはインジケーターを非表示にするのにまずまずの仕事をしてくれると思います。私はVLC、YouTube、いくつかのアプリで試しました。
[[デバッグ情報はこちらをクリック]]
デバッグ
create_unlag_neo_app.shをハックしてアプリを複数回再構築したい場合、macOSの権限設定UIがリセットされたり、少し奇妙な動作をしたりすることがあります。「Unlag Neo」をスクリプト内で別の名前に変更するか、アプリのアイコンを権限設定に手動でドラッグするか、「~/Library/Preferences/Unlag Neo.plist」を削除するか、`killall cfprefsd`を実行するか、あるいはXcodeを使用してみてください。