Mac Developer Library

Developer

IOHIDKeys.h Reference

Options
Deployment Target:

On This Page

IOHIDKeys.h Reference

Included Headers

  • <sys/cdefs.h>

  • <IOKit/hidsystem/IOHIDParameter.h>

Data Types

See the Overview section above for header-level documentation.

  • Abstract data type used as a unique identifier for an element.

    Declaration

    #ifdef __LP64__ typedef uint32_t IOHIDElementCookie; #else typedef void * IOHIDElementCookie; #endif

    Import Statement

Constants

See the Overview section above for header-level documentation.

  • Declaration

    #define kIOHIDTransportKey "Transport" #define kIOHIDElementCookieKey "ElementCookie" #define kIOHIDElementCookieMinKey "ElementCookieMin" #define kIOHIDElementCalibrationDeadZoneMaxKey "CalibrationDeadZoneMax" #define kIOHIDElementCalibrationDeadZoneMinKey "CalibrationDeadZoneMin" #define kIOHIDElementCalibrationDeadZoneMaxKey "CalibrationDeadZoneMax" #define kIOHIDElementCalibrationGranularityKey "CalibrationGranularity" #define kIOHIDElementCalibrationMaxKey "CalibrationMax" #define kIOHIDElementCalibrationMinKey "CalibrationMin" #define kIOHIDElementCalibrationSaturationMaxKey "CalibrationSaturationMax" #define kIOHIDElementCalibrationSaturationMinKey "CalibrationSaturationMin" #define kIOHIDElementCookieKey "ElementCookie" #define kIOHIDElementCookieMinKey "ElementCookieMin" #define kIOHIDElementKey "Elements" #define kIOHIDTransportKey "Transport"

    Constants

    • HID Device Property Keys

      Keys that represent properties of a paticular device. Can be added to your matching dictionary when refining searches for HID devices.

      Please note:

      kIOHIDPrimaryUsageKey and kIOHIDPrimaryUsagePageKey are no longer rich enough to describe a device's capabilities. Take, for example, a device that describes both a keyboard and a mouse in the same descriptor. The previous behavior was to only describe the keyboard behavior with the primary usage and usage page. Needless to say, this would sometimes cause a program interested in mice to skip this device when matching.

      Thus we have added 3 additional keys:

      • kIOHIDDeviceUsageKey

      • kIOHIDDeviceUsagePageKey

      • kIOHIDDeviceUsagePairsKey

      kIOHIDDeviceUsagePairsKey is used to represent an array of dictionaries containing key/value pairs referenced by kIOHIDDeviceUsageKey and kIOHIDDeviceUsagePageKey. These usage pairs describe all application type collections (behaviors) defined by the device.

      An application intersted in only matching on one criteria would only add the kIOHIDDeviceUsageKey and kIOHIDDeviceUsagePageKey keys to the matching dictionary. If it is interested in a device that has multiple behaviors, the application would instead add an array or dictionaries referenced by kIOHIDDeviceUsagePairsKey to his matching dictionary.

    • HID Element Dictionary Keys

      These keys can also be added to a matching dictionary when searching for elements via copyMatchingElements.

    • HID Element Match Keys

      These keys should only be used with a matching dictionary when searching for elements via copyMatchingElements.

    • kIOHIDElementCalibrationDeadZoneMaxKey

      The dead zone property is used to allow for slight differences in the idle value returned by an element.

    • kIOHIDElementCalibrationDeadZoneMinKey

      The dead zone property is used to allow for slight differences in the idle value returned by an element.

    • kIOHIDElementCalibrationDeadZoneMinKey

      The dead zone property is used to allow for slight differences in the idle value returned by an element.

    • kIOHIDElementCalibrationGranularityKey

      Values are rounded off such that if granularity=0.1, values after calibration are 0, 0.1, 0.2, 0.3, etc.

    • kIOHIDElementCalibrationMaxKey

      The maximum bounds for a calibrated value.

    • kIOHIDElementCalibrationMinKey

      The minimum bounds for a calibrated value.

    • kIOHIDElementCalibrationSaturationMaxKey

      The saturation property is used to allow for slight differences in the minimum and maximum value returned by an element.

    • kIOHIDElementCalibrationSaturationMinKey

      The saturation property is used to allow for slight differences in the minimum and maximum value returned by an element.

    • kIOHIDElementCookieKey

      These keys can also be added to a matching dictionary when searching for elements via copyMatchingElements.

    • kIOHIDElementCookieMinKey

      These keys should only be used with a matching dictionary when searching for elements via copyMatchingElements.

    • kIOHIDElementKey

      Property for a HID Device or element dictionary. Elements can be heirarchical, so they can contain other elements.

    • kIOHIDTransportKey

      Keys that represent properties of a paticular device. Can be added to your matching dictionary when refining searches for HID devices.

      Please note:

      kIOHIDPrimaryUsageKey and kIOHIDPrimaryUsagePageKey are no longer rich enough to describe a device's capabilities. Take, for example, a device that describes both a keyboard and a mouse in the same descriptor. The previous behavior was to only describe the keyboard behavior with the primary usage and usage page. Needless to say, this would sometimes cause a program interested in mice to skip this device when matching.

      Thus we have added 3 additional keys:

      • kIOHIDDeviceUsageKey

      • kIOHIDDeviceUsagePageKey

      • kIOHIDDeviceUsagePairsKey

      kIOHIDDeviceUsagePairsKey is used to represent an array of dictionaries containing key/value pairs referenced by kIOHIDDeviceUsageKey and kIOHIDDeviceUsagePageKey. These usage pairs describe all application type collections (behaviors) defined by the device.

      An application intersted in only matching on one criteria would only add the kIOHIDDeviceUsageKey and kIOHIDDeviceUsagePageKey keys to the matching dictionary. If it is interested in a device that has multiple behaviors, the application would instead add an array or dictionaries referenced by kIOHIDDeviceUsagePairsKey to his matching dictionary.

  • Describes different types of HID collections.

    Declaration

    enum IOHIDElementCollectionType { kIOHIDElementCollectionTypePhysical = 0x00, kIOHIDElementCollectionTypeApplication, kIOHIDElementCollectionTypeLogical, kIOHIDElementCollectionTypeReport, kIOHIDElementCollectionTypeNamedArray, kIOHIDElementCollectionTypeUsageSwitch, kIOHIDElementCollectionTypeUsageModifier }; typedef enum IOHIDElementCollectionType IOHIDElementCollectionType;

    Constants

    • kIOHIDElementCollectionTypePhysical

      Used for a set of data items that represent data points collected at one geometric point.

    • kIOHIDElementCollectionTypeApplication

      Identifies item groups serving different purposes in a single device.

    • kIOHIDElementCollectionTypeLogical

      Used when a set of data items form a composite data structure.

    • kIOHIDElementCollectionTypeReport

      Wraps all the fields in a report.

    • kIOHIDElementCollectionTypeNamedArray

      Contains an array of selector usages.

    • kIOHIDElementCollectionTypeUsageSwitch

      Modifies the meaning of the usage it contains.

    • kIOHIDElementCollectionTypeUsageModifier

      Modifies the meaning of the usage attached to the encompassing collection.

    Discussion

    Collections identify a relationship between two or more elements.

  • Describes different types of HID elements.

    Declaration

    enum IOHIDElementType { kIOHIDElementTypeInput_Misc = 1, kIOHIDElementTypeInput_Button = 2, kIOHIDElementTypeInput_Axis = 3, kIOHIDElementTypeInput_ScanCodes = 4, kIOHIDElementTypeOutput = 129, kIOHIDElementTypeFeature = 257, kIOHIDElementTypeCollection = 513 }; typedef enum IOHIDElementType IOHIDElementType;

    Constants

    • kIOHIDElementTypeInput_Misc

      Misc input data field or varying size.

    • kIOHIDElementTypeInput_Button

      One bit input data field.

    • kIOHIDElementTypeInput_Axis

      Input data field used to represent an axis.

    • kIOHIDElementTypeInput_ScanCodes

      Input data field used to represent a scan code or usage selector.

    • kIOHIDElementTypeOutput

      Used to represent an output data field in a report.

    • kIOHIDElementTypeFeature

      Describes input and output elements not intended for consumption by the end user.

    • kIOHIDElementTypeCollection

      Element used to identify a relationship between two or more elements.

    Discussion

    Used by the IOHIDFamily to identify the type of element processed. Represented by the key kIOHIDElementTypeKey in the dictionary describing the element.

  • Options for opening a device via IOHIDLib.

    Declaration

    enum { kIOHIDOptionsTypeNone = 0x00, kIOHIDOptionsTypeSeizeDevice = 0x01 }; typedef uint32_t IOHIDOptionsType;

    Constants

    • kIOHIDOptionsTypeNone

      Default option.

    • kIOHIDOptionsTypeSeizeDevice

      Used to open exclusive communication with the device. This will prevent the system and other clients from receiving events from the device.

  • Options for creating a queue via IOHIDLib.

    Declaration

    enum { kIOHIDQueueOptionsTypeNone = 0x00, kIOHIDQueueOptionsTypeEnqueueAll = 0x01 }; typedef uint32_t IOHIDQueueOptionsType;

    Constants

    • kIOHIDQueueOptionsTypeNone

      Default option.

    • kIOHIDQueueOptionsTypeEnqueueAll

      Force the IOHIDQueue to enqueue all events, relative or absolute, regardless of change.

  • Describes different type of HID reports.

    Declaration

    enum IOHIDReportType { kIOHIDReportTypeInput = 0, kIOHIDReportTypeOutput, kIOHIDReportTypeFeature, kIOHIDReportTypeCount }; typedef enum IOHIDReportType IOHIDReportType;

    Constants

    • kIOHIDReportTypeInput

      Input report.

    • kIOHIDReportTypeOutput

      Output report.

    • kIOHIDReportTypeFeature

      Feature report.

    Discussion

    Used by the IOHIDFamily to identify the type of report being processed.

  • Type to define what industrial standard the device is referencing.

    Declaration

    enum { kIOHIDStandardTypeANSI = 0, kIOHIDStandardTypeISO = 1, kIOHIDStandardTypeJIS = 2 }; typedef uint32_t IOHIDStandardType;

    Constants

    • kIOHIDStandardTypeANSI

      ANSI.

    • kIOHIDStandardTypeISO

      ISO.

    • kIOHIDStandardTypeJIS

      JIS.

  • Describes options for gathering element values.

    Declaration

    enum { kIOHIDValueOptionsFlagRelativeSimple = ( 1<<0) }; typedef uint32_t IOHIDValueOptions;

    Constants

    • kIOHIDValueOptionsFlagSimpleRelative

      Compares against previous value

  • Describes different types of scaling that can be performed on element values.

    Declaration

    enum { kIOHIDValueScaleTypeCalibrated, kIOHIDValueScaleTypePhysical }; typedef uint32_t IOHIDValueScaleType;

    Constants

    • kIOHIDValueScaleTypeCalibrated

      Type for value that is scaled with respect to the calibration properties.

    • kIOHIDValueScaleTypePhysical

      Type for value that is scaled with respect to the physical min and physical max of the element.