TITLE:: HIDProto summary:: Prototype HID device to match with HIDFunc categories:: External Control>HID related:: Classes/HIDFunc, Classes/HIDdef, Classes/HIDElementProto, Classes/HID, Classes/HIDInfo, Guides/Working_with_HID DESCRIPTION:: Human input devices can be used as controllers for making music. This class can be used in conjunction with link::Classes/HIDFunc:: or link::Classes/HIDdef:: to match incoming messages with a particular link::Classes/HID:: device. HIDProto has all the variables that specify an HID device. The more of these variables you specify, the more need to be matched when filtering the incoming HID data. CLASSMETHODS:: METHOD:: new Create a new instance of HIDProto. METHOD:: newType Create a new instance of HIDProto based on usage and usagePage of the device. ARGUMENT:: uName Name of the usage id ARGUMENT:: pName Name of the usage page id returns:: an HIDProto METHOD:: newProduct Create a new instance of HIDProto based on the product information. ARGUMENT:: pName The product name to match. ARGUMENT:: vName The vendor name to match. returns:: an HIDProto METHOD:: newFromDict Create a new instance of HIDProto based on an IdentityDictionary with a set of parameters to match. ARGUMENT:: dict An IdentityDictionary with a set of parameters to match. The keys in the dictionary should be one of the instance variables of HIDProto. returns:: an HIDProto INSTANCEMETHODS:: PRIVATE:: init SUBSECTION:: Instance variables that can be used to match a device METHOD:: id The device id that should be matched. This is dependent on the order of opening HID devices. METHOD:: productName The product name to match (see also link::Classes/HIDInfo::). METHOD:: vendorName The vendor name to match (see also link::Classes/HIDInfo::). METHOD:: productID The product id to match (see also link::Classes/HIDInfo::). METHOD:: vendorID The vendor id to match (see also link::Classes/HIDInfo::). METHOD:: interfaceNumber The interface number to match (see also link::Classes/HIDInfo::). METHOD:: releaseNumber The release number to match (see also link::Classes/HIDInfo::). METHOD:: serialNumber The serial number to match (see also link::Classes/HIDInfo::). METHOD:: path The path to match (see also link::Classes/HIDInfo::). METHOD:: usage The usage ID of the device to match (see also link::Classes/HIDInfo::). METHOD:: usagePage The usage page ID of the device to match (see also link::Classes/HIDInfo::). METHOD:: usageName The usage name of the device to match (see also link::Classes/HIDInfo::). METHOD:: pageName The page name of the device to match (see also link::Classes/HIDInfo::). SUBSECTION:: Methods to match METHOD:: matches Match the argument with the template. ARGUMENT:: hid An instance of HID. returns:: a Boolean indicating whether the incoming HID matches the template METHOD:: shouldMatch The variables that should be matched when filtering returns:: a Set with variable names. SUBSECTION:: Methods to add matching parameters METHOD:: addTypeMatch Add a match for usage name and usage page name of the device. ARGUMENT:: uName The usage name to match ARGUMENT:: pName The page name to match METHOD:: addProductMatch Add a match for product name and vendor name of the device. ARGUMENT:: pName The product name to match ARGUMENT:: vName The vendor name to match METHOD:: addDictionaryMatch Add an IdentityDictionary with a set of parameters to match. The keys in the dictionary should be one of the instance variables of HIDProto. ARGUMENT:: dict An IdentityDictionary with a set of parameters to match. EXAMPLES:: code:: b = HIDProto.newFromDict( ( path: "/dev/hidraw2" ) ); a = HIDFunc.usage( { |...args| args.postln; }, \X, deviceInfo: b ); a.free b = HIDProto.newType( \Mouse, \GenericDesktop ); a = HIDFunc.usage( { |...args| args.postln; }, \X, deviceInfo: b ); a.free; b = HIDProto.newProduct( "USB Mouse", "Logitech" ); a = HIDFunc.usage( { |...args| args.postln; }, \X, deviceInfo: b ); a.free; ::