// Registers callbacks for device addition and removal. These callbacks // are called when we run the loop in CheckDevicesMode void RegisterHIDCallbacks(IOHIDManagerRef hidmanager) { try{ UnityEngine.Debug.Log("OSXHIDInterface> RegisterHIDCallbacks"); Native.IOHIDManagerRegisterDeviceMatchingCallback( hidmanager, HandleHIDDeviceAdded, IntPtr.Zero); Native.IOHIDManagerRegisterDeviceRemovalCallback( hidmanager, HandleHIDDeviceRemoved, IntPtr.Zero); Native.IOHIDManagerScheduleWithRunLoop(hidmanager, RunLoop, InputLoopMode); //Native.IOHIDManagerSetDeviceMatching(hidmanager, DeviceTypes.Ref); Native.IOHIDManagerSetDeviceMatchingMultiple(hidmanager, DeviceTypes.typeRef); Native.CFRelease(DeviceTypes.typeRef); IOReturn result = Native.IOHIDManagerOpen(hidmanager, (int)Native.IOHIDOptionsType.kIOHIDOptionsTypeNone); if (result == IOReturn.kIOReturnSuccess) { Native.CFRunLoopRunInMode(InputLoopMode, 0.0, true); hidCallbacksRegistered = true; } else { UnityEngine.Debug.LogError("OSXHIDInterface can't open hidmanager! Error:" + result); } }catch (Exception ex) { UnityEngine.Debug.LogException(ex); } }