How can I get a simple call back when a HID device, or at last, any USB/Bluetooth device gets connected/disconnected?
I made a simple app that shows the connected joysticks and the pressed buttons/axis for mac in a pretty way. Since I am not very familiar with cocoa yet, I made the UI using a webview, and used the SDL Joystick library.
Everything is working nice, the only problem is that the user needs to scan for new joysticks manually if he/she connects/disconnects something while the program is running.
With a callback, I I can just call the Scan function. I don’t want to handle the device or do something fancy, just know when there is something new happening…
Thanks.
Take a look at
IOServiceAddMatchingNotification()and related functions. I’ve only worked with it in the context of serial ports (which are in fact USB to serial adapters, though that doesn’t matter), but it should be applicable to any IOKit accessible device. I’m not sure about Bluetooth, but it should at least work for USB devices. Here’s a snippet of code I use:My
SerialPortDeviceWasAddedFunction()andSerialPortWasRemovedFunction()are called when a serial port becomes available on the system or is removed, respectively.Relevant documentation is here, particularly under the heading
Getting Notifications of Device Arrival and Departure.