Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Find a file
Joshua Horton e5a816d7bc feat(web): determine all equal-cost edit-paths & rank them by quality
After digging through repo history, I couldn't find an actual reference for .editPath(), the method producing a sequence of edits represented by the edit-distance calculation.

After further thought and investigation, I realized that there can be more than one possible edit sequence... and that the best approach for future stability is to calculate and return _all_ of them.  The trick is to rank them based on the qualities we most look for - and for predictive-text's sliding context window, what we want is a long, unbroken sequence of 'match'-ed tokens, followed by substitutions on the edges.

Previously, I'd finagled the editPath() function to check certain edit types before others, but it always felt hacky and brittle.  This new approach seems like a much more robust way forward, even if it probably is a bit more costly to perform.
2025-08-27 15:06:42 -05:00
.github maint(resources): gh pr merge requires merge flag in auto-merge GHA 2025-08-14 09:28:29 +02:00
android Merge branch 'epic/autocorrect' into chore/merge-master-into-autocorrect 2025-08-14 12:26:50 -05:00
common Merge branch 'epic/autocorrect' into chore/merge-master-into-autocorrect 2025-08-14 12:26:50 -05:00
core maint(common): rename and move node-related script functions into node.inc.sh 2025-08-02 13:34:29 +10:00
developer Merge pull request #14424 from keymanapp/docs/bcp47 2025-08-13 10:53:42 +07:00
docs docs(resources): note on builder-basic vs builder-full 2025-08-12 05:46:16 +02:00
ios Merge pull request #14458 from keymanapp/maint/common/mac-scripts 2025-08-12 10:41:35 +07:00
linux maint(common): consolidate builder scripts 2025-08-02 08:11:24 +10:00
mac Merge pull request #14458 from keymanapp/maint/common/mac-scripts 2025-08-12 10:41:35 +07:00
oem/firstvoices Merge pull request #14458 from keymanapp/maint/common/mac-scripts 2025-08-12 10:41:35 +07:00
resources maint(resources): add space to test-bot command 2025-08-14 10:53:53 +02:00
web feat(web): determine all equal-cost edit-paths & rank them by quality 2025-08-27 15:06:42 -05:00
windows Merge pull request #14449 from keymanapp/maint/common/14065-consolidate-builder-scripts 2025-08-12 10:41:09 +07:00
.clang-format feat(linux): work on 2nd round of comments on PR 11816 2024-06-20 17:44:21 +02:00
.editorconfig chore(linux): Address a few more lintian warnings 2022-03-15 15:32:10 +01:00
.eslintrc.cjs maint: patchup eslint configuration 2025-05-02 14:06:33 +07:00
.flake8 chore(linux): Add integration tests for ibus-keyman 2021-11-04 09:22:28 +01:00
.gitattributes maint: always use LF for Dockerfiles 2025-06-06 17:14:16 +02:00
.gitignore maint(common): consolidate builder scripts 2025-08-02 08:11:24 +10:00
.nycrc.json feat(developer): fixup and prepare build scripts and docs for kmc 2022-09-19 06:36:06 +10:00
.shellcheckrc chore(linux): Properly fix shellcheck SC1091 warnings 2023-05-11 11:59:15 +02:00
build.sh maint(common): consolidate builder scripts 2025-08-02 08:11:24 +10:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-10-08 10:46:53 +11:00
configure-repo.sh chore: update docs and non-standard readlink refs 2023-02-22 10:41:54 +07:00
CONTRIBUTING.md chore: add maint to CONTRIBUTING.md 2025-04-29 11:15:55 +07:00
crowdin.yml fix(mac): Specify el.lproj folders 2024-08-07 10:01:42 +07:00
HISTORY.md auto: increment master version to 19.0.100 2025-08-14 04:40:00 -04:00
LICENSE.md maint(linux): fix lintian warnings 2025-05-13 20:07:32 +02:00
package-lock.json maint: fix npm audit issues 2025-08-08 09:04:02 -05:00
package.json maint: update fast-json-parser 2025-05-13 14:46:32 +07:00
README.md docs(common): update README with number of languages and keyboards 2025-05-21 20:36:20 +02:00
TIER.md Update TIER.md 2022-11-14 07:34:26 +11:00
tsconfig.base.json refactor: move langtags to @keymanapp/langtags npm module 2025-01-27 09:59:38 +07:00
tsconfig.json chore: address review comments 2025-01-30 14:00:34 +07:00
VERSION.md auto: increment master version to 19.0.100 2025-08-14 04:40:00 -04:00

Keyman

Keyman makes it possible for you to type in any language on Windows, macOS, Linux, iPhone, iPad, Android tablets and phones, and even instantly in your web browser. Create keyboard layouts with Keyman Developer and share them with the community in the keyboards repository. The Keyman Community have so far contributed well over 1,000 keyboard layouts for over 2,500 languages!

License

Copyright (c) SIL Global.

Keyman is an open source project distributed under the MIT license.

Get Involved

Development Status

Important Links