0

カーソルを制御する macOS アプリを開発しています。私は CGEvent Tap を使用しており、最終的なマウス位置をオフセットするために CGEvents に演算を追加しています。アプリは原則として期待どおりに動作しますが、場合によっては、より具体的には、特定の一般的なイラスト ソフトウェアでスタイラス ペンを使用してアプリを実行すると、元の場所でマウスの「ゴースト」位置がちらつくことがあります。良いことに、root ユーザーとしてログインしてアプリを実行すると、この問題を解決できます。私はかなりの数のSO投稿を読みましたが、この特定の投稿が問題に最もよく対処しています:

https://stackoverflow.com/a/9899901/5066660

この投稿で説明されているように、問題はおそらく次のとおりです。

残念ながら、CGEventTapCreate() ドキュメントには次のように記載されています。root ユーザーとして実行されているプロセスのみが、HID イベントがウィンドウ サーバーに入るポイントでイベント タップを見つけることができます。他のユーザーの場合、この関数は NULL を返します。

タップが有効であるため、関数は間違いなく null を返しません。また、その関数の引数の可能なすべての組み合わせを試しましたが、すべて同じように動作します。その投稿のさらに下では、次のように問題に取り組むことが提案されています。

おそらく、この機能をスーパーユーザー権限を持つ別のプロセスに分割して、アプリの残りの部分を通常のユーザーモードのままにすることができますか? プログラムが実行する特定のアクションに対してのみルート権限を要求する方法もあると思います。

これが可能な解決策である場合、私はそれを実装したいと思います! だから私の質問は:どのように?CGEventTap などの CoreGraphics コードだけでなく、昇格されたアクセス許可でスクリプトを実行することに遭遇しました。これは可能ですか?これがどのように達成されるか、または問題に対する他の解決策の例を誰か教えてもらえますか?

すべての助けを歓迎します、どうもありがとうございました。

4

1 に答える 1