Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Find a file
Marc Durdin f6872e7919 fix(windows): OSK toolbar sync
As Keyman now monitors the Windows keyboard list from Control Panel, it
is no longer sufficient to refresh the toolbar only when a Keyman
keyboard is updated, as at that point Windows has not refreshed its own
language list in the registry. Instead, we need to monitor changes to
the relevant registry key and then refresh when those changes are
'complete'.

There is a problem: there does not appear to be a good way to monitor
for changes to Windows language settings. WM_SETTINGCHANGE is sent when
a language is added by the user in Settings, but the actual change
happens asynchronously, and we are not notified when the changes are
complete.

We also do not get notifications when languages are added via APIs.

Given the async nature of the language profile changes, this leads to
race conditions when we try to refresh the OSK toolbar. My preferred
solution currently is to monitor the relevant key in a separate thread,
and wait 1 second post-changes to actually do the refresh.
2020-12-17 13:23:05 +11:00
.github chore: refresh github templates 2020-11-30 13:48:34 +11:00
android chore(android): rework versionCode system 2020-12-15 06:31:01 +11:00
common auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -05:00
developer auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -05:00
docs chore(linux): Add sample settings files 2020-08-14 11:11:18 +02:00
ios Merge pull request #4106 from keymanapp/feat/ios/app/optional-crash-reporting 2020-12-15 06:03:03 +11:00
linux feat(linux): Rename onboard package 2020-12-02 11:52:48 +01:00
mac Merge pull request #3977 from keymanapp/chore/mac/history-stable-13 2020-11-27 12:36:30 +07:00
oem/firstvoices Merge pull request #4052 from keymanapp/chore/windows/oem/firstvoices-name 2020-12-04 13:54:30 +11:00
resources auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -05:00
web auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -05:00
windows/src fix(windows): OSK toolbar sync 2020-12-17 13:23:05 +11:00
.editorconfig fix(linux): add more package requirements 2020-02-06 18:26:57 +01:00
.flake8 feat(linux): Install keyboard on Gnome 2020-06-24 19:13:40 +02:00
.gitignore chore(windows): remove obsolete importkeyboard app 2020-12-15 11:20:09 +11:00
configure-repo.sh feat(common): Support git worktree when configuring local hooks 2020-02-24 18:30:57 +01:00
crowdin.yml chore(common/resources): Clean up README 2020-12-02 11:21:06 +07:00
HISTORY.md auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -05:00
lerna.json auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -05:00
linux.code-workspace default platform and baselayout for linux 2018-12-18 15:49:56 +07:00
package-lock.json fix(common): specifies version of hoisted TypeScript 2020-05-25 10:04:13 +07:00
package.json fix(common): specifies version of hoisted TypeScript 2020-05-25 10:04:13 +07:00
README.md chore(common): readme re: filepath length of repo base 2020-04-29 14:19:26 +07:00
TIER.md chore: update tier 2020-12-15 06:43:19 +11:00
VERSION.md auto: increment beta version to 14.0.211 2020-12-14 23:34:08 -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 1,500 languages!

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

Get Involved

Get involved

Development Status on status.keyman.com

Platform Alpha Beta Stable
Windows Alpha Beta Stable
macOS Alpha Beta Stable
Web Alpha Beta Stable
Android Alpha Beta Stable
iOS Alpha Beta Stable
Linux Alpha Beta Stable

Getting Started

Desktop Platforms

Web & Mobile Platforms

Release Types

Each platform maintains multiple types of releases:

  • Stable: A released version. On a stable or stable-<version> branch.
  • Beta: A version that is nearing full "stable" release. On the beta branch.
  • Alpha: Contains the very latest code. These versions are published daily whenever the code changes. On master branch.

License

Copyright (c) 2018-2020 SIL International. All rights reserved.

Licensed under the MIT License.

Keyman for Linux is licensed under the MIT License apart from ibus-kmfl which is licensed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Notes for Contributors

When cloning this repo for local development on a Windows machine, take care not to place it overly deep in your file system.
Some of the paths for compilation can push character lengths around 160 characters long, while certain operations on Windows systems may be limited to paths of 260 characters or less.
For example, git clean on Windows with msys is limited due to dependence on older Windows APIs.