Advanced(!) text macroing and cursor movement on iDevices

You may well know the built-in Settings > General > Keyboard > Shortcuts feature allowing for using short shortcuts to get the system entered a predefined, even long string into the current cursor position, no matter what program you're in. In this article, I present you with more advanced forms of text macroing with particular attention being paid to inserting the current date and/or time with as little effort as possible.

If you know older but, in many respects, not necessarily worse mobile operating systems like Palm OS and Symbian, you well know these systems offered dynamic(!) macroing capabilities out of the box (without third-party tools), allowing for, among other things, quickly entering the above-mentioned date/time.

Apple's iOS running on iPads, iPhones and iPod touches, unfortunately, is still (as of the just-released iOS 6) incapable of this, as you've seen, on several other mobile operating systems widely supported functionality. (There's a dedicated thread to this problem HERE, directly comparing iOS to the above-mentioned operating systems.) The above-mentioned Settings > General > Keyboard > Shortcuts only allows for entering static strings that will be presented to the user as is. In addition, iOS being very-very restricted, you can't write a tool that would offer this in all applications, including Safari and Notes. At least not without jailbreaking.

In this article, I examine the currently available ways of using date/time shortcuts to make your life much easier, particularly when you need to do it very frequently. (An example of this is using the excellent Safari tweak “WebOffline” (the subject of my next article) where, to avoid saved page overwriting and timestamping, this feature would be very useful.) Let's start with the only real AppStore solution (that is, one not requiring jailbreaking), TextExpander.


As you may, also based on the introduction above, already have guessed, this, otherwise, excellent application (homepage; AppStore link; $4.99) doesn't offer system-wide macroing capabilities. Consequently, you can't use its for example date insertion macros in Apple's stock applications like Safari or Notes, only (some) third-party apps actively developed with being macroable via TextExpander kept in mind. (See THIS for their list. Note that, among other apps, the top-tier OneNote or Evernote doesn't have TextExpander support and the latter is unlikely to receive it ever (dedicated thread)).

If you need excellent macroing capabilities in one of the apps listed above, TextExpander is a very nice and comparatively cheap app with, among other things, date/timestamping capabilities:

(see the second list item)

