我現在已經有這樣的老遊戲手柄了一段時間,在GameStop的高級控制器(它實際上是從一個叫DragonRise INC。公司的大規模生產的通用設備之一。),其配備了隆隆聲/觸覺功能。不幸的是,它不適用於OSX。我認爲這將是一個很好的項目,可以更全面地瞭解OSX和USB HID設備上的驅動程序開發。現在,除了觸覺/力反饋的東西外,遊戲手柄本身還可以用作標準HID設備。我的目標是爲遊戲手柄編寫一個簡單的ForceFeedback插件。OSX ForceFeedback驅動
什麼我迄今所做的,是創建從IOUSBHIDDevice繼承了一個非常簡單的由於IOKit驅動,基本上讓超類做最繁重的工作的;我的推理是,它現在工作正常,我只想添加功能。所以這種工作,我現在的問題是,驅動程序正在被添加爲註冊表中設備的新界面。它是匹配的,但沒有使用。理想情況下,我想完全替換通用IOUSBHIDDevice類作爲該特定遊戲板的IOClass,但我不知道如何。
在另一方面,也許我會對此錯誤的方式,我並不需要創建一個新的驅動程序添加ForceFeedback插件是手柄;這只是我閱讀文檔後提出的解決方案。
這裏的Info.plist的(重要部件反正)我有我的駕駛項目:
<key>IOKitPersonalities</key>
<dict>
<key>IODragonRiseGenericUSB</key>
<dict>
<key>IOMatchCategory</key>
<string>name_npp_driver_IODragonRiseGenericUSB</string>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>IOKitDebug</key>
<integer>65535</integer>
<key>IOClass</key>
<string>name_npp_driver_IODragonRiseGenericUSB</string>
<key>CFBundleIdentifier</key>
<string>name.npp.driver.${PRODUCT_NAME:rfc1034identifier}</string>
<key>IOCFPlugInTypes</key>
<dict>
<key>F4545CE5-BF5B-11D6-A4BB-0003933E3E3E</key>
<string>IODragonRiseGenericUSB.kext/Contents/PlugIns/ForceFeedback.plugin</string>
</dict>
<key>idProduct</key>
<integer>6</integer>
<key>idVendor</key>
<integer>121</integer>
<key>HIDDefaultBehavior</key>
<string></string>
<key>bInterfaceClass</key>
<integer>3</integer>
<key>bInterfaceProtocol</key>
<integer>1</integer>
<key>bInterfaceSubClass</key>
<integer>1</integer>
</dict>
</dict>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2013 npepinpe. All rights reserved.</string>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOHIDFamily</key>
<string>1.7.1</string>
<key>com.apple.iokit.IOUSBFamily</key>
<string>5.1</string>
<key>com.apple.iokit.IOUSBHIDDriver</key>
<string>5.0</string>
<key>com.apple.kpi.iokit</key>
<string>11.4.2</string>
<key>com.apple.kpi.libkern</key>
<string>11.4.2</string>
</dict>
一些需要注意的,我試圖改變的IOProviderClass到的UsbInterface(作爲IOUSBHIDDevice一樣),但後來我設備根本不匹配,所以我不知道我在那裏做錯了什麼。
所以我的問題是,我該如何替換默認IOUSBHIDDriver這是對我和我的自定義驅動程序特定的手柄是否匹配?或者,如果我只是想添加一個ForceFeedback插件(但不需要改變任何其他行爲),那是不是正確的方法?
你的問題到底在哪裏? – marko
對不起,我想這個問題並不完全清楚。我已經編輯過了,希望這樣會更好。 – npepinpe