Day 18: Editing

Today, as was also suggested the other day, and also as a follow-up from yesterday’s post, I will talk a bit about how editing works in Android. Note, however, that your results may vary. This is fairly new, in fact these editing functions didn’t even exist yet when I did my initial experiment last year, and some of this stuff requires Android 4.3 or newer. So if you’re on an older version, even though TalkBack may be up to date, it could be that these described functions aren’t available to you.
For this example, I am using an app I use often, the Twitter app, and am composing a new tweet. But first, let me quickly back up and talk about the global and the local context menu functions TalkBack offers. These are menus that come up if you do a double-motion gesture. For the global context menu, the gesture is down, then right, for the local context menu, which we will be using, it is up, then right. These gestures require a lot of practice, and even though I’m pretty skilled with them now, they still have a tendency to fail, as do the other double-motion gestures to bring up the notifications, simulate the Back button, etc.
Once either of these menus is activated successfully, which is indicated by a slightly ascending series of popping sounds, the screen accepts a gesture that is basically a circular motion of one finger. So you place your finger roughly at the top left and move in a circle clockwise or counter-clockwise to explore the available options. In the global context menu, these are:
<ul></ul>Pause feedback: This will pause talkBack feedback and turn off explore by touch. It can be reenabled by locking and unlocking the device, or trough notification center, although that might require sighted assistance.<ul><li>Read from top: This will start reading screen items from the top left. In some applications, it may also scroll the screen if possible. In Firefox, you can read whole web pages with this.</li><li>TalkBack Settings: A quick way to access TalkBack settings.</li><li>Spell last utterance: Self-explanatory.</li><li>Read from next item. Uses the last item you touched as a reference, and starts reading from the next item. You can touch the heading  of an article on a web page, for example, do the down, then right gesture, and choose this item to read the article, including scrolling. Note that it doesn’t suppress the earcons while doing so, you’ll hear it happily slowly ascending as it scrolls.</li><li>Quick navigation menu: Grabs all items currently visible on the screen and puts them in a circular menu and allows to quickly jump to it.</li><li>Cancel, which is in the center of this circle, not part of it: Exits the menu.</li></ul>To actually execute one of those menu items, lift your finger, similar to a keyboard key. In the case of the Quick navigation menu, this will open another such menu, indicated by another series of ascending pops.
The Global Context Menu is pretty static. The local context menu, however, is not. There are a couple of items that appear regularly, such as:
<ul><li>Change Granularity, which effectively changes what left and right swipes move by. The options usually are Default, Character, Word, Line, Paragraph, and page. In some situations, this menu immediately appears when nothing else is available, in other cases, it appears as one of the sub menus on the main local context menu.</li><li>Cursor control menu: This is only available in text fields, and only if something is input. This is where all the below magic happens. It offers some common functions such as moving to beginning and moving to end. Other items are inserted and removed dynamically, depending on whether text is selected or not.</li></ul>The Change Granularity menu also applies when in text fields, where it actually controls the cursor. If you’re familiar with how editing works in iOS, this is not dissimilar. Rotor settings of character, word and line also move the cursor when focused on a text field when up and down flicks are used.
So now let’s do a bit of editing. Going back to Twitter, I start a new tweet by focusing and double-tapping the “What’s happening?” item at the bottom of the Home timeline. I then enter something bogus like “This is a test.”
What I want to do now, is change “is” into “may be”. To move my cursor to the word “is”. After I have typed my sentence, I do an up, then right motion gesture to bring up the local context menu and select Change Granularity. In the sub menu, I change to Words Granularity.
Next, TalkBack announces that “test” is the current word. I swipe left twice until I hear the word “is”.
Next, I enter the local context menu again and select Cursor Control menu. From this sub menu, I select Start Selection Mode.
This will change how my left and right swipes work yet again. In this mode, every swipe in one direction selects text, a swipe in the other deselects. So if I start swiping right, the selection will be extended in the forward direction. Sweeping left will unselect. If I start sweeping left, it will select backwards, and swiping right will unselect.
I then swipe to the right. And here’s a gotcha! The granularity we selected above is still in effect. It now selects the whole word “is”, excluding the space character following it. In this case, this is what we wanted anyway, but if you want to select by character when you first moved by word to get to where you wanted, you have to change the granularity to character before starting to select something. Note also that TalkBack didn’t announce that the word “is” got selected. It only spoke the word.
Now that “is” is selected, we can type the m for maybe. The keyboard is still visible. TalkBack will then say something like “is replaced by m”. We can then continue to type the other characters for “may be”. Remember that we’re still not at character granularity yet, so I will switch to it now via the local context menu and the Change Granularity sub menu, to be able to proof-read what I just typed. I am told that I am on a space character, and can swipe left and right to check that “is” actually got replaced by “may be” as I intended.
And here’s the next gotcha! Selection mode didn’t end when the selected text got replaced by what I typed. So my proof-reading actually caused the text I swiped over to get selected. I have so far not found a way to read only the selected text in a text field. It doesn’t get indicated when selecting or unselecting, when swiping to the field again from another control, etc. The fact that selection mode didn’t end when I selected the text inadvertently can lead to some serious data loss when one doesn’t remember to explicitly turn off selection mode first. And what makes this even worse is that there’s no undo functionality that I can see. So if I had, say, accidentally hit a key and replaced 3 paragraphs of text with a period, there is currently no way to undo that. I tried the local context menu of course, shaking the device or looking on the keyboard for an undo function. Nothing. Excuse me, but this is scary!
Back to some more explanations: If text is selected, the Cursor Control menu receives a few more items such as Cut and Copy, and if something is on the clipboard, also a paste item. So this menu is pretty dynamic and indeed very context sensitive.
Conclusion: Editing is now certainly possible, but there are a few gotchas that one really needs to be aware of that are not immediately obvious. In fact, if not careful, they can lead to serious data loss. For one, selection mode has to be terminated explicitly. Second, selected text is not indicated. Third, there is no undo function, or it is so well hidden that I haven’t found it. The Change Granularity sub menu, at least on my device, also had a tendency to change the location of items, so the different granularity levels didn’t always appear in the same location, or item order, as at other times. When one has to concentrate on keeping track of the selection mode, selected text and other parameters, this fact doesn’t really help much. :/
I tested this on both my Nexus 5 running KitKat as well as the work nexus 7 running Android L preview. Both show the same behavior.
My conclusion is that, while editing is certainly possible, it has so many unpolished items where I have to fight the quirks of the technology rather than getting actual work done, that it is standing in my way more than helping me be productive.

Accessibility is for everyone @MarcoInEnglish