問題タブ [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 投票する
0 に答える
359 参照

macos - バックグラウンドアプリケーション用のCGAssociateMouseAndMouseCursorPosition

バックグラウンドでトラックパッドイベントを解釈するアプリケーションがあります(すべてのアプリ)。

特定の時間にマウスとカーソルの関連付けを解除できるようにしたいと思います。CGAssociateMouseAndMouseCursorPositionは、アプリがフォアグラウンドにある場合にのみ機能します。

これを達成する方法はありますか?

0 投票する
0 に答える
351 参照

macos - Magic マウス/トラックパッドのスクロール イベントを区別する

イベント タップ内 マジック マウスからのスクロール イベントと、トラックパッドからのスクロール イベントを区別する必要があります。

誰でもこの問題の解決策を持っていますか? CGEvent から生成デバイスの製品 ID を取得する方法はありますか? ここでIOkitは私を助けることができますか?

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

macos - アプリの実行中にキーボード入力の傍受を停止する-CGEventTap

CGEventTapを使用してキーボードイベントタップの監視を停止する正しい方法は何ですか?

特定のキーの出力を変換するシンプルなバックグラウンドアプリを構築しています。CGEventTapに関するこのすばらしい投稿のおかげで、キー変換を有効にすることができました。残念ながら、私はアプリを殺さずにそれを止めることができないようです。

ユーザーがチェックボックスを切り替えて機能をオンまたはオフにすると、次のメソッドが呼び出されます。トグルオンはすぐに発生します。トグルオフは、有効になるまでに1分以上かかる場合があります。ログを見ると、「無効。タップの変換を停止してください」と表示されます。が検出されました。しかし、キー変換は継続します。理由がわかりません。

提案をありがとう。私はMacOSXアプリを新しく構築しているので、知らないことをしている場合はご容赦ください。

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

macos - Key Down Event Mask が機能しないのに、Mask All が機能するのはなぜですか?

基本的なキーストローク コンバーター アプリを開発中です。変換は次のように機能します。

ご想像のとおりkCGEventMaskForAllEvents、キーボードに加えてマウスの動きやクリックに対して常に起動しており、システム リソースを占有していると思われます。を代用してみました。これは、イベント タイプに関する Quartz Event docCGEventMaskBit(kCGEventKeyDown)から最もよくわかるものであり、マウスの動きとクリックを除外します。残念ながら、これを使用すると、キーストロークを変換するのではなく、単に食べてしまうようです。

私は何を間違っていますか?

CGEventMaskBit(kCGEventKeyUp)以下は機能しますが、それ自体が正しい実装ではない理由はまだわかりません。

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

objective-c - CGEventTap (objective-c) でクリック リスナーからウィンドウ ID を取得する

ユーザーが行うすべてのマウスクリックをリッスンしようとしています。ユーザーがクリックしたウィンドウを知る必要があります (おそらく CGWindowID によって)。CGEventTap を介してすべてのクリックをリッスンしていますが、クリックされたウィンドウを取得する方法がわかりません。CGEventRef オブジェクトからウィンドウ ID を取得する方法を知っていますか?

さらに、[event windowNumber] を取得して [NSEvent addGlobalMonitorForEventsMatchingMask] を使用すると、ウィンドウ ID を取得できることはわかっていますが、このリスナーを使用することはできません。自分の窓。誰かが知っているかもしれませんが、これはどこから来ているのでしょうか?

ありがとう!

ペドロ

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

objective-c - ココアイベントタップ

OS XでQuartz Event Services、特にイベントタップを使用して、ストリップされたキーボードPCBに配線されたパッシブ赤外線センサーによって生成されたシミュレートされたキープレスをキャプチャしようとしています。理論的には、イベントタップを使用すると、キーの押下を飲み込んで無視し、キーボード入力を使用してコンピューターを「起動」することができます。また、イベント タップ (1 つの「キー」のみが配線されているため、モーション ディテクターは常に「0」を送信します) を使用して、入力を任意のキーまたはキーの組み合わせに変更し、ホスト マシンで任意の機能を呼び出すこともできます。 . さらに複雑なことに、エンド ホスト マシンは古い G4 Powerbook (PPC) であり、OS X 10.4 以降は実際には何も実行できません。また、現在の開発マシンは、10.9 を実行し、Xcode 5.1 を使用する、はるかに新しい Intel ベースの iMac です。 1.

ここの回答から次のコードを見つけました、そしてそれは完璧なようです。Cocoa で端末アプリケーションを作成すれば、基本的にコードをそのまま使用できます。また、セキュリティ/プライバシー設定でコンピューターを「制御」できるアクセシビリティ アプリのリストにアプリケーションを追加するために必要な場合に備えて、ウィンドウ ベースの Cocoa アプリケーションを作成してみました (Mavericks では補助デバイスのアクセスを有効にすることは推奨されていません)。どちらの種類のアプリも完全には機能しませんでした。私が達成できた最善の方法は、プログラムに修飾キー (コマンド、オプション、シフト、ctl など) のキー押下を認識させることですが、「通常の」キーボードキーのキー押下からは何の応答も得られません。キャプチャされたキーイベントを実際に変更することはできないようです。さらに、マウスイベント、具体的にはマウスクリックのようですが、

これは、Xcode 5 の規則に準拠するように調整された、元のコードのわずかに変更されたバージョンです。ご覧のとおり、重い作業は元の main() ではなく applicationDidFinishLaunching メソッドにあります。明らかに、AppDelegate.h ファイルでメソッド宣言を作成する必要がありましたが、これも元のコードの一部ではありません。

現時点では、10.4 互換性へのバックポートを試みる前に、概念実証として 10.9 で何かを動作させようとしています。長い投稿で申し訳ありません。ここで初めて助けを求め、徹底的にしようとしています。事前にすべての応答に感謝します!

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

macos - OSX で特定のウィンドウからイベントを傍受する方法

次のワークフローが必要です。

  • ユーザーがホットキーまたはステータス バーのメニュー ボタンを押す
  • ユーザーがウィンドウをクリックする
  • ウィンドウがアプリに「登録」されました
  • アプリは、登録されているすべてのウィンドウからマウス イベントをインターセプトします。

私は CGEvents、CGEventTaps、NSEvents について多くのことを読みました。CGEvents と CGEventTaps を使用してグローバル イベントをインターセプトし、新しいイベントを投稿できますが、NSEvent には windowNumber のようなウィンドウ情報はなく、PSD のみです (そして、それらの使用方法がわかりません)。登録されたウィンドウ。一方、NSEvent ではグローバル イベントを傍受できず、localMonitor を介したローカル イベントのみを傍受できます。

どうすれば目的の機能を実現できますか?