I recently ran into an unexpected problem getting my external switches to work when using two-switch scanning with iPad Switch Control. After wrestling with the problem and eventually fixing it (or at least finding a workaround), I thought I’d share what I learned in case it can save somebody else some time.
Here’s a quick bottom-line synopsis: If you are using a Tapio interface for two-switch input with an iPad, set your Tapio to generate 1 and 2 for outputs, rather than the Space and Enter default outputs.
Read on for more details on the problem and exactly how to implement this solution.
To use two-switch scanning in iOS, you set Settings > Accessibility > Switch Control > Scanning Style to Manual. One switch should move to the next item, and the other switch should select an item.
The symptom: Unfortunately, only one of my two switches was doing anything. The select switch worked to let me select an item, but hitting the move switch did nothing.
My setup: The two switches were connected to the iPad using a Tapio interface and a Lightning-to-USB adapter, as shown in the photo below. I assigned the Select Item action to the yellow switch, and the Move to Next Item action to the blue switch.
I knew these switches and setup had worked before, since I had used it when experimenting with Morse code iPad input some weeks before. So what was different? I think the key difference is that I had just upgraded my iPad to use iPad OS 13. I don’t know why that would matter (or if in fact it did matter), except to guess that the changes that allow iPad OS 13 to use USB mice may somehow have affected the operation of switches connected via Tapio USB.
Attempts at troubleshooting
Here’s a brief summary of my attempts at troubleshooting, in case this info is useful to anyone. If you want to just find out how I fixed it, feel free to move on to the next section.
Were the switches working? Yes. When I swapped the switch connections, the blue switch now worked to select items, but the yellow switch did nothing.
Was the Tapio working? I reviewed the configuration guide for Tapio to make sure the connections and the Switch Control settings were correct. That all seemed fine.
And, OK, the little green light inside the Tapio turned on when I hit each switch, the way it normally does. But was it really sending the correct signals to the iPad, and how would I know? Luckily, there are two pretty straightforward ways to test that. I turned Switch Control off and tried each of the tests described below.
First, I used the Configure Switch step in our Scanning Wizard app. This showed that both switches were set up correctly, at least as far as Scanning Wizard was concerned.
Second, just to double-check, I looked directly at what the switches were sending to the iPad. The Tapio converts switch closures into specific outputs. By default, it’s set for Switch 1 to generate a Space key, and Switch 2 to generate an Enter key, just as if these keys had been pressed on a keyboard. In a sense, the two switches are like a miniature 2-key keyboard. So to see if the Tapio was working properly, I opened the Notes app to see if I could ‘type’ with my two switches. Sure enough, hitting the yellow switch put Spaces into the note, and hitting the blue switch behaved just like the Enter key.
So, yes, the Tapio seemed to be working correctly to send both switch signals to the iPad.
So the switches and Tapio were working properly to send Space and Enter to the iPad. The problem in Switch Control seemed to be that the Enter key was no longer being interpreted as a valid switch input. A ha, finally I remembered that I could adjust the Tapio to send other outputs to the iPad, and see if that made a difference.
The Tapio DIP switch
You adjust the Tapio using the four-position DIP switch on the back of it. These switches are tiny but are easy to change using a paper clip. By default, all DIP switches are in the ON position, which tells the Tapio to send Space for Switch 1, and send Enter for Switch 2. This is the first row in the table shown below. (For additional details, the Tapio User Guide provides a good description of how this works.)
Change the DIP switch settings
Looking at the different modes in the table, I thought that the last one, Keyboard-2, would be worth a try. I changed the DIP switches to OFF, OFF, OFF (turning the first 3 switches from ON to OFF). The photo shows what the DIP switch looked like after I did that.
Test it — Success!
After changing the DIP switches, I checked it in the Notes app — yes, now hitting the yellow switch sent a ‘1’ character, and the blue switch typed the ‘2’ character.
I turned Switch Control back on, crossed my fingers, and now both switches worked properly: one to move to next item, and the other to select it. Problem fixed!
I wish I could share with you a deeper understanding of iOS switch interfaces and explain exactly why this problem occurred. But unfortunately, I don’t really know, and I haven’t seen this issue documented anywhere else.
Apple gives us a clue in their Switch Control docs when they say that you can choose a Bluetooth switch or Made for iPhone switch. The Tapio isn’t a Bluetooth interface. And I don’t think it is officially a Made for iPhone solution, as it is a more general-purpose switch interface and uses Apple’s Lightning to USB Adapter to connect to an iDevice.
So, in a way, I shouldn’t be too surprised that I had trouble. But, as noted earlier, this same setup had worked flawlessly prior to my upgrade to iOS 13. My guess is that it has something to do with the fact that iOS 13 has additional support for USB input devices, such as external mice. This might change some of the inner workings of how iOS Switch Control handles signals at the Lightning port, so that it can’t interpret the Enter key as a switch. Or maybe it’s just an oversight bug, something that inadvertently broke — I don’t know.
But in any case, if you run into this problem, set your Tapio to generate 1 and 2, instead of Space and Enter, and you should be all set.
Have you experienced any unexpected Switch Control behavior? Let us know, and if you fixed it, please tell us how!