問題タブ [cgeventtap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1769 参照

objective-c - CGEvent NSKeyDown は、アプリが一番前にある場合にのみ機能しますか?

いくつかのタスクを自動化しようとしています (applescript のサポートはありません) ので、CGEvents を使用してこれらのイベントを投稿する必要があります。マウスのクリックは正常に機能しますが、NSKeyDown (入力) は、ドックでアプリをクリックした場合にのみ機能します (これにより、ほとんどのアプリが前面に表示されます)。これまでのコードは次のとおりです。

ループ内に posteventtopsn がある理由は、テスト目的のためです (一度だけ送信する必要があります)。プログラムがループしている間に、アプリを一番前にアクティブにすると、イベントは正常に機能します。

私は何を間違っていますか?バックグラウンドで動作する方法はありますか?ありがとう。

0 投票する
1 に答える
1276 参照

objective-c - バックグラウンド アプリへの CGEvents キーストロークの送信

次のようなバックグラウンド アプリにエンター キーを送信しようとしています。

機能していません。キーストロークを受け取るには、アプリが最前面にある必要があるためだと思いますか? 私は正しいですか?もしそうなら、最初にアプリをアクティブにせずにこのイベントを送信できる方法はありますか? そうでない場合、私は何が間違っていますか?ありがとう。

0 投票する
1 に答える
1860 参照

macos - CGEventCreateKeyboardEvent および CGEventTapLocation

カスタム キーボード イベントを処理するのに苦労しています。command、alt、ctrl、shift などの kCGEventFlagMasks の有無にかかわらず、任意のキーを送信できるようにしたい...

たとえば、現在の最前面のアプリを送信したい場合、フォント ウィンドウを表示する必要があるキー コンボ cmd+t の TextEdit であると仮定します。

ただし、現在、TextEdit の現在のドキュメントに追加されるのは t だけです。カスタム セット CGEventFlags を使用してイベントを投稿し、代わりに t イベントの周りに cmd の keyDown イベントと keyUp イベントを生成しようとしました。無料アプリのキー コードは、CGEventFlags セットを使用すると、cmd + t が押されたことを示していますが、このキーの組み合わせは TextEdit に渡されず、単一の t...

これが私のコードです:

}

また、CGEventTapLocation の意味を理解するのに苦労しています。どのイベント タップが自分のタスクに最も適しているかわかりません。Quartz Event Reference の説明は私を啓発しません:

そのトピックに関する多くの投稿を見てきましたが、どれも私の問題を解決するのに役立ちませんでした...助けてくれてありがとう!

0 投票する
1 に答える
164 参照

objective-c - イベントタップでの内部または外部デバイスの検出

Macアプリでイベントタップを使用して、キーの押下とマウスの動きを検出しています。次のステップでは、内部キーボード/トラックパッドと外部キーボード/マウス/トラックパッドを区別したいと思います。誰かがこれを行う方法を知っていますか?

0 投票する
1 に答える
208 参照

cocoa - NPAPI プラグインでの CGEventTaps の処理

Macbook でメディア キーをリッスンし、それを javascript に渡して、パンドラやサウンドクラウドなどを制御する NPAPI プラグインを作成しようとしています。別のスレッドで実行されている CGEventTap をラップするだけの Spotify の SPMediaKeyTap ライブラリを使用しています。

私の問題は、npn_invoke を使用して javascript にコールバックすることです。これは正常に機能しますが、CGEventTap コールバックからトリガーされると、プラグインがクラッシュします。これはプラグインスレッドから実行する必要があることを認識しており、[NSObject performSelectorOnMainThread] と [NSObject performSelector:onThread] の両方を使用してメインスレッドに戻そうとしました。プラグイン スレッドの create メソッド。これらのソリューションは両方とも、npn 呼び出しで引き続きクラッシュします。NPN ブラウザー インタラクション呼び出しに対して状態を無効にする CGEventTap イベントを処理するときに他に何かありますか?

0 投票する
1 に答える
641 参照

