FUTO Keyboard is a keyboard being developed, forked from the [AOSP keyboard](https://android.googlesource.com/platform/packages/inputmethods/LatinIME/).
FUTO Keyboard is a keyboard being developed, forked from the [AOSP keyboard](https://android.googlesource.com/platform/packages/inputmethods/LatinIME/).
The goal is to create a good, customizable keyboard that doesn't sacrifice on privacy or freedoms.
The goal is to create a good, customizable keyboard that doesn't sacrifice on privacy or freedoms.
If you're testing this, please join either the [Discord server](https://keyboard.futo.org/discord) or the [FUTO chat](https://chat.futo.org/). Your feedback is valuable during this testing period!
If you're testing this, please join either the [Discord server](https://keyboard.futo.org/discord) or the [FUTO chat](https://chat.futo.org/). Your feedback is valuable during this testing period!
# Current features
# Current features
## Transformer-based predictions and autocorrect
## Transformer-based predictions and autocorrect
This is quite experimental and may not run well on low end devices. If this is the case, you can turn it off in the predictive text settings. It also only works for English currently.
This is quite experimental and may not run well on low end devices. If this is the case, you can turn it off in the predictive text settings. It also only works for English currently.
The current methodology is documented here: https://gitlab.futo.org/alex/keyboard-wiki/-/wikis/Keyboard-LM-docs. We're still experimenting with different ways of incorporating neural networks to improve suggestions and autocorrect, and we may have an entirely different system in the near future.
The current methodology is documented here: https://gitlab.futo.org/alex/keyboard-wiki/-/wikis/Keyboard-LM-docs. We're still experimenting with different ways of incorporating neural networks to improve suggestions and autocorrect, and we may have an entirely different system in the near future.
Fine-tuning the model is also supported, but this is disabled by default as it may be unstable or ineffective.
Fine-tuning the model is also supported, but this is disabled by default as it may be unstable or ineffective.
## Integrated voice input
## Integrated voice input
No external app is necessary in order to use voice input. To use the integrated voice input, make sure it's not disabled in the keyboard settings, as during setup it's possible to disable it.
No external app is necessary in order to use voice input. To use the integrated voice input, make sure it's not disabled in the keyboard settings, as during setup it's possible to disable it.
The voice input runs entirely offline and on-device, just like the rest of the keyboard.
The voice input runs entirely offline and on-device, just like the rest of the keyboard.
You can download and import different models from https://keyboard.futo.org/voice-input-models
You can download and import different models from https://keyboard.futo.org/voice-input-models
Technically you can import any whisper.cpp compatible model, but they may exhibit endless text repetition as we use the `audio_ctx` parameter extensively, which requires finetuning with the ACFT method as documented here: https://github.com/futo-org/whisper-acft
Technically you can import any whisper.cpp compatible model, but they may exhibit endless text repetition as we use the `audio_ctx` parameter extensively, which requires finetuning with the ACFT method as documented here: https://github.com/futo-org/whisper-acft
Personal dictionary for the voice input is extracted from your system personal dictionary. However, due to context size limits, if too many words are present then only a subset of them will be included. We will add better UI for this to make it clear which words are included.
Personal dictionary for the voice input is extracted from your system personal dictionary. However, due to context size limits, if too many words are present then only a subset of them will be included. We will add better UI for this to make it clear which words are included.
If you have a Bluetooth headset connected, you can toggle it by tapping on the Bluetooth icon on the recording menu.
If you have a Bluetooth headset connected, you can toggle it by tapping on the Bluetooth icon on the recording menu.
## Action bar
## Action bar
The suggestions bar above the keyboard has an arrow that expands into action icons. There's a few actions at the moment:
The suggestions bar above the keyboard has an arrow that expands into action icons. There's a few actions at the moment:
* Emoji
* Emoji
* Themes
* Themes
* Clipboard manager
* Clipboard manager
* Text editor
* Text editor
* Voice input
* Voice input
* Undo/redo/paste (these send CTRL+Z, CTRL+Y and CTRL+V respectively)
* Undo/redo/paste (these send CTRL+Z, CTRL+Y and CTRL+V respectively)
* Settings shortcut
* Settings shortcut
Some of these actions take up the entire window. When this is the case, you can pop the action above the keyboard with the arrow in the top right.
Some of these actions take up the entire window. When this is the case, you can pop the action above the keyboard with the arrow in the top right.
You can also drag the actions around by long-tapping and dragging.
You can also drag the actions around by long-tapping and dragging.
## Emoji menu
## Emoji menu
This emoji menu is entirely scrollable, contains modern emoji and skintones. There currently isn't a search, but if you type an emoji name (e.g. "joy"), the suggestions bar will suggest the emoji for quick insertion.
This emoji menu is entirely scrollable, contains modern emoji and skintones. There currently isn't a search, but if you type an emoji name (e.g. "joy"), the suggestions bar will suggest the emoji for quick insertion.
## Theming
## Theming
A few preset themes are included, and you can also toggle key borders. In the theming menu you'll also find the sliders for adjusting keyboard height and offset.
A few preset themes are included, and you can also toggle key borders. In the theming menu you'll also find the sliders for adjusting keyboard height and offset.
We plan to add full theming and customization in the future.
We plan to add full theming and customization in the future.
## Quick shortcuts
## Quick shortcuts
You can swipe the spacebar to move the cursor, and swipe the delete key to delete multiple characters.
You can swipe the spacebar to move the cursor, and swipe the delete key to delete multiple characters.
If you don't want to see a suggestion again, you can blacklist it by long-pressing on it. Note that blacklisting the rightmost suggestion (what you typed) has no effect.
If you don't want to see a suggestion again, you can blacklist it by long-pressing on it. Note that blacklisting the rightmost suggestion (what you typed) has no effect.
## Custom dictionary support
## Custom dictionary support
You can import any AOSP compatible dictionaries. This may be a necessity for some languages, as the app does not come with a built-in dictionary for many languages.
You can import any AOSP compatible dictionaries. This may be a necessity for some languages, as the app does not come with a built-in dictionary for many languages.
## Basic swipe typing
## Basic swipe typing
Basic swipe typing is supported, although the algorithm is not very well-tuned currently. We will be experimenting with ways to improve it.
Basic swipe typing is supported, although the algorithm is not very well-tuned currently. We will be experimenting with ways to improve it.
# Current gotchas
# Current gotchas
The keyboard is not direct boot aware. If you have a text password, you will need a different keyboard app installed for entering the password on first unlock after reboot.
The keyboard is not direct boot aware. If you have a text password, you will need a different keyboard app installed for entering the password on first unlock after reboot. (This will now be fixed in v0.1.23)
There is no one-handed mode or split/floating layout for landscape/tablets.
There is no one-handed mode or split/floating layout for landscape/tablets.
Some languages may have severe usability problems or not work well at all. Please report such issues at https://github.com/futo-org/android-keyboard/ to make sure we can keep track of them.
Some languages may have severe usability problems or not work well at all. Please report such issues at https://github.com/futo-org/android-keyboard/ to make sure we can keep track of them.
## Roadmap
## Roadmap
Short to mid term:
Short to mid term:
* Stability improvements, bug fixes, quality of life improvements
* Stability improvements, bug fixes, quality of life improvements
* Language screen improvements
* Improved action UI (customizable, draggable, settings for clipboard manager)
* Improved action UI (customizable, draggable, settings for clipboard manager)
* General improved UX
* General improved UX
* Emoji search
Mid-term:
* Improved modularity with keyboard layouts
Mid-term:
* Improvements for other languages wherever practical
* Improved modularity with keyboard layouts
* Model reworking
* Improvements for other languages wherever practical