23 February 2013

Swype vs Swiftkey Flow

I just commented on Land of Droid's comparative review of Swype vs SwiftKey Flow, and it struck me that my long comment about the differences that had been missed out in that review nearly amounted to a review in itself, so now that SwiftKey Flow is out of beta, here is my own take on the differences between the two.

Swiping vs. Tapping

I've long been a fan of swiping keyboards.  Over the years, I've tried a number of them, including TouchPal and SlideIT, but I've never been inspired to stick with them, and have come back to Swype. I know they're a Marmite thing - you either love them or hate them - but I find that tracing out words on the screen is far more enjoyable than stabbing at it repeatedly, and I can type much faster using them. Having said that, I had previously tried (and paid for) SwiftKey.  I didn't stick with it for long though; despite the clever predictions, I missed the swiping.

As a touch typist on a QWERTY keyboard, I don't watch my hands or the keyboard; I watch the screen, or look at whatever else I'm referring to as I'm typing.  This means that I've never been the type (pardon the pun) to keep stopping and checking what's just been entered (something that predictive keyboards rather rely on).  Whether I'm typing on a physical QWERTY, or tapping or swiping on a virtual one, that does mean that I'm going to make mistakes (with a QWERTY keyboard, you'll get the odd strange character; with anything that guesses or auto corrects, you'll sometimes get an entirely spurious word).  That's life.  Nothing's perfect.

Swype isn't available from the Play store. You have to either buy a device with it pre-installed, or join the beta test group and sideload it, which I've been doing on every device I've owned for as long as I can remember, going right back to my Nexus One.  It used to be pretty tortuous to get updates, but that's improved enormously in the last year or so.

However, I'd got frustrated with Swype sometimes being slow to load, so when the opportunity arose to join the SwiftKey beta test group and try out SwiftKey Flow, I jumped at it.

Swiftkey's alternative words (Pumpkin theme)
SwiftKey's alternatives for "Hello"
(Pumkin theme and "normal" height keyboard)
Swype's alternative for "Hello" (you can't see them all)

Of course, the first thing to note is that as with all virtual keyboards, Switfkey and Swype have chosen different layouts for their keyboards - not the basic characters, of course, but the punctuation and other characters.

I like SwiftKey's wide range of skins - I chose the Pumpkin theme - orange characters on a dark background, with the alternate characters picked out nice and clearly in white.  Swype has themes too, but not such a wide and varied range.  I also like the fact that SwiftKey allows me to have the arrow keys permanently on the keyboard (although they're only a swipe away in Swype); reducing the height of the keyboard in SwiftKey minimises the amount of screen real estate that this requires.

Having stuck with SwiftKey Flow for a month or two, I've found no significant difference in my personal error rate between the two keyboards (YMMV, depending on your use pattern) - they just get diffferent things wrong.  However, I've decided to go back to Swype.  My reasons for this are as follows.

Swype vs SwiftKey Flow - the devil is in the detail


First things first.  With any keyboard that has unusual or unexpected features, you may muddle along just fine by trial and error, but I prefer to learn how to get the most out of it.

Swype offers a tutorial when you first start it up.  If you choose to use it, it teaches you all sorts of useful gestures and helps you to get the best from Swype.  You can access the tutorial at any time by long pressing the Swype key and choosing How to Swype, and you can find out about Swype's gestures by choosing Gestures from the same menu.  There are also a number of well illustrated help pages on their website. 

In contrast, SwiftKey offers only a few short and fairly simplistic videos via a long press of the SwiftKey button, Settings, How-to videos.  Maybe it's because SwiftKey Flow doesn't have as many features to tell you about in the first place.  

Swiping in auto complete fields

In Swype you can swipe in fields where the app will autocomplete (e.g. URLs in the browser, email address in Gmail, and many more). SwiftKey disables flow in these fields.  There's been quite some discussion about this and Google's intentions for such fields in the forum, but so far SwiftKey are sticking to their guns.


Swype handles swiping of explicit punctuation.  As far as I can see, SwiftKey have completely ignored it.  I can swipe "e.g." in Swype using the path e>.>g>.  If I try that in SwiftKey I get ""en gb", which is not quite what I intended.  Worse, due to the way SwiftKey add spaces (see below), even if I tap e.g. in SwiftKey, I get "e. G.".  To get what I want, I have to tap "e.<backspace>g.", which hardly flows easily.

