4623:011ein Multitouch-Monitor

Bei der Arbeit haben wir einen Multitouch-Monitor, der anscheinend ein USB Human Interface Device (HID) ist . Es identifiziert sich selbst als Produkt 0x011a des Herstellers 0x4623, das offenbar von der Beijing Honghe Technology Group hergestellt wird , aber unter der Marke Newline geführt wird . Es funktioniert sofort unter Linux (anscheinend mit einem generischen HID-Multitouch-Treiber), aber nicht unter OS X. system_profilerbeschreibt es so:

o HHTTOUCH@14110000  <class IOUSBHostDevice, id 0x100008953, registered, matched, active, busy 0 (731 ms), retain 30>
| {
|   "USBPortType" = 0x0
|   "sessionID" = 0x180f680965f78
|   "USB Vendor Name" = "HongHeTouch"
|   "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
|   "IOPowerManagement" = {"PowerOverrideOn"=Yes,"CapabilityFlags"=0x8000,"MaxPowerState"=0x2,"DevicePowerState"=0x2,"ChildrenPowerState"=0x1,"DriverPowerState"=0x0,"CurrentPowerState"=0x2}
|   "USBSpeed" = 0x1
|   "idProduct" = 0x11a
|   "bcdDevice" = 0x100
|   "kUSBVendorString" = "HongHeTouch"
|   "locationID" = 0x14110000
|   "USB Product Name" = "HHTTOUCH"
|   "IOGeneralInterest" = "IOCommand is not serializable"
|   "kUSBCurrentConfiguration" = 0x1
|   "IOClassNameOverride" = "IOUSBDevice"
|   "bDeviceSubClass" = 0x0
|   "idVendor" = 0x4623
|   "AppleUSBAlternateServiceRegistryID" = 0x100008955
|   "bDeviceProtocol" = 0x0
|   "bDeviceClass" = 0x0
| }
| 
+-o AppleUSBHostLegacyClient  <class AppleUSBHostLegacyClient, id 0x100008956, !registered, !matched, active, busy 0, retain 8>
|   {…}
|   
+-o AppleUSBHostCompositeDevice  <class AppleUSBHostCompositeDevice, id 0x10000897f, !registered, !matched, active, busy 0, retain 4>
|   {…}
|   
+-o IOUSBHostInterface@0  <class IOUSBHostInterface, id 0x100008980, registered, matched, active, busy 0 (411 ms), retain 11>
| | {
| |   "USBPortType" = 0x0
| |   "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| |   "bcdDevice" = 0x100
| |   "USBSpeed" = 0x1
| |   "idProduct" = 0x11a
| |   "bConfigurationValue" = 0x1
| |   "bInterfaceSubClass" = 0x0
| |   "locationID" = 0x14110000
| |   "IOGeneralInterest" = "IOCommand is not serializable"
| |   "IOClassNameOverride" = "IOUSBInterface"
| |   "AppleUSBAlternateServiceRegistryID" = 0x100008982
| |   "idVendor" = 0x4623
| |   "bInterfaceProtocol" = 0x0
| |   "bAlternateSetting" = 0x0
| |   "bInterfaceNumber" = 0x0
| |   "bInterfaceClass" = 0x3
| | }
| | 
| +-o IOUSBHostHIDDevice@14110000,0  <class IOUSBHostHIDDevice, id 0x100008989, registered, matched, active, busy 0 (13 ms), retain 10>
|   | {
|   |   "IOClass" = "IOUSBHostHIDDevice"
|   |   "Transport" = "USB"
|   |   "BootProtocol" = 0x0
|   |   "IOPersonalityPublisher" = "com.apple.driver.usb.IOUSBHostHIDDeviceSafeBoot"
|   |   "HIDDefaultBehavior" = ""
|   |   "MaxInputReportSize" = 0x40
|   |   "IOProviderClass" = "IOUSBHostInterface"
|   |   "Manufacturer" = "HongHeTouch"
|   |   "Product" = "HHTTOUCH"
|   |   "DeviceUsagePairs" = ({"DeviceUsagePage"=0xd,"DeviceUsage"=0x4},{"DeviceUsagePage"=0xd,"DeviceUsage"=0xe},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x2},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x1},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x6},{"DeviceUsagePage"=0xff00,"DeviceUsage"=0x0})
|   |   "IOProbeScore" = 0xc350
|   |   "MaxOutputReportSize" = 0x10
|   |   "ReportDescriptor" = <05…00$
|   |   "IOUserClientClass" = "IOHIDLibUserClient"
|   |   "bInterfaceSubClass" = 0x0
|   |   "bInterfaceClass" = 0x3
|   |   "IOCFPlugInTypes" = {"7DDEECA8-A7B4-11DA-8A0E-0014519758EF"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin","FA12FA38-6F1A-11D4-BA0C-0005028F18D5"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin"}
|   |   "CountryCode" = 0x0
|   |   "VendorID" = 0x4623
|   |   "VersionNumber" = 0x100
|   |   "IOMatchCategory" = "IODefaultMatchCategory"
|   |   "CFBundleIdentifier" = "com.apple.driver.usb.IOUSBHostHIDDevice"
|   |   "PrimaryUsage" = 0x4
|   |   "LocationID" = 0x14110000
|   |   "ProductID" = 0x11a
|   |   "Elements" = ({"ReportID"=0x0,"ElementCookie"=0x1,"CollectionType"=0x1,"Type"=0x201,"Elements"=({"ReportID"=0x0,"ElementCookie"=0x2,"CollectionType"=0x2,"Type"=0x201,"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0xd,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x2,"Size"=0x1,"Flags"=0x2,"ReportID"=0x1,"Usage"=0x42,"ReportCount"=0x1,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=Yes,"ReportSize"=0x1,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0x1,"ElementCookie"=0x12},{"UnitExponent"=0$
|   |   "IOGeneralInterest" = "IOCommand is not serializable"
|   |   "PrimaryUsagePage" = 0xd
|   |   "ReportInterval" = 0x1f40
|   |   "MaxFeatureReportSize" = 0x3
|   |   "InputReportElements" = ({"ReportID"=0x1,"ElementCookie"=0x19b,"Size"=0x1f0,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x1f0,"Usage"=0x0},{"ReportID"=0x2,"ElementCookie"=0x19c,"Size"=0x8,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x8,"Usage"=0x0},{"ReportID"=0x3,"ElementCookie"=0x19d,"Size"=0x8,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x8,"Usage"=0x0},{"ReportID"=0x4,"ElementCookie"=0x19e,"Size"=0x30,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x30,"Us$
|   | }
|   | 
|   +-o IOHIDInterface  <class IOHIDInterface, id 0x10000898f, registered, matched, active, busy 0 (12 ms), retain 7>
|   | | {
|   | |   "VendorID" = 0x4623
|   | |   "CountryCode" = 0x0
|   | |   "Product" = "HHTTOUCH"
|   | |   "VersionNumber" = 0x100
|   | |   "PrimaryUsage" = 0x4
|   | |   "LocationID" = 0x14110000
|   | |   "BootProtocol" = 0x0
|   | |   "ProductID" = 0x11a
|   | |   "DeviceUsagePairs" = ({"DeviceUsagePage"=0xd,"DeviceUsage"=0x4},{"DeviceUsagePage"=0xd,"DeviceUsage"=0xe},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x2},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x1},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x6},{"DeviceUsagePage"=0xff00,"DeviceUsage"=0x0})
|   | |   "Transport" = "USB"
|   | |   "ReportInterval" = 0x1f40
|   | |   "HIDDefaultBehavior" = ""
|   | |   "PrimaryUsagePage" = 0xd
|   | |   "Manufacturer" = "HongHeTouch"
|   | | }
|   | | 
|   | +-o IOHIDEventDriver  <class IOHIDEventDriver, id 0x100008992, registered, matched, active, busy 0 (1 ms), retain 10>
|   |   | {
|   |   |   "IOClass" = "IOHIDEventDriver"
|   |   |   "MultiAxisPointer" = {"Elements"=(),"AxisCapabilities"=0x0}
|   |   |   "Scroll" = {"Elements"=()}
|   |   |   "BootProtocol" = 0x0
|   |   |   "Digitizer" = {"Transducers"=({"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0xd,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x2,"Size"=0x1,"Flags"=0x2,"ReportID"=0x1,"Usage"=0x42,"ReportCount"=0x1,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=Yes,"ReportSize"=0x1,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0x1,"ElementCookie"=0x12},{"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0xd,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x2,"Size"=0x1,"Flags"=0x2,"ReportID"=0x1,"Usage"=0x32,"$
|   |   |   "Keyboard" = {"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0x7,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x2,"Size"=0x1,"Flags"=0x2,"ReportID"=0x5,"Usage"=0xe0,"ReportCount"=0x1,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=Yes,"ReportSize"=0x1,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0x1,"ElementCookie"=0x33},{"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0x7,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x2,"Size"=0x1,"Flags"=0x2,"ReportID"=0x5,"Usage"=0xe1,"ReportCount"=0x1,$
|   |   |   "IOPersonalityPublisher" = "com.apple.iokit.IOHIDEventDriver"
|   |   |   "Transport" = "USB"
|   |   |   "HIDDefaultBehavior" = ""
|   |   |   "Manufacturer" = "HongHeTouch"
|   |   |   "IOProviderClass" = "IOHIDInterface"
|   |   |   "GameControllerType" = 0x0
|   |   |   "Product" = "HHTTOUCH"
|   |   |   "DisplayIntegrated" = Yes
|   |   |   "DeviceUsagePairs" = ({"DeviceUsagePage"=0xd,"DeviceUsage"=0x4},{"DeviceUsagePage"=0xd,"DeviceUsage"=0xe},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x2},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x1},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x6},{"DeviceUsagePage"=0xff00,"DeviceUsage"=0x0})
|   |   |   "IOProbeScore" = 0x4b0
|   |   |   "VendorIDSource" = 0x0
|   |   |   "HIDPointerResolution" = 0x1900000
|   |   |   "RelativePointer" = {"Elements"=()}
|   |   |   "VendorID" = 0x4623
|   |   |   "VersionNumber" = 0x100
|   |   |   "CountryCode" = 0x0
|   |   |   "IOMatchCategory" = "IODefaultMatchCategory"
|   |   |   "CFBundleIdentifier" = "com.apple.iokit.IOHIDFamily"
|   |   |   "LED" = {"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0x8,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x81,"Size"=0x1,"Flags"=0x2,"ReportID"=0x5,"Usage"=0x1,"ReportCount"=0x1,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=Yes,"ReportSize"=0x1,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0x1,"ElementCookie"=0x122},{"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0x8,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x81,"Size"=0x1,"Flags"=0x2,"ReportID"=0x5,"Usage"=0x2,"ReportCount"=0x1,"Uni$
|   |   |   "HIDEventServiceProperties" = {"HIDSubinterfaceID"=0x28,"HIDKeyboardModifierMappingPairs"=()}
|   |   |   "LocationID" = 0x14110000
|   |   |   "ProductID" = 0x11a
|   |   |   "ReportInterval" = 0x1f40
|   |   |   "SupportsInk" = 0x1
|   |   |   "GameControllerPointer" = {"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0x8,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x81,"Size"=0x1,"Flags"=0x2,"ReportID"=0x5,"Usage"=0x1,"ReportCount"=0x1,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=Yes,"ReportSize"=0x1,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0x1,"ElementCookie"=0x122},{"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0x8,"Max"=0x1,"IsArray"=No,"Min"=0x0,"Type"=0x81,"Size"=0x1,"Flags"=0x2,"ReportID"=0x5,"Usage"=0x2,"Rep$
|   |   | }
|   |   | 
|   |   +-o IOHIDPointing  <class IOHIDPointing, id 0x100008994, registered, matched, active, busy 0 (1 ms), retain 9>
|   |   | | {
|   |   | |   "HIDScrollAccelerationType" = "HIDMouseScrollAcceleration"
|   |   | |   "HIDVirtualDevice" = No
|   |   | |   "Transport" = "USB"
|   |   | |   "HIDDeviceEventID" = 0x8994
|   |   | |   "Product" = "HHTTOUCH"
|   |   | |   "Manufacturer" = "HongHeTouch"
|   |   | |   "HIDPointerButtonCount" = 0xd
|   |   | |   "DeviceUsagePairs" = ({"DeviceUsagePage"=0xd,"DeviceUsage"=0x4},{"DeviceUsagePage"=0xd,"DeviceUsage"=0xe},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x2},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x1},{"DeviceUsagePage"=0x1,"DeviceUsage"=0x6},{"DeviceUsagePage"=0xff00,"DeviceUsage"=0x0})
|   |   | |   "HIDPointerResolution" = 0x1900000
|   |   | |   "VendorIDSource" = 0x0
|   |   | |   "alt_sender_id" = 0x100008992
|   |   | |   "HIDPointerConvertAbsolute" = <00>
|   |   | |   "CountryCode" = 0x0
|   |   | |   "VendorID" = 0x4623
|   |   | |   "VersionNumber" = 0x100
|   |   | |   "HIDSubinterfaceID" = 0x0
|   |   | |   "HIDResetPointer" = Yes
|   |   | |   "HIDInterfaceID" = 0x0
|   |   | |   "HIDPointerContactToMove" = <00>
|   |   | |   "LocationID" = 0x14110000
|   |   | |   "ProductID" = 0x11a
|   |   | |   "HIDKind" = 0x2
|   |   | |   "HIDPointerAccelerationType" = "HIDMouseAcceleration"
|   |   | |   "ReportInterval" = 0x1f40
|   |   | |   "HIDScrollAccelCurvesDebug" = ("no scroll resolution for type","no scroll resolution for type","no scroll resolution for type")
|   |   | | }
|   |   | | 
|   |   | +-o IOHIDSystem  <class IOHIDSystem, id 0x100000313, registered, matched, active, busy 0 (0 ms), retain 20>
|   |   |   | {…}
|   |   |   | 
|   |   |   +-o IOHIDUserClient  <class IOHIDUserClient, id 0x100000446, !registered, !matched, active, busy 0, retain 5>
|   |   |   |   {…}
|   |   |   |   
|   |   |   +-o IOHIDParamUserClient  <class IOHIDParamUserClient, id 0x10000044b, !registered, !matched, active, busy 0, retain 5>
|   |   |       {…}
|   |   |       
|   |   +-o IOHIDKeyboard  <class IOHIDKeyboard, id 0x100008995, registered, matched, active, busy 0 (0 ms), retain 9>
|   |   | | {…}
|   |   | | 
|   |   | +-o IOHIDSystem  <class IOHIDSystem, id 0x100000313, registered, matched, active, busy 0 (0 ms), retain 20>
|   |   |   | {…}
|   |   |   | 
|   |   |   +-o IOHIDUserClient  <class IOHIDUserClient, id 0x100000446, !registered, !matched, active, busy 0, retain 5>
|   |   |   |   {…}
|   |   |   |   
|   |   |   +-o IOHIDParamUserClient  <class IOHIDParamUserClient, id 0x10000044b, !registered, !matched, active, busy 0, retain 5>
|   |   |       {…}
|   |   |       
|   |   +-o IOHIDSystem  <class IOHIDSystem, id 0x100000313, registered, matched, active, busy 0 (0 ms), retain 19>
|   |     | {…}
|   |     | 
|   |     +-o IOHIDUserClient  <class IOHIDUserClient, id 0x100000446, !registered, !matched, active, busy 0, retain 5>
|   |     |   {…}
|   |     |   
|   |     +-o IOHIDParamUserClient  <class IOHIDParamUserClient, id 0x10000044b, !registered, !matched, active, busy 0, retain 5>
|   |         {…}
|   |         
|   +-o IOHIDLibUserClient  <class IOHIDLibUserClient, id 0x100008990, !registered, !matched, active, busy 0, retain 6>
|   |   {…}
|   |   
|   +-o IOHIDLibUserClient  <class IOHIDLibUserClient, id 0x100008991, !registered, !matched, active, busy 0, retain 6>
|       {…}
|       
+-o IOUSBHostInterface@1  <class IOUSBHostInterface, id 0x100008981, registered, matched, active, busy 0 (280 ms), retain 11>
  | {
  |   "USBPortType" = 0x0
  |   "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
  |   "bcdDevice" = 0x100
  |   "USBSpeed" = 0x1
  |   "idProduct" = 0x11a
  |   "bConfigurationValue" = 0x1
  |   "bInterfaceSubClass" = 0x0
  |   "locationID" = 0x14110000
  |   "IOGeneralInterest" = "IOCommand is not serializable"
  |   "IOClassNameOverride" = "IOUSBInterface"
  |   "AppleUSBAlternateServiceRegistryID" = 0x100008984
  |   "idVendor" = 0x4623
  |   "bInterfaceProtocol" = 0x0
  |   "bAlternateSetting" = 0x0
  |   "bInterfaceNumber" = 0x1
  |   "bInterfaceClass" = 0x3
  | }
  | 
  +-o IOUSBHostHIDDevice@14110000,1  <class IOUSBHostHIDDevice, id 0x100008988, registered, matched, active, busy 0 (4 ms), retain 10>
    | {
    |   "IOClass" = "IOUSBHostHIDDevice"
    |   "Transport" = "USB"
    |   "BootProtocol" = 0x0
    |   "IOPersonalityPublisher" = "com.apple.driver.usb.IOUSBHostHIDDeviceSafeBoot"
    |   "HIDDefaultBehavior" = ""
    |   "MaxInputReportSize" = 0x40
    |   "IOProviderClass" = "IOUSBHostInterface"
    |   "Manufacturer" = "HongHeTouch"
    |   "Product" = "HHTTOUCH"
    |   "DeviceUsagePairs" = ({"DeviceUsagePage"=0xff00,"DeviceUsage"=0x1})
    |   "IOProbeScore" = 0xc350
    |   "MaxOutputReportSize" = 0x40
    |   "ReportDescriptor" = <06…c0>
    |   "IOUserClientClass" = "IOHIDLibUserClient"
    |   "bInterfaceSubClass" = 0x0
    |   "bInterfaceClass" = 0x3
    |   "IOCFPlugInTypes" = {"7DDEECA8-A7B4-11DA-8A0E-0014519758EF"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin","FA12FA38-6F1A-11D4-BA0C-0005028F18D5"="IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin"}
    |   "CountryCode" = 0x21
    |   "VendorID" = 0x4623
    |   "VersionNumber" = 0x100
    |   "IOMatchCategory" = "IODefaultMatchCategory"
    |   "CFBundleIdentifier" = "com.apple.driver.usb.IOUSBHostHIDDevice"
    |   "PrimaryUsage" = 0x1
    |   "LocationID" = 0x14110000
    |   "ProductID" = 0x11a
    |   "Elements" = ({"ReportID"=0x0,"ElementCookie"=0x1,"CollectionType"=0x1,"Type"=0x201,"Elements"=({"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0xff00,"Max"=0xff,"IsArray"=No,"Min"=0x0,"Type"=0x1,"Size"=0x8,"Flags"=0x2,"ReportID"=0x1,"Usage"=0x1,"ReportCount"=0x1,"Unit"=0x0,"HasNullState"=No,"IsNonLinear"=No,"HasPreferredState"=Yes,"ReportSize"=0x8,"ScaledMin"=0x0,"IsWrapping"=No,"ScaledMax"=0xff,"ElementCookie"=0x2},{"UnitExponent"=0x0,"IsRelative"=No,"UsagePage"=0xff00,"Max"=0xff,"IsArray"=No,"Min"=0x0,"Type"=$
    |   "IOGeneralInterest" = "IOCommand is not serializable"
    |   "PrimaryUsagePage" = 0xff00
    |   "ReportInterval" = 0x1f40
    |   "MaxFeatureReportSize" = 0x1
    |   "InputReportElements" = ({"ReportID"=0x1,"ElementCookie"=0x2c4,"Size"=0x200,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x200,"Usage"=0x0},{"ReportID"=0x2,"ElementCookie"=0x2c5,"Size"=0x200,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x200,"Usage"=0x0},{"ReportID"=0x3,"ElementCookie"=0x2c6,"Size"=0x200,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"=0x200,"Usage"=0x0},{"ReportID"=0x4,"ElementCookie"=0x2c7,"Size"=0x200,"ReportCount"=0x1,"Type"=0x1,"UsagePage"=0x0,"ReportSize"$
    | }
    | 
    +-o IOHIDInterface  <class IOHIDInterface, id 0x10000898b, registered, matched, active, busy 0 (4 ms), retain 6>
    |   {
    |     "VendorID" = 0x4623
    |     "CountryCode" = 0x21
    |     "Product" = "HHTTOUCH"
    |     "VersionNumber" = 0x100
    |     "PrimaryUsage" = 0x1
    |     "LocationID" = 0x14110000
    |     "BootProtocol" = 0x0
    |     "ProductID" = 0x11a
    |     "DeviceUsagePairs" = ({"DeviceUsagePage"=0xff00,"DeviceUsage"=0x1})
    |     "Transport" = "USB"
    |     "ReportInterval" = 0x1f40
    |     "HIDDefaultBehavior" = ""
    |     "PrimaryUsagePage" = 0xff00
    |     "Manufacturer" = "HongHeTouch"
    |   }
    |   
    +-o IOHIDLibUserClient  <class IOHIDLibUserClient, id 0x10000898c, !registered, !matched, active, busy 0, retain 6>
    |   {
    |     "IOUserClientCreator" = "pid 94, loginwindow"
    |   }
    |   
    +-o IOHIDLibUserClient  <class IOHIDLibUserClient, id 0x10000898d, !registered, !matched, active, busy 0, retain 6>
        {
          "IOUserClientCreator" = "pid 274, UserEventAgent"
        }

Das Gerät dient als Kombination aus Tastatur (mit PgUpund PgDnüber Fernbedienung) und Multitouch-Eingabegerät. Der Tastaturaspekt funktioniert gut genug: OS X meldet die Tastatur als unbekannten Typ und fordert Sie auf, eine bestimmte Umschalttaste zu drücken. Da ich keine Umschalttaste habe, drücke ich eine dieser Seitenbewegungstasten und kann dann manuell einen Tastaturtyp auswählen. Danach kann ich mit den Tasten in Anwendungen blättern.

Die Touch-Eingabe scheint jedoch ohne Funktion zu sein. Das Gerät wird als IOHIDPointingund Digitizerim obigen Bericht gemeldet, es scheint also ein gewisses Verständnis darüber zu geben, um welche Art von Gerät es sich handelt. Trotzdem sehe ich nicht, dass es meinen Mauszeiger steuert.

  • Muss ich dieses Gerät irgendwie aktivieren, um zu sagen, dass die Multi-Touch-Ereignisse von dieser Quelle meinen Mauszeiger steuern sollen?
  • Muss ich zusätzliche Treiber laden, damit HID-Multitouch-Ereignisse meinen Zeiger steuern?
  • Gibt es ein Tool (Befehlszeile oder grafisch, das mit OS X oder einem Drittanbieter geliefert wird), mit dem ich debuggen kann, welche Ereignisse das Gerät generiert? Vorzugsweise auf verschiedenen Ebenen, wie HID, Touch, Pointer oder was auch immer die eigentliche Architektur ist?

Bearbeiten: Ich habe den Apple-Fehlerbericht 25216130 dazu geöffnet.

Ich habe einige Rückmeldungen von Apple erhalten: Sie haben nach sudo sysdiagnoseAusgabe gefragt und dann nach sudo dtrace -n 'fbt::*HIDPointing*:entry'Ausgabe. Letzteres ist (fast) leer, also habe ich ihnen die Ausgabe einiger breiterer HID-bezogener dtraceMuster gegeben, wie fbt:com.apple.iokit.IOHIDFamily::entry. Seitdem keine Antwort, letzter Beitrag 31. März. Ich warte und hoffe.

Antworten (1)

Es gibt einen Fehler im Apple USB-Stack, der verhindert, dass einige USB-Verbundgeräte funktionieren. Ich habe eine Apple TSI und einen Fehlerbericht dazu geöffnet, und mir wurde eine Problemumgehung gegeben, die das Problem für mich behebt. Die Problemumgehung ist einfach ein codeloser kext , wobei diese Persönlichkeit dem Wörterbuch von IOKitPersonalities hinzugefügt wird:

    <key>Display Workaround</key>
    <dict>
        <key>CFBundleIdentifier</key>
        <string>com.apple.driver.AppleUSBHostMergeProperties</string>
        <key>IOClass</key>
        <string>AppleUSBHostMergeProperties</string>
        <key>IOProviderClass</key>
        <string>IOUSBHostDevice</string>
        <key>IOProviderMergeProperties</key>
        <dict>
            <key>kUSBRemoteWakeOverride</key>
            <false/>
        </dict>
        <key>idVendor</key>
        <integer>17955</integer>
        <key>idProduct</key>
        <integer>282</integer>
    </dict>

(Ich habe Ihre VID/PID oben hinzugefügt).

Eine zukünftige OS X-Version wird dies (hoffentlich) beheben.

Bitte beachten Sie, dass der Codeless-Kext auf /Library/Extensions platziert und signiert werden muss.

Dass „kext signiert sein muss“ ist hier eine große Hürde, da ich nicht bereit bin, nur dafür für die ADP-Anmeldung zu bezahlen, und seit apple.stackexchange.com/q/174146/25135 und stackoverflow.com/q/26723321/1468366 Klingt so, als wären selbstsignierte Zertifikate keine Option für Kexts. Ich habe es getan sudo nvram boot-args='kext-dev-mode=1'und neu gestartet, aber anscheinend wird der Kext immer noch nicht geladen. Siehe gist.github.com/gagern/6d98868c75f009d641aa für meine Plist und meine Diagnoseversuche. Irgendwelche Ideen?
Ich habe einen Beitrag gefunden , der besagt, dass er kext-dev-modenur für 10.10 Yosemite funktioniert, nicht für 10.11 El Capitan. Muss versuchen, ein ADP-Mitglied zu finden, das entweder ein Kext-Signaturzertifikat hat oder bereit ist, eines zu erhalten. Ziemlich viel Arbeit, um einen Fehler zu umgehen!
Nach apple.stackexchange.com/a/209653/25135 und developer.apple.com/library/ios/documentation/Security/… habe ich es versucht csrutil disable. Jetzt kextutilbehauptet, das Ding zu laden, kextstatlistet es aber nicht auf, und das Gerät funktioniert immer noch nicht. Ich frage mich, ob es sich um ein Problem beim Laden von Kext handelt oder ob die Problemumgehung nicht für meinen Fall gilt.
Dies ist aus einigen Gründen ein etwas spezieller Kext: 1) Er wird nicht von Ihnen geladen, sondern automatisch von OSX basierend auf Übereinstimmungen mit HW-IDs geladen, 2) Er setzt nur einige Eigenschaften für den Apple Composite-Treiber. Um zu überprüfen, ob es geladen ist, müssen Sie den Befehl „ioreg -lw0“ ausführen und dann den Baum durchlaufen und nach Ihrem Gerät suchen. Irgendwo sollte die Option "kUSBRemoteWakeOverride" eingestellt sein.
Versuchen Sie auch, den <key>OSBundleRequired</key> <string>Local-Root</string>Schlüssel zum Haupt-Plist-Dikt hinzuzufügen. Es kann sein, dass dies erforderlich ist, um das Laden zu erzwingen.