objective-c - セグメンテーション違反11| CGEventTapアプリケーションは、任意の時間が経過するとマウスイベントの処理を停止します。

このアプリケーションの目的は、24時間年中無休でバックグラウンドで実行し、画面の中央でマウスをロックすることです。これは、一連のフラッシュプログラムを使用して、マウスのジョイスティックスタイルの動きをシミュレートするためのものです。これを達成するために、Cocoa / Quartzに組み込まれている他のメソッドを使用しようとしましたが、いずれも私の目的には使用できなかったため、これを実行する必要があります。

私は、一見ランダムな時間の後に、このプログラムが単にマウスの制限を停止する理由を理解しようとしてきました。プログラムはエラーなどを出さず、動作を停止します。強制終了画面には「応答していません」と表示されますが、これを含む私のマウス変更スクリプトの多くは、常に「応答していません」と表示され、機能し続けます。

コードは次のとおりです。


最終更新

ケントーマスは私に正しい答えをくれました、私は彼の提案に基づいて私のコードを更新しました。これが私が完璧に動作するようになった最終的なコードです(これは手動で停止する前に問題なく12時間以上実行されました):


(最初の)更新:

プログラムはまだクラッシュしていますが、実行可能ファイルとして実行し、エラーコードを受け取りました。

終了すると、コンソールは「Segmentation Fault:11」をログに記録します。

私はこれが何を意味するのかを発見しようと努めてきましたが、それは非常に広い用語のようであり、私はまだ何か有用なものに焦点を合わせていません。

これが私が使用している新しいコードです:

0 投票する
1 に答える
496 参照

objective-c - イベントタップで一部のアプリケーションでバックスペースボタンをシミュレートできません

Mac OS でいくつかのキーの押下をシミュレートしようとしています。このコードは、'h' キーが押された場合 (たとえば、ユーザーが 'tigh' と入力すると 'ti' になる)、キーボード イベントを変更することにより、前の 1 文字を削除することになっています。ただし、一部のアプリケーションでのみ機能します。他の人は私のイベントを完全に拒否します。このコードに問題はありますか?

0 投票する
2 に答える
725 参照

objective-c - 一部のアプリケーションでは、CGEventPostがバックスペース文字で機能しません

(この質問は、現在のイベントを変更する代わりに、CGEventPostを使用してより多くのキーストロークをシミュレートしていることを除いて、最近ここに投稿した質問と似ています)

以下のコードは、「h」ボタンが押されるたびに「a」文字を挿入することができ、すべてのアプリケーションで正常に機能しました。

'a'をバックスペース文字に置き換えると、一部のアプリケーション(Mac上のMicrosoft Excelなど)はそれを認識しなくなります。理由はわかりますか?

0 投票する
1 に答える
169 参照

objective-c - グローバル アプリケーション監視 macos/cocoa/objective-c

アプリケーションでアクションが実行されたことを監視する方法はありますか? たとえば、ユーザーが Safari で新しい TAB を開きます。私はこれらの行動を監視しようとしています。このような動作を認識できるクラスを探しています!!

ヒントやアイデアはありますか?

ありがとう

トーゴ

0 投票する
1 に答える
325 参照

macos - Mountain Lion ログイン ウィンドウの CGEvent が失敗する

キーの押下とマウスのイベントをキャッチするために CGEvent タップを使用するアプリがあります。

例.. CGEventTapCreate(kCGHIDEventTap, kCGTailAppendEventTap, 1, eventMask, keyUp, @"mydata");

また、イベントを生成します。このアプリ ( PrivilegedHelperTool ) がログイン前の起動エージェント (ログイン ウィンドウ) として実行されている場合を除いて、すべて正常に動作します。アプリは正常に表示されますが、すべてのタップが null を返し、生成されたイベントが機能しません。ログイン前の状態で「kCGHIDEventTap」以外に何かありますか?

IOKit を使用してマウスの動きをキャッチする (動作する) まで行ってきましたが、キーを押すと、この IOKit は廃止されたようで、ほとんどの提案では CGEvent Equivalents を使用するように言われています。