- Java 39.3%
- C++ 30.1%
- Kotlin 19.4%
- C 10.6%
- CMake 0.3%
- Other 0.1%
| .ci | ||
| .github/ISSUE_TEMPLATE | ||
| common/src/org/futo/inputmethod | ||
| dictionaries | ||
| gradle/wrapper | ||
| java | ||
| libs@be4362cf82 | ||
| native | ||
| tests | ||
| tools | ||
| translations@8cd47ae043 | ||
| voiceinput-shared | ||
| .clang-tidy | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .gitmodules | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE.md | ||
| lint.xml | ||
| NOTICE | ||
| proguard-rules.pro | ||
| README.md | ||
| sendZulipMessage.sh | ||
| settings.gradle | ||
| setUpPropertiesCI.sh | ||
| syncTranslations.sh | ||
| uploadNightly.sh | ||
| uploadNightlyBranch.sh | ||
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