問題タブ [iokit]
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.
objective-c - IOKitIOPowerSourcesのトラブル
IOPowerSourcesとそれに伴うドキュメントを使用するのに非常に苦労しています。
私の問題は、まあ、IOPowerSourcesのとんでもないインポートを理解できないということです。私はから読んでいます:
必要な輸入品は今ここにあります、そしてそれは私をバタバタさせています。IOPowerSourcesの使用を開始するために、インポートするものを教えてもらえますか?ありがとう :)
objective-c - ObjectiveCのコールバックに失敗しました
通知ハンドラーを投稿するコードがあります
そして、このコールバックハンドラー
しかし、私のコールバック関数は呼び出されません。USBフラッシュドライブでこれを試しましたが、成功しませんでした。私はどこが間違っていますか?
cocoa - OSXでの高解像度と高フレームレートのマウス座標? (または他の解決策?)
OSX で高解像度、高フレームレートでマウスの動きを取得したいと考えています。
「高フレームレート」 = 60 fps 以上 (できれば > 120)
「高解像度」 = サブピクセル値
問題
ほぼモニターのリフレッシュ レートで実行されている opengl ビューを持っているので、約 60 fps です。マウスを使って周りを見回すので、マウス カーソルを非表示にし、マウスのデルタ値に依存しています。
問題は、マウス イベントが非常に低いフレームレートで発生し、値が整数 (ピクセル全体) にスナップされることです。これにより、「途切れ途切れ」の表示エクスペリエンスが発生します。以下は、時間の経過に伴うマウス デルタ値の視覚化です。
これは、ユーザーがマウスを少し右に動かして作成した典型的な (短縮された) 曲線です。各 x は各フレームの deltaX 値を表し、deltaX 値は整数に丸められるため、このグラフは実際には非常に正確です。ご覧のとおり、deltaX の値はあるフレームでは 0.000 になり、次のフレームでは 1.000 になりますが、その後再び 0.000 になり、次に 2.000、次に再び 0.000、次に 3.000、0.000 などになります。
これは、ビューが 1 フレームで 2.000 単位回転し、次のフレームで 0.000 単位回転し、さらに 3.000 単位回転することを意味します。これは、マウスがほぼ一定の速度でドラッグされているときに発生します。言うまでもなく、これはがらくたのように見えます。
では、どうすれば 1) マウスのイベント フレームレートを上げることができますか? 2) サブピクセル値を取得しますか?
これまで
のところ、次のことを試しました。
なるほど、これは一目瞭然でした。dx
ここでは float ですが、値は常に丸められます (0.000、1.000 など)。これにより、上のグラフが作成されます。
したがって、次のステップは、マウス イベントが WindowServer に入る前にタップすることだと思いました。だから私は CGEventTrap を作成しました:
n.000
イベントの発火率は少し高いと思いますが、それでも値はです。しかし、それはまだ60 fpsではありません。私はまだ上のチャートを取得します。
また、マウスの感度を非常に高く設定してから、値を縮小してみました。しかし、OSX はある種のアクセラレーションか何かを追加しているようです。値は本当に「不安定」になり、結果として使用できなくなり、発射速度は依然として低すぎます。
運が悪かったので、うさぎの穴を下ってマウス イベントを追跡し始め、IOKit にたどり着きました。これは私にとって恐ろしいことです。マッドハッターです。Apple のドキュメンテーションは奇妙になり、「あなたがこれほど深いところにいるなら、本当に必要なのはヘッダファイルだけだ」と言っているようです。
だから私はヘッダーファイルを読んでいます。で、面白いネタを見つけました。
<IOKit/hidsystem/IOLLEvent.h>
377 行目には、次の構造体があります。
ほら、サブピクセル位置と書いてあります!Ok。次に、73行目で<IOKit/hidsystem/IOLLParameter.h>
うーん。
全体として、OSXはサブピクセルのマウス座標を深く知っているように感じます.フレームごとに生のマウスの動きを読み取る方法が必要ですが、それらの値を取得する方法がわかりません.
質問
ええと、私は何を求めていますか?
- OSXで高フレームレートのマウスイベントを取得する方法はありますか? (サンプルコード?)
- OSXでサブピクセルのマウス座標を取得する方法はありますか? (サンプルコード?)
- フレームごとに「生の」マウスデルタを読み取る方法はありますか? (つまり、イベントに依存しません。)
- または、どのように NXEvents を取得したり、HIDParameters を設定したりできますか? サンプルコード?(だから私は自分でこれをもっと深く掘り下げることができます...)
(長文すみません)
objective-c - Objective-C の C コールバック (IOKIT)
Objective C で USB デバイスとやり取りするコードを書き込もうとしていますが、着信レポートのコールバック関数の設定に行き詰まりました。私の場合、それは IOKIT 関数ですが、Objective-C で C コールバック関数を正しく設定する方法が (明らかに) わからないため、問題はより一般的だと思います。io関数を処理するクラス「USBController」があります
USBController.m:
すべての関数もヘッダー ファイルで宣言されます。
ここで見つけたものとほとんど同じことをしたと思いますが、うまくいきません。プロジェクトは適切にコンパイルされ、入力があり、コールバック関数が呼び出される瞬間まですべてが機能します。次に、「EXC_BAD_ACCESS」エラーが発生します。関数の最初の 3 つの引数は正しいです。コンテキストについてはよくわかりません..何が間違っていましたか?
c++ - 別のkextによって定義されたメソッドをオーバーライドしますか?
kextによって定義されたメソッドをオーバーライドして、独自の処理を実行し、独自の値を返す必要があるため、kextがメソッドを呼び出すたびに、メソッドは自分のメソッドにルーティングされます。ですから、私がやりたいのは、このメソッドを自分のカーネル拡張で定義してからロードすることです。問題は、メソッドを交換する方法がわからないため、代わりに私のものが呼び出されることです。
これを行う簡単な方法はありますか?すべてのカーネル拡張が同じアドレス空間で実行されるため、 VTableを介してそれを行う方法があることを私は知っています(それが唯一の方法だと思いますが、それを行う方法がわかりません)。
xcode - Mac Snow Leopard の USBPrivateDataSample
USB を抜き差しするたびに通知を受け、アクセスできるアプリケーションを作成する必要があります。まず、例として USBPrivateDataSample アプリケーションを使用しようとしました。
Snow Leopard では 10.4 がサポートされていないため、コンパイルするために SDK を 10.6 に変更しました。プログラムはコンパイルされ、正常に実行されますが、USB が接続されているときに呼び出し/イベントを受信しません。つまり、関数 DeviceAdded は呼び出されません。
とにかく、このプログラムは Snow で動作するはずですか? 古いように見えますが、一部の呼び出しが非推奨になっている可能性がありますか?
USB デバイスの通知を受け取る別の方法を提案できますか?
ありがとう!
macos - IOHIDManager を使用して修飾キー イベントを取得する
Cocoa flagsChanged イベントがないため、IOHIDManager を使用して修飾キー イベントを取得しようとしています (両方がダウンしている場合は、プレス/リリース、左/右を区別するのが難しいなど)。これは、マネージャーを作成してコールバックを登録するコードです。 .
ただし、コールバックは実行されません。何か不足していますか?
HID の使用ページがよくわからないので、汎用デスクトップ ページ (0x01) をキーボード使用 ID (06) で使用するか、キーボード/キーパッド ページ (0x07) を使用 ID で個別に使用するかがわかりませんでした。キー。ひょっとしたら、それと関係があるのでしょうか?
macos - コードレスkextの読み込みの問題
USBデバイスの1つがAppleUSBUHCIドライバーに誘拐されないように、コードレスkextを作成しました。プラグを差し込むと、別のドライバーがロードされているはずです。これは、FTDIデバイスとCSRデバイスの両方で発生します。
kextをまとめると、info.plistは次の例によく似ています:http ://www.projectosx.com/forum/index.php?showtopic = 798 VID/PIDが異なるだけです。-entZを指定してkextutilを実行しましたが、唯一の警告は、パーソナリティに異なるCFBundleIdがあることでした。MacのUSB(HID)割り込みエンドポイントの読み取りと書き込みの手順に従って、ロードしました。
kextをロードすると、正常にロードされたと表示されますが、kextstatで表示できず、デバイスを接続してもハイジャックされます。kextunloadを実行しようとすると、kextがロードされていないと表示されます。
どんな助けでもいただければ幸いです。
macos - IOUSBDeviceInterface245 を介して、サスペンドされた USB デバイスに関する情報を収集します。
IOUSBDeviceInterface245
(Mac OS X の IOKit から) 情報 (製品名など) を取得しようとしています:
コード #1
このコードは、現在動作中のすべてのデバイスでうまく機能しますが、サスペンド (「スリープ」)
デバイスでは機能しません (product_name
は単なる空白文字列です)。
しかし、このコードを使用すると:
コード #2
それはすべてのデバイスでまったく機能しています(理由はわかりません)。
このコードでサスペンドされたデバイスをウェイクアップしようとしました(コード#1を使用):
しかし何も変わっていません。
私が気づいたことの 1 つ - コード #1 は、文字列値 (文字列のインデックスによって取得される) を除いて、スリープ状態のデバイスのすべてのプロパティに対して完全に機能しています。
更新:
それで、私の質問は、最初のコード ブロックで使用するためにデバイスの一時停止を解除するにはどうすればよいですか?
ありがとうございました。
objective-c - プログラムで Mac バックライト キーボードを暗くする方法
Mac でバックライト付きキーボードをプログラムで暗くする方法はありますか?