FUTO Keyboard
  • Java 39.3%
  • C++ 30.1%
  • Kotlin 19.4%
  • C 10.6%
  • CMake 0.3%
  • Other 0.1%
Find a file
Aleksandras Kostarevas 7d61ab4132 Document nightly in README
2026-11-02 13:05:38 +01:00
.ci Update CI 2025-10-20 00:16:05 +01:00
.github/ISSUE_TEMPLATE keyboard.futo.org -> keyboard.futo.tech 2026-07-22 21:11:53 +03:00
common/src/org/futo/inputmethod Swipe library integration 2026-05-27 11:02:08 +00:00
dictionaries
gradle/wrapper Update AGP, Gradle, CI 2025-07-20 05:57:51 +03:00
java Update swipe LM 2026-11-02 12:35:46 +01:00
libs@be4362cf82 Update swipe library 2026-06-18 04:43:46 +03:00
native Fix beam search using wrong parent probability [#2157] 2026-07-27 17:02:09 +02:00
tests Fix Japanese language switch key issue 2026-04-16 16:16:37 +03:00
tools Treat Russian ie as a language long-press key 2026-08-24 16:45:43 +01:00
translations@8cd47ae043 Update translations 2026-06-22 08:47:49 +03:00
voiceinput-shared Update translation filter 2026-07-02 22:52:11 +03:00
.clang-tidy Fix some linter warnings 2024-05-16 17:18:08 -05:00
.gitignore Add ATLCompat fixes 2026-09-14 14:56:47 +02:00
.gitlab-ci.yml Add signingReport to CI 2025-11-28 19:24:33 +02:00
.gitmodules Swipe library integration 2026-05-27 11:02:08 +00:00
build.gradle Enable desugaring to fix crash on SDK<26 2026-07-22 15:23:00 +03:00
gradle.properties Port 20 layouts to new system and fix some inconsistencies 2024-09-18 18:47:04 +03:00
gradlew
gradlew.bat
LICENSE.md Update LICENSE.md 2024-10-14 13:29:15 +03:00
lint.xml Update layout docs, resolve some bugs 2024-10-18 23:32:12 +03:00
NOTICE
proguard-rules.pro Swipe library integration 2026-05-27 11:02:08 +00:00
README.md Document nightly in README 2026-11-02 13:05:38 +01:00
sendZulipMessage.sh Add webhook to CI and update image version 2023-08-31 23:53:30 +03:00
settings.gradle Initial voice input implementation 2023-08-27 19:08:44 +03:00
setUpPropertiesCI.sh Add crash reporting file to CI 2023-08-31 22:48:35 +03:00
syncTranslations.sh Update syncTranslations 2025-12-20 01:35:44 +02:00
uploadNightly.sh Fix uncached download URL for nightly 2025-03-20 21:13:13 -05:00
uploadNightlyBranch.sh Update CI 2025-07-03 00:24:10 +03:00

FUTO Keyboard

The goal is to make a good modern keyboard that stays offline and doesn't spy on you. This keyboard is a fork of LatinIME, The Android Open-Source Keyboard, with significant changes made to it.

Check out the FUTO Keyboard website for downloads and more information.

The code is licensed under the FUTO Source First License 1.1.

Nightly builds

Usually, a build close to the current master is available at https://dl.keyboard.futo.org/nightly.apk. Read more about it here: https://docs.keyboard.futo.tech/improvements/nightly

The "Check for updates manually" button in the nightly build will check against the latest nightly, allowing you to get updated this way. It's recommended to check it once immediately after first installation in case an older version got downloaded due to CDN cache.

Issue tracking and contributing

Please check the GitHub repository to report issues: https://github.com/futo-org/android-keyboard/

The source code is hosted on our internal GitLab and mirrored to GitHub. As registration is closed on our internal GitLab, we use GitHub instead for issues and pull requests.

If you want to help translate the app, please do so via our Pontoon instance: https://i18n-keyboard.futo.org/

Due to custom license, pull requests to this repository require signing a CLA which you can do after opening a PR. Contributions to the layouts repo don't require CLA as they're Apache-2.0

Please do not submit AI-generated pull requests, as these tend to make the codebase more difficult to understand. Pull requests made with clear heavy use of AI may be closed without comment. Please also avoid using AI to write issues, and try to explain it in your own words instead.

Layouts

If you want to contribute layouts, check out the layouts repo.

Building

When cloning the repository, you must perform a recursive clone to fetch all dependencies:

git clone --recursive https://gitlab.futo.org/keyboard/latinime.git

If you forgot to specify recursive clone, use this to fetch submodules:

git submodule update --init --recursive

You can then open the project in Android Studio and build it that way, or use gradle commands:

./gradlew assembleUnstableDebug
./gradlew assembleStableRelease

APK signing

For official FUTO Keyboard versions, you can verify the APK's signing key fingerprint for integrity.

Signing key fingerprint for all versions except Google Play:

MD5: 3A:BB:71:C6:BB:E4:92:27:B1:E3:5D:81:01:48:6A:B0
SHA1: 5D:15:B3:6E:C9:6A:96:28:41:09:DD:62:93:0D:9C:39:9F:5F:06:43
SHA-256: 74:3F:AD:58:64:AB:C4:26:50:0B:2D:C2:C4:7C:8A:D3:24:CB:CD:16:03:3F:80:16:99:48:41:35:63:74:F9:95