/thumb-key

A privacy-conscious Android keyboard made for your thumbs

Primary LanguageKotlinGNU Affero General Public License v3.0AGPL-3.0

GitHub tag (latest SemVer) status-badge GitHub issues License GitHub stars

phone_screen

A privacy-conscious keyboard made for your thumbs

Report Bug · Request Feature · Releases

Get it on IzzyOnDroid Get it on F-Droid

About Thumb-Key

Thumb-Key is a privacy-conscious smart keyboard, made specifically for your thumbs.

It features a 3x3 grid layout, and uses swipes for the less common letters. Its easy to learn, and designed for fast typing speeds.

Instead of relying on profit-driven, privacy-offending word and sentence prediction for accuracy, as do most popular phone keyboards like Gboard and Swiftkey, Thumb-Key uses large keys with predictable positions, to prevent your eyes from hunting and pecking for letters.

As the key positions get ingrained into your muscle memory, eventually you'll be able to approximate the fast speeds of touch-typing, your eyes never having to leave the text edit area.

This project is a follow-up to the now unmaintained (and closed-source) MessageEase Keyboard, which is its main inspiration.

Features

  • Highly configurable.
  • Customizeable sizing, ThumbKey and MessageEase layouts, dynamic / Material v3 themes, animations, haptic feedback, and audio feedback.
  • Open source, AGPL License.

