Exemple #1
0
 def __init__(self, elementRef):
     # Check that we've been passed a valid IOHIDElement.
     assert elementRef
     assert cf.CFGetTypeID(elementRef) == iokit.IOHIDElementGetTypeID()
     _element_lookup[elementRef.value] = self
     self.elementRef = elementRef
     # Set element properties as attributes.
     self.cookie = iokit.IOHIDElementGetCookie(elementRef)
     self.type = iokit.IOHIDElementGetType(elementRef)
     if self.type == kIOHIDElementTypeCollection:
         self.collectionType = iokit.IOHIDElementGetCollectionType(
             elementRef)
     else:
         self.collectionType = None
     self.usagePage = iokit.IOHIDElementGetUsagePage(elementRef)
     self.usage = iokit.IOHIDElementGetUsage(elementRef)
     self.isVirtual = bool(iokit.IOHIDElementIsVirtual(elementRef))
     self.isRelative = bool(iokit.IOHIDElementIsRelative(elementRef))
     self.isWrapping = bool(iokit.IOHIDElementIsWrapping(elementRef))
     self.isArray = bool(iokit.IOHIDElementIsArray(elementRef))
     self.isNonLinear = bool(iokit.IOHIDElementIsNonLinear(elementRef))
     self.hasPreferredState = bool(
         iokit.IOHIDElementHasPreferredState(elementRef))
     self.hasNullState = bool(iokit.IOHIDElementHasNullState(elementRef))
     self.name = cftype_to_value(iokit.IOHIDElementGetName(elementRef))
     self.reportID = iokit.IOHIDElementGetReportID(elementRef)
     self.reportSize = iokit.IOHIDElementGetReportSize(elementRef)
     self.reportCount = iokit.IOHIDElementGetReportCount(elementRef)
     self.unit = iokit.IOHIDElementGetUnit(elementRef)
     self.unitExponent = iokit.IOHIDElementGetUnitExponent(elementRef)
     self.logicalMin = iokit.IOHIDElementGetLogicalMin(elementRef)
     self.logicalMax = iokit.IOHIDElementGetLogicalMax(elementRef)
     self.physicalMin = iokit.IOHIDElementGetPhysicalMin(elementRef)
     self.physicalMax = iokit.IOHIDElementGetPhysicalMax(elementRef)
Exemple #2
0
 def __init__(self, deviceRef):
     # Check that we've got a valid IOHIDDevice.
     assert deviceRef
     assert cf.CFGetTypeID(deviceRef) == iokit.IOHIDDeviceGetTypeID()
     _device_lookup[deviceRef.value] = self
     self.deviceRef = deviceRef
     # Set attributes from device properties.
     self.transport = self.get_property("Transport")
     self.vendorID = self.get_property("VendorID")
     self.vendorIDSource = self.get_property("VendorIDSource")
     self.productID = self.get_property("ProductID")
     self.versionNumber = self.get_property("VersionNumber")
     self.manufacturer = self.get_property("Manufacturer")
     self.product = self.get_property("Product")
     self.serialNumber = self.get_property(
         "SerialNumber")  # always returns None; apple bug?
     self.locationID = self.get_property("LocationID")
     self.primaryUsage = self.get_property("PrimaryUsage")
     self.primaryUsagePage = self.get_property("PrimaryUsagePage")
     # Populate self.elements with our device elements.
     self.elements = self._get_elements()
     # Set up callback functions.
     self.value_observers = set()
     self.removal_observers = set()
     self.removal_callback = self._register_removal_callback()
     self.value_callback = self._register_input_value_callback()
Exemple #3
0
 def __init__(self):
     # Create the HID Manager.
     self.managerRef = c_void_p(iokit.IOHIDManagerCreate(None, kIOHIDOptionsTypeNone))
     assert self.managerRef
     assert cf.CFGetTypeID(self.managerRef) == iokit.IOHIDManagerGetTypeID()
     self.schedule_with_run_loop()
     self.matching_observers = set()
     self.matching_callback = self._register_matching_callback()
     self.devices = self._get_devices()
Exemple #4
0
 def __init__(self, valueRef):
     # Check that this is a valid IOHIDValue.
     assert valueRef
     assert cf.CFGetTypeID(valueRef) == iokit.IOHIDValueGetTypeID()
     self.valueRef = valueRef
     self.timestamp = iokit.IOHIDValueGetTimeStamp(valueRef)
     self.length = iokit.IOHIDValueGetLength(valueRef)
     if self.length <= 4:
         self.intvalue = iokit.IOHIDValueGetIntegerValue(valueRef)
     else:
         # Values may be byte data rather than integers.
         # e.g. the PS3 controller has a 39-byte HIDValue element.
         # We currently do not try to handle these cases.
         self.intvalue = None
     elementRef = c_void_p(iokit.IOHIDValueGetElement(valueRef))
     self.element = HIDDeviceElement.get_element(elementRef)