Skip to content
A fully gesture-driven keyboard concept for Android
Java C Makefile sed
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

A fully gesture-driven keyboard concept for Android

(NOTE: This project hasn't been maintained for quite a time, so some features may not work on newer Android versions!)

CompassKeyboards main goal is to enable entering any character (including international characters and symbols of computer languages as well) with the same layouts. Default layouts support Latin- and Cyrillic-based and Greek character sets, user-defineable external layouts are supported as well.

For entering a plain character just 'grab' a key and drag it to some direction, for entering some accented ones, do a big swipe across the whole keyboard :)! Depending on the direction of the big swipe, you can choose different sets of accenting.

For choosing a different layout, do a big swipe from the top-left corner of the keyboard across to bottom-down, and choose a layout from L0 to L6 (L0:Latin, L1:Cyrillic, L2:Greek, L3-L6:Custom).

To get a visual feedback about the symbol you are about to enter, visit the entries 'Feedback/Normal feedback' and 'Feedback/Password feedback' in the Settings menu, and choose either Toast or Highlight.

Supported Latin-based languages: Afrikaans, Albanian, Azeri, Belarussian, Bosnian, Croatian, Danish, Dutch, English, Estonian, Faroese, Finnish, French, German, Hungarian, Icelandic, Irish, Italian, Kurdish, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Scottish, Serbian, Slovakian, Slovenian, Spanish, Swedish, Tatar, Turkish, Vietnamese, Welsh

Supported Cyrillic-based languages: Belarussian, Bosnian, Bulgarian, Kazakh, Macedonian, Russian, Rusyn, Serbian, Ukrainian, Tajik, Tatar.


As soft keyboards are not for touch-typing, neither the usual 'qwerty' nor the dvorak layouts would make sense, so the keys are arranged by functional groups, the letters in alphabetical order, and the accented characters are available as modifications of their base character.

Supporting these many characters would require quit a lot of keys, way too much for a soft keyboard, so the functions of the keys had to be extended: in addition to tapping on them, you may 'drag' or 'swipe' them to the eight direction of the compass as well, the letter generated by a key will depend on the direction to which you dragged it. These strokes don't need to be long, just start them inside of the key and end on the outside of it.

This behaviour will let you enter nine times more characters than an usual tapping-only keyboard, although it may require some time to get used to it (thanks to the alphabetical ordering, the learning curve is quite steep).

Built-in layouts

Currently CompassKeyboard has three built-in layouts, one for the Latin-based alphabets, one for the Cyrillic-based ones and one for the Greek alphabet.

You may switch between the layouts (built-in or custom as well) without leaving the keyboard, just do a big swipe across the keyboard from top-left to bottom-right ('Spec' global swipe, see below) and choose one of L0..L5 on the top-leftmost key.

Global swipes

Especially for the Latin alphabet, in addition to the base characters there are quite a lot of accented ones in use: acute, circumflex, grave, double grave, diaeresis, hacek, macron, dot, ring or tilde are the most usual, but some languages use stroked letters as well. CompassKeyboard supports even these, all of them, still in one single layout. As these many characters would require too many keys, even of the 9-directional kind, so another feature had to be introduced: the global swipes.

If you make a large diagonal swipe from one corner of the keyboard to the opposite one, or one from the center top to bottom, or from the left side to the right, or the reverse, you activate an 'accented mode', similar to pressing a shift key on a regular keyboard. In these accented modes the base characters change their behaviour and their look, they will show and generate the accented version of the base character. A global swipe affects only the next keystroke, but if you would like to revert to the normal mode without entering any character, just tap/drag any character that has no function in this accented mode.

If you would like to enter uppercase accented characters, just tap shift first and then activate the required accented mode by its global swipe.

You can’t perform that action at this time.