{"id":13610557,"url":"https://github.com/openboard-team/openboard","last_synced_at":"2025-05-14T23:06:23.382Z","repository":{"id":39578177,"uuid":"231124413","full_name":"openboard-team/openboard","owner":"openboard-team","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-16T16:55:59.000Z","size":88791,"stargazers_count":2635,"open_issues_count":426,"forks_count":264,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-04-21T08:10:26.097Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openboard-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-12-31T17:17:45.000Z","updated_at":"2025-04-20T08:26:58.000Z","dependencies_parsed_at":"2024-06-18T04:48:08.811Z","dependency_job_id":null,"html_url":"https://github.com/openboard-team/openboard","commit_stats":null,"previous_names":["dslul/openboard"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openboard-team%2Fopenboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openboard-team%2Fopenboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openboard-team%2Fopenboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openboard-team%2Fopenboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openboard-team","download_url":"https://codeload.github.com/openboard-team/openboard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254243360,"owners_count":22038046,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T19:01:45.879Z","updated_at":"2025-05-14T23:06:18.369Z","avatar_url":"https://github.com/openboard-team.png","language":"Java","funding_links":[],"categories":["Android","Java","Index"],"sub_categories":["Android Keyboard"],"readme":"\u003ch1 align=\"center\"\u003e\u003cb\u003eOpenBoard\u003c/b\u003e\u003c/h1\u003e\n\u003ch4 align=\"center\"\u003e100% FOSS keyboard, based on AOSP.\u003c/h4\u003e\n\u003cp align=\"center\"\u003e\u003cimg src='fastlane/metadata/android/en-US/images/icon.png' height='128'\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/openboard-team/openboard/actions/workflows/android-build.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/workflow/status/openboard-team/openboard/Build\" alt=\"GitHub Workflow Status\"\u003e\u003c/a\u003e\n\u003ca href=\"https://hosted.weblate.org/engage/openboard/\"\u003e\u003cimg src=\"https://hosted.weblate.org/widgets/openboard/-/openboard/svg-badge.svg\" alt=\"Translation status\"\u003e\u003c/a\u003e\n\u003ca href=\"https://matrix.to/#/#openboard:matrix.org?via=matrix.org\"\u003e\u003cimg src=\"https://img.shields.io/matrix/openboard:matrix.org\" alt=\"Matrix\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/openboard-team/openboard/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/openboard-team/openboard\" alt=\"GitHub release (latest by date)\"\u003e\u003c/a\u003e\n\u003ca href=\"https://f-droid.org/packages/org.dslul.openboard.inputmethod.latin\"\u003e\u003cimg alt=\"F-Droid Version\" src=\"https://img.shields.io/f-droid/v/org.dslul.openboard.inputmethod.latin?color=green\u0026amp;logo=f-droid\"\u003e\u003c/a\u003e\n\u003ca href=\"https://play.google.com/store/apps/details?id=org.dslul.openboard.inputmethod.latin\"\u003e\u003cimg alt=\"Google Play Version\" src=\"https://img.shields.io/endpoint?logo=google-play\u0026amp;url=https%3A%2F%2Fplayshields.herokuapp.com%2Fplay%3Fi%3Dorg.dslul.openboard.inputmethod.latin%26l%3Dgoogle-play%26m%3D%24version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/openboard-team/openboard/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release-date/openboard-team/openboard\" alt=\"GitHub Release Date\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/openboard-team/openboard/commits/master\"\u003e\u003cimg src=\"https://img.shields.io/github/commits-since/openboard-team/openboard/latest\" alt=\"GitHub commits since latest release (by date)\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href='https://f-droid.org/packages/org.dslul.openboard.inputmethod.latin'\u003e\u003cimg src='https://fdroid.gitlab.io/artwork/badge/get-it-on.png' alt='Get it on F-Droid' height='60'\u003e\u003c/a\u003e\n\u003ca href='https://play.google.com/store/apps/details?id=org.dslul.openboard.inputmethod.latin\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'\u003e\u003cimg alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' height='60'/\u003e\u003c/a\u003e\u003c/p\u003e  \n\n# Table of content\n\n- [Community](#community)\n- [Contribution ❤](#contribution-)\n   * [Issue reporting](#issue-reporting)\n   * [Translation](#translation)\n   * [Dictionary creation](#dictionary-creation)\n   * [Code contribution](#code-contribution)\n      + [Getting started](#getting-started)\n      + [Guidelines](#guidelines)\n      + [Current TODO list](#current-todo-list)\n      + [Project's side tools](#tooling)\n- [License](#license)\n- [Credits](#credits)\n\n# Community\nJoin our [matrix] channel [here](https://matrix.to/#/#openboard:matrix.org?via=matrix.org).\n\n\u003cimg src=\"images/matrix_qr.png\" alt=\"Matrix QR Code\" height=\"128\"\u003e\n\n# Contribution ❤\n\n## Issue reporting\n\nWhether you encountered a bug, or want to see a new feature in OpenBoard, you can contribute to the project by opening a new issue [here](https://github.com/openboard-team/openboard/issues). Your help is always welcomed !\n\nBefore opening a new issue, be sure to check the following :\n - **Does the issue already exist ?** Make sure a similar issue has not been reported by browsing [existing issues](https://github.com/openboard-team/openboard/issues).\n - **Is the issue still relevant ?** Make sure your issue is not already fixed in the latest version of OpenBoard.\n - **Did you use the issue template ?** It is important to make life of our kind contributors easier by avoiding  issues that miss key informations to their resolution.\n\n*Please avoid opening issues to ask for a release date, for PR reviews/merges, for more activity on the project, or worth for more contributors. If you have any interrogations on these topics, read [this comment](https://github.com/openboard-team/openboard/issues/619#issuecomment-1179534276) from issue [#619](https://github.com/openboard-team/openboard/issues/619).*\n\n## Translation\nYou can help in translating OpenBoard in your language through our [Weblate project](https://hosted.weblate.org/engage/openboard/).\n\n[![Translation status](https://hosted.weblate.org/widgets/openboard/-/openboard/287x66-grey.png)](https://hosted.weblate.org/engage/openboard/)\n\n## Dictionary creation\nTo create or update a dictionary for your language, you can use [this tool](https://github.com/remi0s/aosp-dictionary-tools). You will need a wordlist, as described [here](dictionaries/sample.combined). The output .dict file must be put in [res/raw](app/src/main/res/raw), and its wordlist in [dictionaries](/dictionaries).\n\nFor your dictionary to be merged into OpenBoard, **you must provide the wordlist you used**, as well as its license if any.\n\n## Code contribution\n\n### Getting started\n\nOpenBoard project is based on Gradle and Android Gradle Plugin. To get started, you'll just need to install [Android Studio](https://developer.android.com/studio), and import project 'from Version Control / Git / Github' by providing this git repository [URL](https://github.com/openboard-team/openboard) (or git SSH [URL](git@github.com:openboard-team/openboard.git)).\n\nOnce everything got setted up correctly, you're ready to go !\n\n### Guidelines\n\nOpenBoard is a complex application, when contributing, you must take a step back and make sure your contribution :\n- **Uses already in-place mechanism and take advantage of them**. In other terms, does not reinvent the wheel or uses shortcuts that could alter the consistency of the existing code.\n- **Has the lowest footprint possible**. OpenBoard code has been written by android experts (AOSP/Google engineers). It has been tested and runned on millions of devices. Thus, **existing code will always be safer than new code**. The less we alter existing code, the more OpenBoard will stay stable. Especially in the input logic scope.\n- **Does not bring any non-free code or proprietary binary blobs**. This also applies to code/binaries with unknown licenses. Make sure you do not introduce any closed-source library from Google.\n- **Complies with the user privacy principle OpenBoard follows**. \n\nIn addition to previous elements, OpenBoard must stick to [F-Droid inclusion guidelines](https://f-droid.org/docs/Inclusion_Policy/).\n\n### Current TODO list\nIn no particular order, here is the non-exhaustive list of known wanted features :\n- [x] ~~Updated emoji support~~\n- [ ] MaterialYou ([M3](https://m3.material.io/)) support\n- [x] ~~One-handed mode feature~~\n- [ ] Android [autofill](https://developer.android.com/guide/topics/text/ime-autofill) support\n- [x] ~~Clipboard history feature~~\n- [ ] Text navigation/selection panel\n- [ ] Multi-locale typing\n- [ ] Emoji search\n- [ ] Emoji variant saving\n- [ ] Glide typing\n\n### Tooling\n\n#### Edit keyboards content\nKeyboards content is often a complex concatenation of data from global to specific locales. For example, additional keys of a given key, also known as 'more keys' in code, are determined by concatenating infos from : common additional keys for a layout (eg. numbers), global locale (eg. common symbols) and specific locale (eg. accents or specific letters).\n\nTo edit these infos, you'll need to generate the [KeyboardTextsTable.java](app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java) file. \nTo do so :\n1. Make your modifications in [tools/make-keyboard-text/src/main/resources](tools/make-keyboard-text/src/main/resources)/values-YOUR LOCALE.\n2. Generate the new version of [KeyboardTextsTable.java](app/src/main/java/org/dslul/openboard/inputmethod/keyboard/internal/KeyboardTextsTable.java) by running Gradle task 'makeText' :\n    ```sh\n    ./gradlew tools:make-keyboard-text:makeText\n    ```\n   \n#### Update emojis\n\nSee make-emoji-keys tool [README](tools/make-emoji-keys/README.md).\n\n# License\n\nOpenBoard project is licensed under GNU General Public License v3.0.\n\n \u003e Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.\n\nSee repo's [LICENSE](/LICENSE) file.\n\n# Credits\n- Icon by [Marco TLS](https://www.marcotls.eu)\n- [AOSP Keyboard](https://android.googlesource.com/platform/packages/inputmethods/LatinIME/)\n- [LineageOS](https://review.lineageos.org/admin/repos/LineageOS/android_packages_inputmethods_LatinIME)\n- [Simple Keyboard](https://github.com/rkkr/simple-keyboard)\n- [Indic Keyboard](https://gitlab.com/indicproject/indic-keyboard)\n- Our [contributors](https://github.com/openboard-team/openboard/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenboard-team%2Fopenboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenboard-team%2Fopenboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenboard-team%2Fopenboard/lists"}