Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Find a file
Marc Durdin 6eefb3a771 fix(developer): EncodeURL was not handling spaces
Fixes #7810.

This addresses a regression introduced in #7631, where URL parameters
with spaces would be encoded into `+` instead of `%20`. Looking a bit
deeper at the Delphi `TNetEncoding.URL.Encode` function I realised that
it was entirely inadequate. Some guy named Marc Durdin wrote a blog a
good few years ago about the problem, and that's what I ended up using.

This encoding issue caused filenames with spaces (by default, project
paths in Developer have spaces) to give a 404 when editing a touch
layout, which meant that the touch keyboards could not be saved.

Also fixes KEYMAN-DEVELOPER-74, where the + encoding caused multiple
entries to appear in the filename cache.

Amusing to Google this problem, find solid answer on SO, which pointed
to my very own blog. Embarrassing that my own code didn't already
include my own fix.

A secondary issue is also fixed here, where request parameters were
double-decoded for formencoded POST requests. The fix for broken URL
encodings was only required for GET requests.

This also showed up in KEYMAN-DEVELOPER-74, with double-encoded paths
being registered as source files.
2022-11-26 07:09:53 +07:00
.github chore(common): update actions to node16 2022-10-25 16:22:03 +11:00
android Apply suggestions from code review 2022-11-24 08:02:08 +07:00
common fix(developer): EncodeURL was not handling spaces 2022-11-26 07:09:53 +07:00
core fix(linux): Fix lintian warnings 2022-11-16 18:45:34 +01:00
developer fix(developer): EncodeURL was not handling spaces 2022-11-26 07:09:53 +07:00
docs chore: Update history-and-versioning to match history 2022-11-10 08:26:59 +07:00
ios Merge pull request #7791 from keymanapp/docs/ios-install 2022-11-23 15:36:08 +07:00
linux chore(linux): Update autotools configuration 2022-11-23 08:46:41 +01:00
mac Apply suggestions from code review 2022-11-23 07:39:24 +07:00
oem/firstvoices Merge pull request #7768 from keymanapp/cherrypick/android/sdk-version-31 2022-11-21 16:23:39 +07:00
resources fix: test builds should always run latest changes 2022-11-24 10:07:15 +11:00
web change(web): adds null/undef lang-tagged lexical model prevention 2022-11-24 08:30:51 +07:00
windows Apply suggestions from code review 2022-11-23 07:39:24 +07:00
.clang-format chore(common): Add C++ formatting rules 2021-07-29 18:50:25 +02:00
.editorconfig chore(linux): Address a few more lintian warnings 2022-03-15 15:32:10 +01:00
.flake8 chore(linux): Add integration tests for ibus-keyman 2021-11-04 09:22:28 +01:00
.gitignore chore(linux): Adjust Linux specific files in .gitignore 2022-10-13 10:22:05 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-10-08 10:46:53 +11:00
configure-repo.sh chore(common): update configure-repo.sh to include pre-commit hook 2022-10-26 15:33:37 +11:00
CONTRIBUTING.md chore(linux): Fix lintian warnings 2022-03-10 20:30:44 +01:00
crowdin.yml Merge pull request #6529 from keymanapp/chore/linux/l10n 2022-04-14 09:13:02 +02:00
HISTORY.md auto: increment beta version to 16.0.112 2022-11-24 13:01:27 -05:00
LICENSE.md chore: license date 2022-03-15 13:59:27 +11:00
package-lock.json chore(common): npm audit fix - ansi-regex update 2022-09-22 09:13:21 +07:00
package.json chore(deps): bump nanoid and mocha 2022-09-16 21:06:23 +00:00
README.md Update README.md 2021-10-08 18:06:46 +11:00
TIER.md chore: move to beta 16.0 2022-11-01 08:06:49 +11:00
tsconfig-base.json chore(web): eliminates es6-shim TS project 2022-05-31 09:35:52 +07:00
tsconfig.json chore(developer): Merge branch 'master' into chore/developer/js-to-lmc 2022-06-25 05:48:57 +10:00
VERSION.md auto: increment beta version to 16.0.112 2022-11-24 13:01:27 -05: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 already contributed keyboard layouts for over 2,000 languages!

License

Copyright (c) SIL International.

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

Get Involved

Development Status

Important Links