User Guide

  • Tap, or swipe to type a letter.
  • Swipe up or down on A to capitalize. (If you changed the layout, the button next to #)
  • Double tap the space bar to type a comma, triple tap to type a period. More taps have more punctuation.
  • Swipe left on the backspace key to delete whole words to the left of the cursor.
  • Swipe right on the backspace key to delete whole words to the right of the cursor.
  • Swipe left or right on the spacebar to move the cursor by 1 character.

Emoji Key

  • Tap to access the emoji picker
  • Swipe up to configure Thumb-key
  • Swipe right to change keyboard position
  • Swipe down to access IME switcher (switch between Thumb-key and other keyboards)
  • Swipe left to cycle between selected layouts (languages).
  • Swipe to bottom-left to toggle voice input. Requires FUTO Voice Input.

Symbol (#) Key

  • Tap to access numbers & symbols
  • Swipe to top-left to select all
  • Swipe up to copy - If nothing is selected, all the text will be copied.
  • Swipe to top-right to cut - If nothing is selected, all the text will be selected and cut.
  • Swipe right to redo
  • Swipe down to paste
  • Swipe left to undo

Slide gestures

Enabling Slide gestures in keyboard settings will enable the following continuous sliding gestures:

  • Slide spacebar horizontally to move cursor position left and right.
  • Slide upwards while sliding the spacebar to select text.
  • Slide backspace to the left to select text to be deleted. Text will be deleted when key is released.

Enabling Spacebar: Allow normal swipes to work with slide gestures, in keyboard settings will enable the following:

  • Swipe left and right to move the cursor by a single character.
  • Swipe up and down to move the cursor up or down a line.
  • Allow us to use the other characters on the spacebars in the typesplit layouts.

Enabling Backspace: Allow normal swipes to work with slide gestures, in keyboard settings will enable the following:

  • Swipe left to delete whole words to the left of the cursor.
  • Swipe right to delete whole words to the right of the cursor.

Other

  • Practice typing, and check your words per minute, using monkeytype.com

Thumb-Key Design

A History of Phone Keyboards

Physical keyboards, with the full-size QWERTY layout, were not designed for use on small devices like phones; they were designed specifically for 10 fingers resting on a keybed, sitting on a secure surface. Phones must be held with the fore-fingers and palm, or held with one hand and typed with the other, leaving only 1 or 2 thumbs (as opposed to 10 fingers) free to perform key-presses. As texting came into being, word prediction came to be seen as the best solution to slow input speeds.

On phones that used the 9-key numeric layout, T9 predictive text was used. Other phones used the full-hand layout with the familiar QWERTY layout, with other proprietary predictive methods.

When phone keyboards became Keyloggers

As phones moved from physical buttons to soft-keyboards, key sizes became smaller and taps more imprecise and error-prone, with better predictive technology picking up the slack.

Smartphone companies like Apple and Google, in an attempt to better their word prediction algorithms, as well as collect potentially profitable information on what their users were typing, began submitting and aggregating all their user's key-taps to their servers, violating user's privacy in the process. Known as Keyloggers, and seen as universally malicious programs on desktop computers, these apps unfortunately became normalized and seen as a necessity on phones.

The lack of innovation on phone keyboard design, is best explained by the potential profitability these companies stand to gain by collecting and aggregating everything a user types; including the commodification of this data directly, or information and trends about you learned from this data, that they can sell to advertisers and 3rd parties. These could include your buying preferences, preferred websites, what you most commonly talk about with friends, and everything you type into search bars and text boxes.

As of today, phone keyboards are in such an abysmal state of privacy, that there aren't many keyboards left that can guarantee not to be logging all of your keystrokes.

MessageEase

As a testament to the stunning lack of innovation on both desktop and phone keyboards, the QWERTY layout from the 1880s is still the dominant layout, even on smartphones in the 21st century.

One company named Exideas created a keyboard app called MessageEase, which relied on the original large 9-key grid of old phones, and managed to achieve comparable fast typing speeds to other keyboards, without relying on big-data-powered word-prediction.

Much research went into MessageEase's design, and many of its users can do > 50 words per minute.

MessageEase is unfortunately unmaintained, and Thumb-Key uses a better alternating-thumb layout letter position (although the original MessageEase Keyboard layout is available in the settings).

Thumb-Key Letter Positions

  • Large keys are in a predictable 9-key grid. Eventually, you should be able to keep your eyes on the text input area, rather than hunting-and-pecking for letters, approximating touch-typing.
  • Letter positions are based on English text letter frequency. The most common letters are: ETAOINSHR. These 9 letters alone make up ~70% of all English text.
  • First 9 letters by frequency are the 9 center key taps. The next 8 are swipes to the center. The next 8 are swipes on the center hub key. Z is last.
  • Alternate thumbs for vowels and consonants (Vowels on right side of keyboard, consonants on left). This naturally results in fast digram speeds.
  • Prioritize bottom, and right side of keyboard. So EAO should be on the right side, and bottom to top, while TNS is on the left side.

Built With

Installation / Releases

How do I add my language or layout?

I'd be happy to accept additions to add more languages, and layouts. To start:

  • Read the letter position guidelines above. This means you'll likely need a letter frequency chart for text written in your language.
    • The general rule is: popular vowels on the right, bottom to top, consonants on the left.
  • Copy this file, or another sample keyboard from the same folder.
    • Change the characters to whatever you'd like.
    • This file contains both a shifted, and non-shifted keyboard, so make sure you take care of both.
    • You can also add or subtract columns if you want, but the layout must remain a grid. I highly recommend sticking with the 3x3 layout.
  • Add the new keyboard to the KeyboardLayout.kt file, with a new higher index.
  • Either open a pull request, or an issue, linking your new keyboard file. I'll handle the rest of the work.

Theming guide

To add a custom theme:

  • Use google's Material 3 custom theme generator, and save your Theme.kt file.
  • Copy the theme into Color.kt like the others.
  • Add the theme to the ThemeColor enum in Types.kt
  • Add a translation string in strings.xml for your theme name.
  • Add the theme to the colorPairs in Theme.kt

Support / Donate

Thumb-Key will always remain free, open-source software. We've seen many keyboards (and open-source projects in general) go unmaintained after a few years. Recurring donations have proven to be the only way these projects can stay alive.

Your donations directly support full-time development, and help keep this maintained. If you find yourself using Thumb-Key every day, consider donating:

Crypto

  • bitcoin: 1Hefs7miXS5ff5Ck5xvmjKjXf5242KzRtK
  • ethereum: 0x400c96c96acbC6E7B3B43B1dc1BB446540a88A01
  • monero: 41taVyY6e1xApqKyMVDRVxJ76sPkfZhALLTjRvVKpaAh2pBd4wv9RgYj1tSPrx8wc6iE1uWUfjtQdTmTy2FGMeChGVKPQuV
  • cardano: addr1q858t89l2ym6xmrugjs0af9cslfwvnvsh2xxp6x4dcez7pf5tushkp4wl7zxfhm2djp6gq60dk4cmc7seaza5p3slx0sakjutm

Social / Contact

Android IME Resources