We need a device which can send single Bluetooth keypresses to your iOS device. Typically you might use the spacebar or perhaps a tab key to advance the scan to the next item in the enter key to select. However switch control is so flexible that any key can be set up.
You may not need to build a device at all, any Bluetooth keyboard that is capable of connecting to an iOS device can be used as a switch control device. If the user has sufficient dexterity and strength to push one or two buttons on a keyboard you can just pair that keyboard with your iOS device. You then configure the switch control on your iPhone or iPad to use whatever buttons on the keyboard that you can easily reach.
If you do want to build a device, the simplest one would use the Bluefruit EZ-Key - 12 Input Bluetooth HID Key. Without any extra programming you can connect up to 12 buttons to this device and use them to transmit keystrokes that can be used by iOS switch control.
Below is a sample circuit connecting three pushbuttons to this device. You supply power anywhere from 3-16 volts. One side of each pushbutton is connected to ground and the other side is connected to one of the 12 input pins.
Complete details on this device are available in the product tutorial here…
No programming is required. This is the simplest device we can build. Although you can reconfigure this device in many ways such as redefining which keys can be transmitted, none of those advanced features for this device are necessary. All you have to do is supply power and hookup some switches.
Theoretically you should be able to use any keypress to activate switch control. However on occasion if you're pressing the switches rapidly while typing, it will not interpret the keypress as a switch command. It might accidentally interpret as a character typed on the keyboard. For example on my feather based BLE device I use the letters "l", "r", and "s" for the left, right, and select functions. Occasionally while typing I will see one of those letters accidentally inserted into my text.
The switch locations 0-3 on the Adafruit EZ-Key will transmit arrow keys. If they glitch while typing something, it can really mess up your typing. That is why we have wired this to locations 9, 10, 11 because they correspond to the letters "a", "s", and "d" respectively. If you do get a glitch while typing, the worst that will happen is you will get an extraneous letter "a", "s", or "d" in your text message which you can easily delete.
If we need something more sophisticated than the EZ-Key, we can use one of several available Adafruit Feather BLE devices. In the a later section will give an example of using the Feather 32u4 BLE complete with schematics and source code and tips on how to customize it to make it as flexible as possible.