public IDictionary <IOHIDElement, IOHIDValue> GetValues(IOHIDElement[] elements) { ThrowIfDisposed(); if (elements == null) { throw new ArgumentNullException("elements"); } var elementArray = CFArray.FromNativeObjects(elements); IOHIDElement[] keys = new IOHIDElement[elements.Length]; IOHIDValue[] values = new IOHIDValue[elements.Length]; CFDictionary multiple = CFDictionary.FromObjectsAndKeys(values, keys); var multipleRef = multiple.Handle; var result = IOHIDDeviceCopyValueMultiple(Handle, elementArray.Handle, ref multipleRef); IOObject.ThrowIfError(result); var dict = new Dictionary <IOHIDElement, IOHIDValue> (multiple.Count); IntPtr[] keyRefs, valueRefs; multiple.GetKeysAndValues(out keyRefs, out valueRefs); for (int i = 0; i < multiple.Count; i++) { dict.Add(new IOHIDElement(keyRefs [i], true), new IOHIDValue(valueRefs [i], true)); } CFType.Release(multiple.Handle); return(dict); }
public void Detatch(IOHIDElement element) { ThrowIfDisposed(); if (element == null) { throw new ArgumentNullException("element"); } IOHIDElementDetach(Handle, element.Handle); }
public static IOHIDValue FromBytes(IOHIDElement element, byte[] bytes) { var timeStamp = Time.Absolute; var valueRef = IOHIDValueCreateWithBytes(IntPtr.Zero, element.Handle, timeStamp, bytes, (CFIndex)bytes.Length); return(new IOHIDValue(valueRef, true)); }
public static IOHIDValue FromInteger(IOHIDElement element, int value) { var timeStamp = Time.Absolute; var valueRef = IOHIDValueCreateWithIntegerValue(IntPtr.Zero, element.Handle, timeStamp, (CFIndex)value); return(new IOHIDValue(valueRef, true)); }
public void SetValue(IOHIDElement element, IOHIDValue value) { ThrowIfDisposed(); if (element == null) { throw new ArgumentNullException("element"); } if (value == null) { throw new ArgumentNullException("value"); } var result = IOHIDDeviceSetValue(Handle, element.Handle, value.Handle); IOObject.ThrowIfError(result); }
public IOHIDValue GetValue(IOHIDElement element) { ThrowIfDisposed(); if (element == null) { throw new ArgumentNullException("element"); } IntPtr valueRef; var result = IOHIDDeviceGetValue(Handle, element.Handle, out valueRef); IOObject.ThrowIfError(result); if (valueRef == IntPtr.Zero) { return(null); } return(new IOHIDValue(valueRef, true)); }
public IOHIDElement[] GetAllElements() { ThrowIfDisposed(); var arrayRef = IOHIDDeviceCopyMatchingElements(Handle, IntPtr.Zero, 0); if (arrayRef == IntPtr.Zero) { return(null); } using (var array = new CFArray(arrayRef, true)) { var elements = new IOHIDElement[array.Count]; for (int i = 0; i < elements.Length; i++) { elements [i] = new IOHIDElement(array.GetValue(i), true); } return(elements); } }
public IOHIDElement[] GetMatchingElements(IDictionary <string, ValueType> matchingDictionary) { ThrowIfDisposed(); if (matchingDictionary == null) { throw new ArgumentNullException("matchingDictionary"); } var matching = NSDictionary.FromObjectsAndKeys(matchingDictionary.Values.ToArray(), matchingDictionary.Keys.ToArray()); var arrayRef = IOHIDDeviceCopyMatchingElements(Handle, matching.Handle, 0); if (arrayRef == IntPtr.Zero) { return(null); } using (var array = new CFArray(arrayRef, true)) { var elements = new IOHIDElement[array.Count]; for (int i = 0; i < elements.Length; i++) { elements [i] = new IOHIDElement(array.GetValue(i), true); } return(elements); } }