In Swype I can also easily add apostrophes etc. as part of the swipe (e.g. I can swipe "it's" using I>t>full stop>s - because the apostrophe is the alternate character on the full stop key, and Swype intelligently decides that it makes more sense in this context than a full stop). In SwiftKey there's no way that I've found to force an apostrophe (which is the alternate character on the "v" key) other than by long pressing "v". I happen to know the difference between "its" (belonging to it) and it's (it is), and it slows me down to swipe i>t>s and then have to check whether SwiftKey picked the right one for me.  And if I want to add "'s" to the end of a word (e.g. Julie's), Swype lets me swipe it. With SwiftKey I have to tap - and delete spaces and long tap at that.  It's just clunky.

Adding spaces

It's subtle, but Swype is the only keyboard I've used that does allow you to enable automatic spaces, but doesn't add the space at the end of a word until I move to the next one. This has a number of implications, but in general, it's more natural and involves less going back to remove spaces (and related capitalisation, in the case of spaces after full stops), and is particularly important when it comes to including punctuation. If I'm hyphenating two words, I don't want to have to type the first one, backspace, type the hyphen, and type the next one.  If I'm typing a URL or email address, I don't want to backspace after every full stop.

Word suggestions

SwiftKey seems reluctant to suggest words that start with a different letter, especially when going back to correct a word if you spot that it's got it wrong after the event. This tends to manifest itself most in words beginning with s, d or f, which are close together.  Also, SwiftKey only ever offers 3 alternatives.  Swype offers many more on a scrolling display.  For example, if I type "sorry" in Swype, I get the option to substitute worry, worrying, story, dirty, party, sorely, worth, Larry and sporty.  Quite a varied list!

Keyboard shortcuts/gestures

Swype has keyboard shortcuts (or gestures, if you prefer) for a number of useful things, such as select all (Swype symbol to A), cut, copy and paste (Swype symbol to X, C and V, respectively). That works a lot better than long tapping  on the screen, hoping that Android doesn't select some text when you wanted some empty space to paste into, etc.).

You can get to the numeric keypad (as opposed to the "alternate" keyboard) by swiping from Swype Symbol to 5, or by long pressing the number (123 +!=) key.

Swiping from the backspace to the space bar prevents a space from being added after this word, so you can "build" a longer word.

Swiping from the Swype Symbol to the number key brings up what Swype refer to as the Edit keyboard, which includes the arrow keys for precise positioning in text, plus buttons for cut, copy, paste, space, backspace, new line, and others.

You can change the capitalisation of a word by selecting it and swiping from Swype Symbol to the shift key.  Swype offers 3 variations of the selected word: word, WORD or Word.

Swype has other gestures too, but these are the ones that I use the most.  

Explicit Capitalisation

Most keyboards allow you to choose automatic capitalisation at the start of a sentence or new line.  In general, I find that it's an option that works well for me.  However, sometimes you need an initial capital letter for other words, such as proper names.  Julie will normally get capitalised properly anyway, but Mark is a word as well as a name, so needs to be done explicitly, and there are many other situations where you might choose to type a capital letter for a word that wouldn't normally need one.  Swype allows you to swipe up past the top of the keyboard to capitalise a letter. SwiftKey requires you to tap the Shift key, just as you would if you were using a normal (non-swiping) keyboard.  It's a small thing, but one more little interruption to the flow of swiping.

Word deletion

At the end of a word, if you press backspace in Swype, the whole word is deleted.  This can be a blessing or a curse.  To delete just the last letter, you first have to add a space.  In SwiftKey Flow, you can long press the backspace key in SwiftKey Flow to delete a word - just make sure you let go of it before it starts repeating the word delete!  (SwiftKey's normal swipe left to delete gesture is disabled if you enable Flow - for obvious reasons.)  In Swype, holding the backspace key repeatedly deletes singles characters. 


All in all, I admire SwiftKey's contextual predictions, and their predictions for the next word in a sentence - although Swype is catching up with this feature too.  However, in day-to-day use, I find that both give me roughly the same number of incorrect guesses, and I find Swype's approach, and particularly a number of their gestures too useful to give up.

Swiftkey's suggestions for the next word
SwiftKey's suggestions for the next word
Swype's suggestions for the next word
Swype's suggestions for the next word
I would love to see Swype adopt some of SwiftKey's contextual information for word selection though - maybe it would give it the ability to better decide to use "or" rather than "our" more often.  I'd also like the ability to remove obscure words from the built-in dictionary (or at least some way to persuade Swype that they're a pretty unlikely choice).

All in all, I think I'll be going back to living with the occasional slow loading.

Versions reviewed:
SwiftKey Flow
Swype Beta
Post a Comment