これにはかなりの数のピースがあります。あなたがすでに知っている/経験したこと、それにどれだけの時間と持続性を投資したいか、そしてもちろん、ハードウェア自体のぎこちなさによって、それだけの価値があるかどうかが決まります...
ハードウェア インターフェイスのタイプを決定します。USB HID デバイスである可能性が最も高いですが、そうでない場合は、デバイスが送信するメッセージを何らかの方法で HID レポートに変換する必要があるため、より多くの作業が必要になります。見つける最も簡単な方法は、Apple の開発者 Web サイトまたはオープン ソースの IOJones からハードウェア IO ツールをダウンロードし、サービス ツリーでデバイスを探すことです。USB バスに接続されていることがわかりますが、重要な問題は、どのドライバーが既に一致しているかということです。IOHID* は良い兆候です。IOHIDPointing はさらに良い兆候です。デフォルトの構成が唯一のものではない可能性があることに注意してください。また、複数のデバイス構成がある場合、デフォルトの構成はおそらく最も完全な機能を備えたものではないことに注意してください。(これでベルが鳴らない場合は、USB デバイスの構成を読んでください。)
HID デバイスとして報告されない場合は、そのハードウェア インターフェイスを詳細に把握する必要があります。オープン ソースの Linux または BSD ドライバーがある場合は、おそらくそのソースから作業して、OSX 用の IOKit kext に変換できます。簡単ではありませんが、これが初めてのドライバーである場合、これにはかなりの時間がかかると予想してください。最初にユーザー空間の USB ドライバーを作成してみて、受け取ったメッセージに満足したら、それをカーネルに移植することをお勧めします。OSS ドライバーがない場合は、Windows ドライバーをリバース エンジニアリングします。最も簡単な方法は、VM に Windows をインストールし、USB デバイスを VM に渡し、そこにドライバーをロードして、ホスト マシン上のすべての USB トラフィックをログに記録することです。次に、それが何を意味するのかを丹念に調べます。メッセージを解決したら、それらを HID レポートに変換する必要がある場合があります。どのようにフォーマットされているかをOSに伝えるレポート記述子と一緒に。HID デバイスとして OS に公開する必要があります。詳細については IOHIDFamily のソースを確認し、マウスなどを作業参照として使用してください。
HID記述子を取得したら、問題はOSXがそれらをそのまま解釈できるかどうかです。デバイスがすでに HID として表示されている場合は、OSX がレポート記述子をポインティング デバイスとして正しく解釈していないか、結果のレポートを理解できません。レポート記述子を変更するか、記述子とすべてのレポートの両方を OSX にとって意味のあるものに変更する必要があります。おそらく最善の方法は、同様のデバイス (Apple 独自のトラックパッドなど) のレポート記述子を調べて、デバイスを同様の形式に変えてみることです。もう 1 つの便利な手法は、IOHIDFamily ソースをトレースして、どこで問題が発生しているかを調べることです。OSX の HID レポート記述子 (レポートではない) を変更して意味を理解するドライバーの例を次に示します。https://github.com/pmj/QemuUSBTablet-OSX/blob/master/QemuUSBTablet/PJQemuUSBTabletDriver.cpp
この種の経験のレベルにもよりますが、最初はあまり意味をなさないものがかなりあるでしょう。USB、HID、xnu カーネル、kext の開発などについて詳しく読んでいない場合は、これらのトピックをよく読んでください。プラスの面としては、これはおそらく着手するのが最も難しいドライバー プロジェクトではありません。幸運を!