Skip to content

Releases: sspanak/tt9

v60.0

02 Feb 10:30

Choose a tag to compare

Alternative Voice Input Method Support

v60.0 adds support for alternative voice input methods, brings dictionary updates, and fixes several bugs. It also marks the end of support for Android 5 and 6. Future app versions will work only on Android 7 or higher.

What's changed

  • Languages:
    • Bulgarian: fixed the spelling of "стена", and added "кьоря" forms
    • English: added new brand names, and removed a missed slur
    • added a couple of brand names to all languages that use the Latin alphabet
  • Features:
    • added alternative voice input method support (#659)
    • letter suggestions are now hidden by default in ABC mode + added a setting for that
  • Bugs:
    • fixed voice input getting stuck on loading (#1010)
    • fixed the InputMode key switching the modes in random order in some languages
    • disabled automatic dictionary loading when Predictive mode is disabled
    • fixed the filtering stem being incorrectly extended on every key press
    • fixed holding the on-screen keys not working on some devices (#1004)
    • fixed the clipboard list remaining visible after sending pasted text in messaging apps
    • fixed the drag-to-resize option not coming into effect sometimes
    • disabled auto-space and auto-capitalization in limited input fields (e.g. Termux) (#1014)
  • updated the documentation

Full Changelog: v59.0...v60.0

v59.0

08 Jan 08:49

Choose a tag to compare

Retro Layout, ABC Mode Improvements, and More Holiday Goodies

v59.0 introduces a new, simpler "Retro" layout that makes touchscreen typing feel even closer to classic Nokia phones. It is also a solid replacement for discontinued T9 keyboard apps such as Old Keyboard and Big Old Keyboard.

This release also adds auto-spacing and auto-capitalization to ABC mode, expands the clipboard to hold up to 20 items, improves word suggestions, and updates the Bulgarian, English, and French dictionaries. As always, it includes many bug fixes and small improvements requested by the community.

IMPORTANT: If you have downloaded an APK before 12 January 2026, please download again and reinstall. The original ones were defective and should not be used.

What's Changed

  • Languages
    • Bulgarian: added new and deleted several nonsense words
    • English: added "CRT" and "Creedence"
    • French: added new combining words with dashes like "-entendu", "-midi", etc (#971)
    • Thai: it is now possible to accept words with Space, like in other Asian languages (#916)
  • Bugs
    • fixed a rare crash when typing something, then quickly deleting it
    • fixed more issues with the on-screen keyboard height and bottom space on Android 15 and 16, especially on Samsung devices.
    • fixed occasional crashes when rotating the device while typing
    • disabled auto-capitalization in URL and email fields
    • fixed the UI not showing up when replying to or forwarding an email in the Gmail app on Android 16 (#963)
    • fixed word recomposition not working when the word is preceded by punctuation marks (e.g., French: l'album) (#969)
    • fixed selecting the 1-key character group with a touchscreen tap, not erasing the last selected character from the ungrouped list (#970)
    • prevented Undo and Redo from closing the clipboard in some apps due to an undetected connection restart
    • fixed wrong labels on 0 and 1 in decimal number fields (#975)
    • fixed selecting a special character group not erasing the previously selected ungrouped character in ABC mode
    • added an automatic compatibility mode for apps that cause typing issues, like eBay and Deezer
    • fixed the currently displayed Settings screen not being preserved when rotating the device
    • fixed a rare crash when using Voice Input
    • fixed text size miscalculations causing oversized text on the 0-key and tiny text on all other keys when rotating the device
    • unspecified numeric inputs are now considered to be of type signed decimal instead of positive integer (#975)
  • Features
    • added a new "Retro" layout (#929)
    • added Auto-Space and Auto-Capitalization options to ABC mode
    • the clipboard can now hold up to 20 items, instead of only one
    • added a "Double-Tap to Resize" setting (#942)
    • added a setting to visualize hardware key presses on the screen (#988)
    • improved the accuracy of the word pair-based suggestions
    • significantly reduced typing lag when Auto-Space and Auto-Capitalization are on, especially if there is a lot of text on the screen
    • disabled word adding when Predictive mode is disabled
  • Technical
    • optimized on-screen key rendering speed
    • reorganized Settings screens
    • code cleanup
    • improved translations
    • Readme and Manual updates
    • updated com.android.application: 8.13.1 -> 8.13.2

Full Changelog: v58.0...v59.0

v58.0

08 Dec 07:43

Choose a tag to compare

Critical Regressions

  • fixed multi-threaded suggestion loading, causing Korean to malfunction (v57.0 regression) (#936)
  • constrained the Firefox visibility hack to only Firefox, because it caused the UI to appear in calculators and whatnot (v57.0 regression)
  • removed an unnecessary piece of code related to custom emojis

Full Changelog: v57.0...v58.0

v57.0

03 Dec 09:40

Choose a tag to compare

Real-Time Voice Input and Bugfixes

The highlights of this release are: real-time transcription and automatic capitalization when using Voice Input, the possibility to add words with digits to the custom dictionary (e.g., "mp3"), real-time preview when adjusting the appearance settings, and a fix for the occasional overlap between the navigation bar and the bottom keys on Android 15 and 16.

What's Changed

  • Bugs
    • Fixed a crash when loading a dictionary for the first time
    • Fixed a startup crash due to trying to use the LanguageCollection before it is initialized
    • Fixed the dropdown for changing the on-screen layout, which was not working sometimes
    • Fixed incorrect icon colors on disabled buttons
    • Fixed the UI not showing up sometimes in Firefox on Android 16 (#920)
    • Finally fixed the navigation bar overlapping with the bottom of the keyboard on Android 15 and 16
    • Fixed incorrect Fn key height when the layout is V-shape, and some Fn keys are hidden
    • Fixed the cursor jumping back to the beginning of search fields when searching for languages or words in the Settings (v56.0 regression)
  • Features
    • Added real-time transcription and proper capitalization to voice input by @shmu1i in #914
    • Added real-time preview when adjusting the appearance settings
    • It is now possible to add words with digits, except with "0" (e.g., "mp3", but not "mp0") (#925)
    • Added a Bottom Spacing in Portrait setting (#892)
  • Technical
    • Code cleanup and various optimizations
    • Updated the FAQ section in the Help document
    • 12th attempt to fix the Privileged options crash: added an initialization crash handler
    • upgraded com.android.application 8.13.0 -> 8.13.1

Full Changelog: v56.0...v57.0

New Contributors

Thanks to @shmu1i for single-handedly adding real-time voice input transcription!

v56.0

23 Oct 07:53

Choose a tag to compare

Small bug fixes and optimizations

v56.0 fixes several non-critical bugs, introduces optimizations for faster startup and reduced typing lag on low-end devices, and adds a couple of user-requested features.

What's Changed

  • Languages
    • Virtual Numpad: Asian Space now replaces the Shift key instead of the Add Word key
  • Bugs
    • Fixed the crashing caused by background tasks
    • Fixed the special character suggestions not being displayed on every other 0-key press, when the preferred char is Space (#848)
    • Fixed the light color theme number key ripple color on Android 12 and higher
    • Fixed the Recalculate Bottom Padding setting appearing on Android 14 and earlier, when it shouldn't
    • Fixed a crash on the Punctuation Order screen
    • Prevented crashing when AppHacks is misused with a NULL text field or input type
    • Fixed the selection of emoji by tapping the suggestion list, which did not work in WhatsApp (#884)
    • Fixed the keyboard covering long forms in the Settings, for example, on the Punctuation Order screen, as well as other scrolling issues (#884)
    • Fixed quick-scrolling on the Punctuation screen, sometimes causing text to 'jump' between the form inputs (#871
    • Fixed the issue where holding number keys to activate a command was not working
    • Prevented unnecessary text analysis while typing a word
    • Prevented hang-ups while typing, caused by the foreground application being too slow or being frozen itself.
  • Features
    • Hold-to-type-number is now optional and can be toggled from the settings (#882)
    • Emojis can now be disabled from the settings (#848)
  • Removed
    • Removed the possibility of adding emojis to the custom word dictionary
  • Technical
    • Code cleanup and improvements
    • Small optimizations for faster startup
    • Enhanced transcribed language scripts (#722)
    • Increased the maximum word frequency from 255 to 9999

Full Changelog: v55.0...v56.0

v55.0

24 Sep 07:31

Choose a tag to compare

Critical Bugs

  • Fixed the ✱ key not working (a regression from v54.0)
  • Fixed not possible to type words such as "peut-être", "bien-être", etc, in French
  • Fixed inaccuracies when calculating the MainView size that caused unnecessary blank space below the keys
  • Fixed a misspelled menu item in French
  • When reordering the punctuation and the special characters, it is now possible to add any Unicode character, including emojis.

Full Changelog: v54.0...v55.0

Note: Due to technical problems, this version will not be published on F-droid.

v54.0

21 Sep 13:43

Choose a tag to compare

Annoying Bugs Fixed

This version addresses several annoying bugs, including issues with adding words, voice input failures when multiple languages are enabled, and problems with typing names like "O'Donnell" in English, among others.

Note: Due to technical problems, this version will not be published on F-droid.

What's Changed

  • Languages
    • English
      • Removed some words with apostrophes that could make typing names like "O'Donnell" difficult;
      • Added "Manowar"
    • French
      • Added missing number words,
      • Corrected the text case of 'ans'
      • Added 'Dumas'
  • Features
    • On the screen for deleting added words, the language name is displayed next to each word, for clarity.
  • Bugs
    • Fixed voice input not working on some devices with Android 12 or higher.
    • Fixed adding words not working correctly with Thai and Indic languages. (#864)
    • Fixed typing after filtering, when |...+a|...+b|...+c| suggestions are displayed, sometimes producing a word using the second or the third letter, when the first letter is pre-selected and the user has not manually selected another one. (#854)
    • Fixed the suggestion list becoming cropped when the font size is bigger than 100% (#862)
    • Fixed custom word deletion not working when the same word has been added to more than one language.
    • Improved special character detection when importing words from a file. It is now possible to import words that contain letters on the 1-key.
    • Fixed Backspace breaking complex graphemes (e.g. emojis, Indic letters, etc), instead of deleting them
    • Fixed the Auto-Space function, which was incorrectly adding spaces after emojis
    • Fixed the virtual spacebar key sometimes incorrectly appearing long when it should be short or vice versa
    • When a function panel is open or when voice input is active, Star key now always navigates back, and Pound does nothing, to prevent accidental activation of hotkey functions, which may lead to potential confusion
    • Fixed the virtual 0-key label becoming either oversized or tiny sometimes.
    • Fixed dictionary loading getting stuck at 88% when restoring a large number of custom words
    • Fixed the custom word importing status not updating
    • Fixed a rare case of crashing on some devices when saving word pairs
  • Technical
    • Upgraded com.android.application 8.12.1 -> 8.13.0
    • Code cleanup and optimization
    • Readme updates

Full Changelog: v53.0...v54.0

v53.0

27 Aug 07:45

Choose a tag to compare

Serious Bug Fixes

v53.0 fixes several severe bugs, brings usability enhancements, and language improvements, including removing more English slurs, adding missing two-letter Vietnamese words, and adding new Japanese words for counting time, and adding new Italian words.

Note: Due to technical problems, this version will not be published on F-droid.

What's Changed

  • Languages
    • Vietnamese: added missing one-letter words (#844)
    • English: removed more swear words (#834), and added new brand and product names
    • Japanese: added day-period words: 一日間, 二日間, ..., and week-period words: 一週間, 三週間, ...
    • Italian: new proper names, brand names and other words (#805)
  • Bugs
    • fixed: words popping out of nowhere when typing in the Reddit app search field
    • fixed: not possible to select and type emojis in WhatsApp (#850)
    • fixed: pressing '1' for an emoji right after a word, producing multiple emojis, instead of cycling the emoji groups
    • fixed: switching the language when there is selected text, causing deletion of the selected text (#848)
    • fixed: the Edit Text hotkey only shows but does not hide the Text Editing Palette (#848)
    • fixed: the hotkey labels not being updated correctly when reassigning keys (#848)
    • fixed: moving the cursor back unexpectedly erases newlines and spaces in the middle of the text (#848)
    • prevented unnecessary resource-intensive text analysis and IPC when moving the cursor back
  • Features
    • all hotkeys now work when the Command Palette is shown (#848)
    • improved the grouping and the wording in the Settings, on Appearance, and Keypad screens
    • when the virtual keys are disabled, all related settings are now hidden
  • Technical and documentation
    • renamed the 'Edit Text' hotkey to 'Clipboard Tools'
    • fixed spelling and factual mistakes in the Help
    • code restructuring to add support for separate source sets from different repos
    • no more error messages about failing database migrations on startup
    • the Shift function now uses no memory when the UI is hidden (#853)
    • now using a single thread for all optimization tasks that run in the background, instead of one thread for each task (#853)
    • upgraded com.android.application 8.11.1 -> 8.12.1

Full Changelog: v52.0...v53.0

v52.0

28 Jul 11:17

Choose a tag to compare

Stabilization and Language Improvements

This release is mostly focused on fixing bugs. Besides that, it brings official support for Android 16, and small dictionary improvements.

What's Changed

  • Languages
    • Bulgarian: added new words
    • English: removed swear words
    • Italian: corrected a spelling mistake
    • Fixed the issue where it was not possible to type some words with apostrophes in Dutch, Italian, Portuguese, and Romanian (#805) (thanks to @Crash9999 for reporting)
  • Bugs
    • fixed custom words not being erased when they are added to the factory dictionary, but the text case is different (#805)
    • fixed unexpected text appearing when backspace is pressed after pasting something while typing a word (#839)
    • fixed not possible to use Shift when the composing text contains special characters and the status icons are disabled (#805)
    • fixed not possible to type custom-added emoji, because them being added with the wrong digit sequence
    • fixed double letters when erasing legacy Mac newline following a word (#839) (thanks to @maverick74 for reporting) and testing
  • Technical (added support for Android 16)
    • Readme: added more detailed instructions on how to set up and troubleshoot voice input
    • Upgraded com.android.application 8.10.1 -> 8.11.1
    • Changed the compileSdk and targetSdk 35 -> 36
    • Significantly simplified the back navigation logic in the Settings
    • When logging is set to 'debug' level, the custom words on the Delete Words screen are displayed together with some extra info

Full Changelog: v51.0...v52.0

v51.0

04 Jul 07:09

Choose a tag to compare

Massive Language Updates

v51.0 adds two new languages: Serbian and Slovak. It also adds new words to Bulgarian, Dutch, English, French, German, Indonesian Japanese, Polish, and Turkish, and it fixes misspellings in Italian. Apart from that, it enhances the behavior of the Shift key and resolves several minor bugs.

Note: Due to technical problems, this version will not be published on F-droid.

What's Changed

  • Languages
    • Bulgarian: added 41 new words, and removed 4 nonsense words
    • Dutch: added 28k new words
    • English: added 'Termux' and 'passthrough'
    • French: added 100k new words
    • German: added 1.28 million new words
    • Indonesian: added 18k new words
    • Italian (made possible thanks to @Crash9999)
      • fixed missing accents of many past tense verbs
      • fixed other misspelled words
      • added small town names and manually collected words
      • added 9000 proper names
      • added new contractions
    • Japanese: added a couple of new words, new counters, and missing conjugations for: 来る, だ, する, 上がる
    • Polish: added 1 million new words
    • Turkish: added 590k new words
    • Added Serbian (Cyrillic)
    • Added Slovak
  • Features
    • added options to show/hide the Newline and the Tab characters in the 0-key char list
    • dictionary loading status is now displayed on the Status Bar
    • disabled word recomposition when the cursor is in the middle of a word
    • replaced on-screen RF3 scissors icon with a material scissors icon
    • do not ask to show notifications in our own text fields
  • Bugs
    • added a hack for Facebook Messenger to prevent keyboard hiding when trying to reply to a message and the Main View is set to 'Function Keys'
    • fixed not possible to type the word 'Tab' with a capital letter
    • fixed a NullPointerException when loading a dictionary from an update notification
    • fixed a rare NullPointerException when changing the text case right when the suggestion list becomes empty
    • fixed double letters when recomposing a word that had exactly two new lines after it
    • fixed the Shift key and the status icons sometimes indicating an incorrect text case (thanks to @maverick74 for testing and for his patience)
    • fixed not possible to change the text case of words that start with apostrophes, like: 's, 're, 'll
    • fixed the UI appearing in 3rd-party calculators, when it should remain invisible
    • fixed notification permissions being requested when they are already granted
    • attempted to fix the crashes caused by language lists and dropdowns
    • 10th attempt to fix the privileged options problem: InputConnection is no longer cached within the app (failed immediately)
    • 11th attempt to fix the Priviliged options crash: constant heartbeat checks while we are visible
  • Technical
    • upgraded com.android.application 8.10.0 -> 8.10.1
    • upgraded gradle 8.11.1 -> 8.14-2
    • reverted the lazy loading hack for initializing Voice Input because it causes ANRs on multiple devices

Full Changelog: v50.0...v51.0