---
title: "init(primaryUsage:deviceUsages:vendorID:productID:transport:product:manufacturer:modelNumber:versionNumber:serialNumber:uniqueID:locationID:localizationCode:isBuiltIn:extraProperties:)"
framework: corehid
role: symbol
role_heading: Initializer
path: "corehid/hiddevicemanager/devicematchingcriteria/init(primaryusage:deviceusages:vendorid:productid:transport:product:manufacturer:modelnumber:versionnumber:serialnumber:uniqueid:locationid:localizationcode:isbuiltin:extraproperties:)"
---

# init(primaryUsage:deviceUsages:vendorID:productID:transport:product:manufacturer:modelNumber:versionNumber:serialNumber:uniqueID:locationID:localizationCode:isBuiltIn:extraProperties:)

Creates one set of matching criteria for HID devices.

## Declaration

```swift
init(primaryUsage: HIDUsage? = nil, deviceUsages: [HIDUsage]? = nil, vendorID: UInt32? = nil, productID: UInt32? = nil, transport: HIDDeviceTransport? = nil, product: String? = nil, manufacturer: String? = nil, modelNumber: String? = nil, versionNumber: UInt64? = nil, serialNumber: String? = nil, uniqueID: String? = nil, locationID: UInt64? = nil, localizationCode: HIDDeviceLocalizationCode? = nil, isBuiltIn: Bool? = nil, extraProperties: Dictionary<String, AnyObject>? = nil)
```

## Parameters

- `primaryUsage`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/primaryUsage.
- `deviceUsages`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/deviceUsages.
- `vendorID`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/vendorID.
- `productID`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/productID.
- `transport`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/transport.
- `product`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/product.
- `manufacturer`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/manufacturer.
- `modelNumber`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/modelNumber.
- `versionNumber`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/versionNumber.
- `serialNumber`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/serialNumber.
- `uniqueID`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/uniqueID.
- `locationID`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/locationID.
- `localizationCode`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/localizationCode.
- `isBuiltIn`: See doc://com.apple.CoreHID/documentation/CoreHID/HIDDeviceManager/DeviceMatchingCriteria/isBuiltIn.
- `extraProperties`: A catch-all for uncommon or device specific criteria not listed above. This parameter is typically only for advanced users that need additional control over the matching process.

## Mentioned in

Communicating with human interface devices

## Discussion

Discussion This init method is the only way to create matching criteria for discovering HID devices connected to the system. All parameters are optional; if none are specified, every discoverable device is matched. Created HIDDeviceManager.DeviceMatchingCriteria are used by being passed to monitorNotifications(matchingCriteria:).
