IOS – What determines whether a Bluetooth mouse can be paired with iOS

accessoriesbluetoothiosmouse

There are some Bluetooth mice that can be paired with an iOS device, for example the Citrix X1, or the Swiftpoint GT. These can be used in any app that supports them, like RDP clients, etc.

A majority of Bluetooth mice do not even pair with iOS. I believe this is what prevents them from being used by apps. If they could pair, then I guess communication with them could be implemented in apps individually.

Why is that? What makes the Citrix X1 able to pair with iOS, which is missing in other mice?

The Apple Bluetooth accessory design guidelines document does not mention that the device must implement any additional Apple specific command, in order to be able to pair.

I also don't believe that every dirt cheap Chinese Bluetooth accessory's manufacturer has had their device verified, and got some signed ID for it, or whatever.

What makes the difference then?

Best Answer

iOS does not support ordinary Bluetooth mice.

Ordinary Bluetooth mice follow a standard by offering a HID (human-interface-device) detailing that it is a mouse (a specific type of pointer device). These would work with an ordinary Windows PC, Mac or other type of PC.

On iOS Apple have chosen not to support this. An argument could be that the iOS user interface is made for touch interaction, and not for use with a mouse.

Specific apps (primarily Remote Desktop apps) have added support for Bluetooth mice by implementing the whole thing themselves instead of relying on operating system for mice.

This means that the mice does not offer a standard HID mouse profile. To iOS these mice appear just as a "generic" Bluetooth accessory that the operating system does not support. Support is instead in each individual app.

The app (such as a remote desktop app) knows about this specific type of Bluetooth mice that are non-standard. They communicate with the mouse and receive data when the mouse is moved, buttons are pressed, etc. They have to on their own translate this data into actions on screen (i.e. determine which button was clicked, move the mouse pointer, etc.). None on this is done by iOS, but instead done by the app.