Do you use a wireless keyboard with your iPhone, iPod touch, or iPad? Chances are you love being able to type quickly and effortlessly on the hardware keyboard, but hate having to reach over to the screen in order to tap anything on the screen. Even Steve Jobs knows this gets uncomfortable very quickly. You can jailbreak and use BTStack Mouse to give you a full keyboard-and-mouse combo, but many people don't want to jailbreak, not to mention that carrying so many things around means you might as well have bought a MacBook Air. But there is a way to control onscreen elements without taking your hands off the keyboard using, of all things, VoiceOver. Read on to see how you can use Apple's accessibility tool for the blind to provide yourself with full keyboard navigation. Note: VoiceOver only works with the iPhone 3GS or later, iPod touch 3rd generation or later, and iPad.
If you do a lot of typing, you know the iOS software keyboard can never replace the tactile feedback of a real keyboard, such as the Apple Wireless Keyboard. For these situations, the ideal setup is one where the device is propped up with the screen facing you and the keyboard is on the desk in front of it. Just like the iPad keyboard dock, but without needing to buy yet another keyboard.
Setting it Up
The first thing to do is to turn on VoiceOver. Navigate to Settings->General->Accessibility and select VoiceOver. Turn it on. This is really the only required step, but we'll spend a little more time with the VoiceOver settings to make the actual "voice" part of VoiceOver a bit less annoying. Essentially, you want to disable anything that will make VoiceOver talk more than it should (though this is not strictly necessary, as we'll see later). Personally, I turned the speaking rate all the way up so that when VoiceOver does speak, it does so for as little time as possible. I also turn off all the typing feedback because I know what I am typing, thank you very much.
The "rotor" settings can be quite confusing at first. The "rotor" essentially a rotating "switch" that you can use anywhere in iOS to quickly change VoiceOver settings. When text is selected, you can choose whether to have it read aloud character-by-character or word-by-word, or adjust the speaking rate if you've chosen to include it in the rotor, all of which is useless for our purposes. You can also set the "Language Rotor" to allow you to quickly change the language and dialect of the voice that reads things back to you, which again is not what we're interested. The "Web Rotor" is a bit more interesting however, and we'll look at that in a little bit.
The one thing you definitely want to do is go back to the main Accessibility settings and set Triple-click Home to toggle VoiceOver. When you're done using your Bluetooth keyboard and the last thing you want is your iPhone using a modified gesture set when you're trying to make a call, you'll be very happy to be able to turn VoiceOver back off without needing to dig back through the Settings app.
Okay, so we've got VoiceOver set up, now what? Here's where the magic comes in, with the VoiceOver keyboard commands. To start with, you can type control-option-S to make that annoying woman be silenced permanently (well, at least until the next time you turn VoiceOver off and back on). There are a whole host of keyboard commands you can now use, but I'll highlight the most useful ones. If you're interested in the full list, check out any of Apple's iOS device user guides. The commands are listed on page 240 of the iPhone user guide, page 146 of the iPad user guide, and page 191 of the iPod touch user guide.
- control-option-H : press the Home button
- you can double-press the H key to bring up the app switcher, but tripple-tapping will not turn off VoiceOver
- control-option-S : mute or unmute VoiceOver
- some commands, like VoiceOver help or Quick Nav status, only provide audio feedback, which you will not get if muted
- control-option-shift-S : activate/deactivate the "screen curtain"
- turns the screen off, but does not lock it
- control-option-K : enable VoiceOver help
- press any key combination and VoiceOver will tell you what it does. Useless if VoiceOver is muted
- escape : press the "back" button, or cancel VoiceOver Help
The next set of commands are the most useful for actual navigation. They have their command-option equivalents, but it's much easier to go into Quick Nav mode. To do this, just press the right and left arrow keys simultaneously. Do this again to turn QuickNav off. Once enabled:
- right arrow : select the next item
- left arrow : select the previous arrow
- press up and down arrows simultaneously : tap the highlighted item
- control-up arrow : select the first item
- control-down arrow : select the last item
- option-arrow key : scroll in the direction pressed
- up arrow + left arrow : move the rotor left
- up arrow + right arrow : move the rotor right
So here's a typical use case scenario , and what I use it for most. I want to type a text message and send it without having to reach up and touch the "send" button. Ensuring Quick Nav is on, I type my message, type control-down arrow to select the Send button (last item), then press the up and down arrow keys to tap the send button. That's it! No tapping required! If i need to go back and review other text messages, I can press option-up arrow to scroll back up and do so. Need to switch contacts? No problem, I hit escape to go back to the conversations list, use the left and right arrows to select the one I want, and press up+down arrow to go to that conversation. It all seems very clunky at first, but when you get used to it it becomes nearly seamless, and much more satisfying than reaching up to tap on the screen. If you're a biteSMS user like me, it's just as easy to use the QuickNav with QuickReply/QuickCompose. Unfortunately, there doesn't seem to be a way to tap the volume popup or other on-screen popups, so you'll still need to use your finger if you want to open a new QC window.
Navigating Text (no VoiceOver required)
If you're in an editable text field, you can of course navigate the text with the keyboard using the arrow keys. This works with or without VoiceOver, and is particularly handy when editing a long document in Pages. If you hold down the option key, you can use the left and right arrows to move the selection a whole word at a time, or use the up and down arrows to move an entire paragraph at a time. Control key? Use up and down arrows to jump to the beginning or the end of the document. As pointed out by TUAW's Erica Sadun, if you hold down the shift key, and wherever you move the cursor (with any of the modifier-arrow key combinations) will extend a selection rectangle that you can then use command-C to copy, command-X to cut, and command-V to paste. If you just want to cut or copy an entire field, command-A will select all, as you'd expect.
Web browsing with the Keyboard
Depending on how you set your "Web Rotor" settings above, you can use the keyboard to navigate through elements on a web page. In your browser, select a rotor setting (e.g. Form Controls) and press the up and down arrows. You will jump between all items of the selected type, one by one. Not totally practical, in my opinion, but if you do some light web browsing on your iPad while writing you could control-option-doubletap-H, switch to Safari, navigate around a little bit, and then go right back to writing without lifting your wrists. You can even double-tap on elements to zoom into them, just as if you had double-tapped with your finger. Sadly, I can't seem to select text on a page without using a finger (the shift-arrow combinations only work in editable text fields), but if you discover a way, please let me know in the comments!
[Thanks to this post by Erica on TUAW for inspiring this investigation]