iDevices can be controlled by switches. The first app that we (at Spokane Schools) used with a switch is RadSounds, by RJ Cooper. It can use the whole surface of the touchscreen as a switch, or you can pair it with a wireless (bluetooth) switch interface. Connect any kind of switch (we used a 'Jelly Bean') to the bluetooth interface, and the app responds to switch presses.

Bluetooth switch interfaces work by emulating keyboards, using the HID keyboard standard, so the iDevice handles it just like a hardware bluetooth keyboard. Originally, these bluetooth switch interfaces were used by musicians to turn the page on virtual sheet music on their iPads, using foot switches. More recently, arcade-style game interfaces like the iCade have become popular. Several other manufacturers are making or planning controllers that use the iCade protocol for mapping switch presses to keyboard keys, and there are (as of Fall 2012) more than 70 games in the App Store that are compatible with iCade (and many more old-school games available in the Cydia jailbreak app store).

RJ Cooper sells bluetooth switch interfaces or you can buy an AirTurn BT-105. The Inclusive Co. in the UK has a very cool interface called Switch4Apps with many options, including a mode for music player control. Here's Christopher Hills's review of the Tecla Shield:
http://www.youtube.com/watch?v=Yz8YYCbh6A8&feature=youtu.be

Ultimarc sells a programmable USB button for $29, that sends a stored sequence of keystrokes http://www.usbbutton.com/ and it works with the iPad, when connected through the $30 iPad Camera Adapter.


Jane Farrall discusses switch interfaces on her blog Jane Farrall Consulting and, with Alex Dunn , has a frequently-updated app list: Switch-Accessible Apps For iPad/iPhone (note: this is a .pdf file).

The downside, for special education apps, is that app developers have to build keyboard input into the app (so that the app will respond to the 'keyboard events' generated by the switch interface). There are not very many apps that do this, and there is not a real standard for keyboard events, although RJ Cooper tried to get special education and AAC app developers to agree on a standard, and iCade may become a multi-manufacturer standard, so far only for games.

There are many ways to get switch input into iDevices. Simulating a bluetooth keyboard is not a particularly good way. The official Apple documentation for app developers does not provide any way to get separate Key Down and Key Up events from the bluetooth keyboard (or the switch interface pretending to be a bluetooth keyboard). This means that the switch interface doesn't have a straightforward way to signal 'the switch is pressed and held' to the app. It's possible for app developers to work around this - by reverse-engineering one of Apple's 'private' frameworks - but that might result in Apple not approving the app for the App Store.

An arcade game interface for iDevices, the iCade gets around this by sending two different keyboard 'keypresses' - one for 'switch is down' and one for 'switch is up'. It would require a little hardware modification to add external switches. Also, apps would have to be written especially to support the iCade keypresses.

Proloquo2Go is going to support switch scanning using VoiceOver support and the Origin Instruments Tornado interface. Other AAC app developers will probably follow suit. This is the safest way to go, because it follows Apple's Accessibility standards, but it's expensive and complicated if all you want to do is have simple game and cause-and-effect apps that can respond to a switch.

The obvious thing for Apple to do is to add iOS support for keyboard shortcuts on iDevices, so that developers could easily add Universal Design accessibility to most apps, but until that happens, we'll have to muddle along with more-or-less hacky alternatives. For DIYers, there is this little gizmo from Sparkfun http://www.sparkfun.com/tutorials/337 that connects via USB (using the iPad "Camera Adapter") and pretends to be a USB keyboard, sending key presses in response to switch inputs. I just bought one, and I'm playing with it. At MIT, they're playing with (no kidding) turning bananas, alphabet soup, and pretty much anything else touchable into keypresses via USB
http://www.newscientist.com/article/dn21807-diy-circuit-turns-your-alphabet-soup-into-a-keyboard.html?DCMP=OTC-rss&nsref=online-news
and there is a kit available called "MaKey MaKey" that makes it easy to try out:
http://www.adafruit.com/category/120


Alternatives to bluetooth (or USB) keyboard emulation:


The audio jack has a microphone input as well as a stereo headphone output. The microphone input is an easy, safe, and inexpensive possibility for alternative switch input methods, which include an audio jack modem (which is similar to what Squareuses for credit card input) or DTMF interface, or just a sound level threshold switch.

MIDI is another good alternative. iDevice MIDI interface cables are easily available, and special-purpose MIDI switch boxes are easy to build.

What we need is a standard for switch-enabled apps, so that developers can all build future apps with compatible switch interfaces.