Earlier today, Google released a relatively minor update to its keyboard application with only one really useful change: numbers in the top row on tablets. While the update itself is indeed not too significant, it did manage to bring several interesting half-baked under-the-hood bits which aren't quite ready for consumption. These are exactly the kinds of bits we like here in the AndroidPolice teardown kitchen.

Armed with some of Ron's initial findings, my teardown partner Santiago Rosales and I dug into the innards of the v1.1 APK. Here's what we discovered.

Space-aware gestures

Remember SwiftKey's Flow Through Space which lets you swipe through multiple words without lifting a finger by swiping through the space bar? I bet this feature, when it's ready, will be exactly the same or very similar. It's marked as confidential in the strings.xml - so mysterious!

<string name="gesture_space_aware">Phrase gesture (Confidential)</string>

<string name="gesture_space_aware_summary">Input spaces during gestures by gliding to the space key</string>

There is a function called forceSetEnableSpaceAwareGesture() that enables space-aware gestures, but from what I can tell it's currently limited to only users with @google.com accounts, meaning Google employees.

External dictionary packs

Google Keyboard v1.1 adds support for adding external dictionary packs, which could mean two things:

  1. Updating existing language packs without requiring an app update (though I don't think this is the primary purpose of this function).
  2. More likely: loading additional language packs straight from the web. I'm guessing you will be able to load rare languages that don't ship by default this way, or maybe Google will even strip most languages in the future and make everything downloadable, which is exactly how SwiftKey behaves. This will slim down the APK quite a bit.

After digging around some, we found that Google has created a site that is currently hosting three external language packs for these locales: fa (Persian), in (Indonesian), and iw (Hebrew). Downloading these from the Android device pops up a dialog that lets you install the packs right from the browser. Here's what it all looks like:

<activity android:name="com.android.inputmethod.latin.debug.ExternalDictionaryReaderActivity">

<intent-filter>

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="https" android:host="sites.google.com" android:pathPrefix="/site/languagemodel" />

</intent-filter>

</activity>

Auto-space adjustment

Google tweaked the space behavior around punctuation slightly and removed the "*" character from both symbols_preceded_by_space and symbols_followed_by_space. These variables now have the following values:

<string name="symbols_preceded_by_space">([{&amp;</string>

<string name="symbols_followed_by_space">.,;:!?)]}&amp;</string>

XXHDPI support

A folder with xxhdpi drawables has been added to better support extra-extra-high-density screens (480dpi), such as the Xperia Tablet Z, Xperia Z, HTC One, Galaxy S4, etc.

New translation - Georgian

Google added a new translation language for the ka locale, which happens to be Georgian. Georgian looks absolutely crazy to me - it's probably the hardest to visually parse language I've ever seen.

Maybe new? Personal dictionary now separates languages and has the a For all languages section

This one is weird and I could only reproduce it on the Nexus 4. The Personal dictionary settings menu is now split into individual languages. There's also a global For all languages section that applies to everything. On all my other devices, there is no such separation, before or after the update. Weird.

Personal dictionary supports text expansion and is one of my favorite features of the Google Keyboard.

The Debug menu

The Debug mode has been in the app for a while now, but it's now gained a few options. It's activated by starting a hidden activity called Android keyboard debug settings (the easiest way is by using Nova Launcher -> Shortcuts -> Activities -> Google Keyboard).

Inside, we have several toggles: debug mode, enable user feedback, keyboard theme, force non-distinct multitouch, usability study mode, and read external dictionary file. The latter option gives us an alternative method of loading external dictionaries that I mentioned earlier.

The debug mode is more interesting. Unfortunately, it doesn't seem to unlock much in the main app, but it does do one thing. See those tiny numbers and the + sign above suggestions? Those correspond to probability values and the "word missing - tapping it will add it to the personal dictionary," respectively. It's nothing groundbreaking, but it does offer us an interesting and rare insight into the prediction engine.

The other values are kind of boring. Oh yeah, the themes are still there (we've been able to change them for a few years now). There aren't any new ones, unfortunately, but I'll recap them all below anyway, for the unaware ones among you.

Thanks to Santiago Rosales, my teardown partner, for his help once again!