mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-22 16:27:41 +00:00
Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Running kmc on a set of keyboards would sporadically fail after some time. It turns out this was related to memory allocation, specifically, resizing the WASM module's memory buffer caused `TypedArray` views into the memory to be reset! By default, when a `Uint8Array` is created from an `ArrayBuffer` (e.g. `Module.HEAP8.buffer`), it is a dynamic view into that buffer. This module buffer can be dynamically reallocated at any time, which can happen when allocating memory in WASM code (so the change will look _really_ weird in a stack trace). Thus, to ensure we don't trip over ourselves, we need to copy the buffer. Fortunately, creating a `Uint8Array` from a `Uint8Array` copies the data, and is pretty quick. |
||
|---|---|---|
| .github | ||
| android | ||
| common | ||
| core | ||
| developer | ||
| docs | ||
| ios | ||
| linux | ||
| mac | ||
| oem/firstvoices | ||
| resources | ||
| web | ||
| windows | ||
| .clang-format | ||
| .editorconfig | ||
| .eslintrc.cjs | ||
| .flake8 | ||
| .gitignore | ||
| .nycrc.json | ||
| .shellcheckrc | ||
| CODE_OF_CONDUCT.md | ||
| configure-repo.sh | ||
| CONTRIBUTING.md | ||
| crowdin.yml | ||
| HISTORY.md | ||
| LICENSE.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| TIER.md | ||
| tsconfig-base.json | ||
| tsconfig.cjs.json | ||
| tsconfig.esm-base.json | ||
| tsconfig.esm.json | ||
| VERSION.md | ||
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.