However, if you need advanced macroing in other apps (the stock Safari, Notes, Apple's office apps (Pages, Numbers, Keynote) or even the above-mentioned One/EverNote), you just can't avoid jailbreaking your iPad and looking for system-wide macroing / shortcut apps in Cydia. Fortunately, there are a few of them.


One of the Cydia apps I heartily recommend is KBShortCuts ($2.50). To learn what it's capable of, you really want to check out THIS video.

(Cydia main page, shown under Manage Account > Installable Purchases. As with all the other shots in this article below, click for the original, large version.)

I've found it excellent on my iOS 5.1.1-based iPad 3 if you plan to use it for what the above video shows. It has no problems with quick cursor movement / repositioning, unlike with SwipeSelect (see the 06/17/2012 update HERE for more info on the problems of SwipeSelect and why I, back then, recommended the free SwipeShiftCaret instead of it).

HOWEVER, you can't use it for date – or, for that matter, any kind of dynamic – insertion. The following screenshot shows I've tried specifying an RFC 3339 (the timestamp definition string standard)-format macro (see “Quick Text 0), along with the format the above-discussed TextExpander uses (see “Quick Text 2”):

Unfortunately, all these dynamic macro strings are inserted verbatim into the target. Which is regrettable, as KBShortCuts's insertions work considerably faster than those of Xpandr 2, particularly if you plan to expand a shortcut inside (or, in front of) another string. In the latter case, you need to insert a space first after the insertion point, position back the cursor so that the insertion is trailed by the just-inserted space and start entering the shortcut string. This means a lot of additional screen taps even if you use cursor positioning shortcuts like those of the just-discussed  KBShortCuts – for example, Space+J to quickly go back one character.

So, let's take a look at the macroing app that is actually capable of inserting date macros – and, for that matter, even the output of system-level scripts!

Xpandr 2

This commercial app ($2.99; purchasing Xpandr 2 also automatically provides you with a free license to the iOS 3 and 4-only Xpandr (1)) has, as has been pointed out, macroing and external script running capabilities.

(Cydia main page, also shown under Manage Account > Installable Purchases. I've annotated the part of the description explaining it's also fully compatible with RFC 3339 timestamp definition templates.)

It's different from the above-discussed KBShortCuts in that it operates on the shortcuts you define under  Settings > General > Keyboard > Shortcuts; that is, the same location you'd provide the vanilla iOS with your (of course, non-dynamic) shortcuts. Just enter your timestamp / script execution macros as you would do with your standard shortcuts. An example showing (see the annotation) three timestamp macros conforming to  RFC 3339 and also the usual “On my way” shortcut:

Basically, you don't need to do anything under the setting view of the app itself under Settings > Extensions > Xpandr, as opposed to the just-discussed KBShortCuts, which expects all its input configuration data strictly under Settings > Extensions > KBShortCuts:

There is only one very important switch here: “Expand Immediately” at the top right. If you disable it (it's enabled by default), you'll always be asked before macro / shortcut expansion instead of the system just doing it. Then, if you do need the expansion, as you'd do with iOS' recommendations, just tap Space or Enter.

The following screenshot shows editing an item in Safari's bookmark (in this case, WebOffline's saved page list in the “Saved pages” section of the bookmarks) by entering the shortcut “ddc”:

As you can see, instead of automatically expanding the shortcut,  Xpandr shows what it's going to insert. If you compare the time shown at the top center of the screen and the text-to-be-inserted shown by Xpandr, you can see that the latter indeed contains the (then-current) hour (13) and minutes (37) properly – along with the month (the leading “10”), day (“07”) and seconds (the trailing “40”).

By the way, here, I've chosen “c” because it's the first letter of “condensed” - and this date IS condensed to contain as much information as possible in the shortest but still human-digestable string. If you look at the other two RFC 3339-format templates I've shown in the second screenshot of this section, they take either much more space (ddf, where “f” stands for “full”) or only show the date but not the time (ddd, “d” standing for “date”). (The latter isn't the best way for saving pages with  WebOffline – as you'll see in my next article.)

Compatibility with external keyboards

Xpandr is compatible with hardware keyboards; KBShortCuts isn't. Nevertheless, you don't really need the latter when operating a true keyboard: after all, you can use the cursor movement keys there; for example, Cmd + left to jump directly to the beginning of the current row and the like.


The two Cydia tweaks co-exist on the same iDevice just fine. Actually, for tasks like the above (quickly going to the beginning of a text shown in a one-row dialog like the above in the Safari screenshot and inserting the current date+time there), a usage combination of the two tweaks is the best:

1, Space+q to immediately jump to the beginning
2, tap space to insert a space there
3, another Space+q to position the caret in front of the just-inserted space (alternatively, you can use Space+j in here too as it's only one character to step over)
4, enter “ddc”, which invokes Xpandr, which, by default, automatically inserts the result of the template evaluation.

All this can be done in, if you start to master the shortcuts, in mere 2-3 seconds. Now, imagine what would happen with the standard tools plain iOS gives you: scrolling with the standard and very slow method of the magnifying glass and entering the timestamp manually – well, it can easily take more than a minute(!). When doing several such timestamp insertions on your iDevice a day (say, you frequently save Web pages using WebOffline and want to make sure none of these saved pages are overwritten – again, I'll dedicate a separate article to this question very soon), you can easily see why installing and learning these tweaks can be really beneficial.

Master your iPhone in one minute a day: Sign up here to get our FREE Tip of the Day delivered right to your inbox.

<p>Werner Ruotsalainen is an iOS and Java programming lecturer who is well-versed in programming, hacking, operating systems, and programming languages. Werner tries to generate unique articles on subjects not widely discussed. Some of his articles are highly technical and are intended for other programmers and coders.</p>
<p>Werner also is interested in photography and videography. He is a frequent contributor to not only mobile and computing publications, but also photo and video forums. He loves swimming, skiing, going to the gym, and using his iPads. English is one of several languages he speaks.</p>