Update FUTO Keyboard authored by Aleksandras Kostarevas's avatar Aleksandras Kostarevas
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.
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
## 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.
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.
## 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.
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
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.
If you have a Bluetooth headset connected, you can toggle it by tapping on the Bluetooth icon on the recording menu.
## Action bar
The suggestions bar above the keyboard has an arrow that expands into action icons. There's a few actions at the moment:
* Emoji
* Themes
* Clipboard manager
* Text editor
* Voice input
* Undo/redo/paste (these send CTRL+Z, CTRL+Y and CTRL+V respectively)
* 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.
You can also drag the actions around by long-tapping and dragging.
## 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.
## 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.
We plan to add full theming and customization in the future.
## Quick shortcuts
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.
## 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.
## 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.
# 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.
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.
## Roadmap
Short to mid term:
* Stability improvements, bug fixes, quality of life improvements
* Language screen improvements
* Improved action UI (customizable, draggable, settings for clipboard manager)
* General improved UX
* Emoji search
Mid-term:
* Improved modularity with keyboard layouts
* Improvements for other languages wherever practical
* Model reworking
* One-handed mode, split layouts, floating keyboard
Long-term:
* Fully customizable theming
* More advanced swipe typing
* Direct boot support
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.
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
## 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.
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.
## 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.
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
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.
If you have a Bluetooth headset connected, you can toggle it by tapping on the Bluetooth icon on the recording menu.
## Action bar
The suggestions bar above the keyboard has an arrow that expands into action icons. There's a few actions at the moment:
* Emoji
* Themes
* Clipboard manager
* Text editor
* Voice input
* Undo/redo/paste (these send CTRL+Z, CTRL+Y and CTRL+V respectively)
* 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.
You can also drag the actions around by long-tapping and dragging.
## 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.
## 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.
We plan to add full theming and customization in the future.
## Quick shortcuts
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.
## 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.
## 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.
# 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. (This will now be fixed in v0.1.23)
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.
## Roadmap
Short to mid term:
* Stability improvements, bug fixes, quality of life improvements
* Improved action UI (customizable, draggable, settings for clipboard manager)
* General improved UX
Mid-term:
* Improved modularity with keyboard layouts
* Improvements for other languages wherever practical
* Model reworking
* One-handed mode, split layouts, floating keyboard
Long-term:
* Fully customizable theming
* More advanced swipe typing
Missing something? Let us know in the Discord or FUTO Chat!
\ No newline at end of file