Giter Site home page Giter Site logo

keymanapp / keyboards Goto Github PK

View Code? Open in Web Editor NEW
145.0 16.0 267.0 914.4 MB

Open Source Keyman keyboards

Batchfile 0.01% HTML 47.23% JavaScript 0.89% CSS 3.81% PHP 39.53% Shell 0.20% Perl 0.11% TeX 0.01% Hack 0.01% TypeScript 0.01% Python 0.18% Rich Text Format 7.85% C++ 0.16% C 0.01%
keyboard keyman unicode keyboards keyman-developer

keyboards's Introduction

Open Source Keyman keyboards

Table of Contents

File Layout

Keyboards are grouped into three folders:

  • release - keyboards with full source that pass our stringent quality checks, Unicode only, generally no PUA
  • legacy - binary distributions of keyboards, migrated from Tavultesoft servers, Unicode and non-Unicode
  • experimental - keyboards that have not yet passed the quality check, available from the 'experimental' category in Keyman apps with Keyman 10 and later. Unicode only, but PUA is acceptable.

Within each of the folders, keyboards are further grouped by first letter or by prefix, where multiple keyboards share the same prefix indicating provenance, for example sil or gff.

Contributing

Tool

Get the latest version of Keyman Developer to start the journey of keyboard development.

Standard keyboard design

A good way to start creating a keyboard is to plan out the requirements of the keyboard ahead and decide on the keyboard's language, target users, usability, structure, and many more steps that can be carried out further along the process. To ensure that the keyboard is up to standard, start by implementing the D.I.S.C.U.S. method. Find out more!

Keyboard submission guidelines

Please make sure the keyboard and the package compile successfully before making a keyboard submission. If there are warning messages, try to address all of them; if there are errors, those must be corrected before submission. Help on this: Compiler Messages

Publish your keyboard

When a keyboard is ready to submit, please confirm that the folders and files are consistent to the repository. For more clarification:

After two to three rounds of confirmation and testing, you are welcome to create a Pull Request

Modify a keyboard

To update a keyboard in this repository, follow these steps:

  1. Create a fork from this repository (Update your fork of the keyboards repository if you already have one)
  • The Fork button is located near the top of the repository, then follow the instructions here, and come back.
  • Update the forked repository here, and proceed to the next step.
  1. Download a copy of the latest files that are in your forked repository as a ZIP file.
  • Go to https://github.com/[YourGitHubName]/keyboards/ (after replacing [YourGitHubName] with your actual GitHub name)
  • Navigate to the keyboard, for example, to “release”, then “a”, then “ausephon”
  • At that point, the browser URL will be something like: https://github.com/[YourGitHubName]/keyboards/tree/master/release/a/ausephon
  • Copy the URL
  • Go to: https://download-directory.github.io/
  • Paste the URL into the field and press Enter
  • The files for the keyboard are zipped up and offered for download as: keymanapp keyboards master release-a_ausephon.zip
  • Rename the file to ausephon.zip and save (Or save first, then rename).
  • Unzip ausephon.zip to get the keyboard project folder ausephon with all of its files and subfolders.
  1. Update the keyboard files on your computer with Keyman Developer and/or a text editor
  • Double-click on the ausephon.kpj (Keyman project file) in the ausephon folder to launch Keyman Developer
  • Make your changes
  • Build and test the keyboard, then build the package
  • When everything is working and complete, include the changes to the HISTORY.md file and, if necessary, to the LICENSE.md file.
  • Almost there, but first, delete the build folder and the files in it
  • Also delete the .kpj.user (but don’t delete the .kpj file!).
  1. Submit your updates as a new pull request
  • Go back to GitHub
  • Create a new branch (from master) with a short name to represent the pull request. For example, ausephon-updates...
  • Navigate to the target folder location (click on release, then on a, and you’ll see the ausephon folder)
  • Click on “Add file”, then “Upload files”
  • Drag the “ausephon” folder from your Windows Explorer window, and drop it on the GitHub window
  • Follow the steps to create a pull request, although the commit message will be something like [ausephon] updated keyboard

Include font files

If the fonts are used on multiple keyboards, the font files must be placed under the shared folder. Follow through this documentation. However, if you are editing the keyboard package within the folders of the forked repository (skip step 2 above) only specifying the existing shared-font location in the package is necessary.

Documentation

If the guides are not enough to provide you with a complete keyboard, don't be afraid to explore the main keyboard and keyman developer help pages!

Building Keyboards

Prerequisites

Windows:

  • Git for Windows (or MinGW)
  • You will need to use Git Bash or equivalent to build (not tested with Cygwin), not Windows Command Prompt or PowerShell.
  • You can also use WSL2 (Bash on Ubuntu on Windows). Beware of line-ending changes if mixing Windows and WSL usage.
  • Node.js 18.0

Linux:

  • Node.js 18.0
  • bash 5.0 (standard now on most distributions)

macOS:

  • bash 5.0 (brew install bash)
  • coreutils (brew install coreutils)
  • Node.js 18.0 (brew install node)
  • Ensure coreutils is on the PATH: export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"

Build instructions

./build.sh can be used to build all the keyboards from the command line.

  • kmc, the Keyman Developer compiler, is installed as a Node.js module, and so Keyman Developer is not required for builds.

Common build.sh parameters

Summary:
  Build Keyman keyboards

Script Identifier:
  /c/Projects/keyman/keyboards

Usage:
  build.sh [options...] [action][:target]...

Actions:
  clean                      remove build/ folder and build artifacts
  configure                  install dependencies, e.g. npm
  build                      build target(s)
  test                       run automated tests

Targets:
  :project                   this project

Options:
  --silent, -s               Suppress unnecessary messages
  --keyboard, -k KEYBOARD    Build specific targets only, e.g. release/ or release/a/ or release/a/anii/, comma separated
  --verbose, -v              Verbose logging
  --debug, -d                Debug build
  --color                    Force colorized output
  --no-color                 Never use colorized output
  --help, -h                 Show this help

Dependencies:
  This module has no dependencies

* Specify action:target to run a specific action against a specific :target.
* If action is specified without a target suffix, it will be applied to all :targets.
* If :target is specified without an action prefix, build:target will be inferred.
* If no action, :target, or action:target entries are specified, build will run on all :targets.
  • Each keyboard also includes a project file which can be used to build the project - either from the command line kmc compiler, or from the Keyman Developer IDE.

Deprecated Keyboards

If a keyboard has been replaced by another keyboard, include a DEPRECATED.md file in the folder referencing the new keyboard name.

Common Links

Community

We appreciate the effort of reaching out about any issue or suggestion that is beneficial for the community. Share with us on our community site.

keyboards's People

Contributors

andjc avatar beniza avatar binilasanki avatar caforbes avatar cathaylaboratory avatar darcywong00 avatar davidlrowe avatar dyacob avatar eddieantonio avatar hopsandhops avatar ilhamkang avatar ind-nt avatar jackrittenberry avatar jbrase avatar katelem24 avatar lornasil avatar madskinner2 avatar makarasok avatar mcdurdin avatar miketvo avatar postmodernenglish avatar quwatsunny avatar ramesh-k avatar rik-shaw avatar rmlockwood avatar runeboard avatar sdysart avatar shreeshrii avatar victoriaq22 avatar xyzhelen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

keyboards's Issues

[fv_tsilhqotin] Suggestion for double consonants and ii

User-provided suggestion from community sites

In the language, there are no instances of double consonants at all; my suggestion would be to adapt the current keyboard in the following way:
ss becomes ŝ
zz becomes ẑ
ww becomes ŵ
and ii becomes ɨ

This would be easy to remember and also easy to type.

Thanks again for all you are doing for marginalized languages of the world.

[gff_ethiopic_7] Building for web has a set of keys that never match, throwing warnings

gff_ethiopic_7.kmn: Compiling C:\Projects\keyman\keyboards\release\gff\gff_ethiopic_7\source\gff_ethiopic_7.kmn for Windows, MacOSX...
gff_ethiopic_7.kmn: 'C:\Projects\keyman\keyboards\release\gff\gff_ethiopic_7\source\gff_ethiopic_7.kmn' compiled successfully for Windows to 'C:\Projects\keyman\keyboards\release\gff\gff_ethiopic_7\build\gff_ethiopic_7.kmx'.
gff_ethiopic_7.kmn: Compiling C:\Projects\keyman\keyboards\release\gff\gff_ethiopic_7\source\gff_ethiopic_7.kmn for Web, iOS, Android, WinPhone...
gff_ethiopic_7.kmn: Warning: line 266  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 184  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 265  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 155  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 164  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 174  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 175  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 176  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 183  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 188  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 196  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 184  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 156  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 160  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 161  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 165  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 180  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 185  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 197  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 200  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 154  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 163  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 170  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 182  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 199  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 157  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 166  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 171  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 186  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 153  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 162  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 169  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 181  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 198  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 271  warning 209A: The rule will never be matched because its key code is never fired.
gff_ethiopic_7.kmn: Warning: line 263  warning 209A: The rule will never be matched because its key code is never fired.

[sil_ipa] Keyboard fails to install

On Keyman Android, the sil_ipa 1.6 keyboard is available to download as

Undetermined
SIL IPA

When trying to download and install though, installation fails because the API returns null for languages

{
	"options": {
		"context": "language",
		"dateFormat": "standard",
		"device": "androidphone",
		"keyboardBaseUri": "https://s.keyman.com/keyboard/",
		"fontBaseUri": "https://s.keyman.com/font/deploy/",
		"keyboardid": "sil_ipa",
		"languageid": "und",
		"keyboardVersion": "current"
	},
	"language": []
}

.kps defines

<Languages>
    <Language ID="und-Latn">und-Latn</Language>
</Languages>

.keyboard_info defines

    "languages": ["und-fonipa"],

PR #141 has the history of choosing those language tags

Update: June 13, 2018
If any language tags need to be changed, might as well also investigate with sil_ipa doesn't exist on KeymanWeb.

Not found on:
https://keymanweb.com/?tier=alpha
https://keymanweb.com

How to use multi Characters in one button key?

Dear,

I have created a keyboard for touch screen. My problem is I want to use more than one characters words in one button key but I can not do it.
In my language, we have to use multi characters for complete the one word such as, မ + ႂ် = မႂ် . The word of ႂ် is a separate character like this ႂ + ် = ႂ် .
Can anyone tell me the way to use multi characters in one button? Please help and hope to hear from your respond soon.
Best Regards,
Sai Tawng Pha

pasifika20 and yolngu21 have mixed up language codes

Deprecation note: while yolngu21 is marked as deprecated, it has been replaced by el_yolngu which is currently desktop-only. This is arguably a problem as well...

yolngu21 is available for touch devices. el_yolngu and yolngu20 (also deprecated) have the correct language codes.

pasifika20 should have:

Name Code
Fijian fj
Hawaiian haw
Niue niu
Rarotongan rar
Samoan sm
Tahitian ty
Tongan to

yolngu21 should have:

Name Code
Dayi dax
Dhangu dhg
Dhuwal duj
Djambarrpuyngu djr
Djinang dji
Djinba djb
Gumatj gnn
Gupapuyngu guf
Jarnango jay
Ritarungo rit

Note that these names are not necessarily the preferred language names. These names are taken from the ISO639-3 list. I will be filing a separate issue to resolve preferred language names for Yolngu.

[ipauni11] Link to Charis font is broken

@tombogle writes

The link that is supposed to open a PDF about the Charis font is broken (and no such PDF seems to be in the repo). I think it would be better to just have a link to http://software.sil.org/charis/. The corresponding link for Doulos works, but assuming that PDF is readily available via the Doulos home page, it might b better to just link to that site instead. That gives a better chance of sending the user to the most up-to-date info. There is no link for Gentium. One should be added to take the user to http://software.sil.org/gentium/.

While we're on the topic of broken links, Marc has suggested:
"It would be helpful to do a consolidated effort on fixing broken links in the help documentation using an automated tool such as Xenu Link Sleuth"

GFF Eritrean-Tigrinya (gff-tir-er-powerpack-7) keyboard does not appear to support numbers correctly

Via customer support (X77903).

Here is what I have discovered and I hope you will correct the problem.

There are two (2) KEYBOARDS available for Eritrean Tigrigna(Tigrinya) typing on Keyman, both by Ge’ez Foundation. They are:

  1. GFF Eritrean-Tigrinya Language Keyboard +Font Power Pack (2.3 MB) (toggled by CNTR+ALT+T displaying a blue colored font) (ት)

  2. Tigrigna EZ (Eritrea) (101.8 KB) (toggled by CNTR+ALT+G displaying a green colored font) (ት)
    Package 2 works fine. Click (‘)1, one gets (፩). But package 1 will NOT do that! Package one is supposed to be the BETTER one by the developer’s own claim and I agree, EXCEPT it DOES NOT work with NUMBERS.

Discuss mobile keyboard names.

Right now when we submit a mobile keyboard, the keyboard name changes to the language name (perhaps from an Ethnologue list?).

For example, the "SIL Nubian" keyboard shows up as "Nobiin" which I believe is one of the languages it is associated with.

The "Jorai" keyboard shows up as "Jarai" which is not actually the preferred name by the people I've been working with on the keyboard.

Is there any way we could change this, either by editing the language list Keyman is using, or by putting it in the keyboard_info file to overwrite the default language name?

Update Padauk font in relevant keyboards

[Note: these keyboards are not yet in this repository - most are in internal-keyboards]

An update to Padauk (version 3.001) has been released. This version fixes a bug that changes lower ASCII characters from being marks to spacing characters. In many apps, this bug caused these characters to be stripped of their spacing and resulted in a jumble of letters. Although the intended use of this font is mainly for Myanmar script characters, this is a significant update if you ever use the Padauk font to also type Latin script characters in your documents.

Download the updated font here: http://software.sil.org/padauk/download/

Jon Coblentz
Non-Roman Scripts, SIL International

Layer-switching keys look different --instead of white font face, it's black.

For example, in Khmer language, the special key used to switch to numeric layer is labeled as "១២៣" which is the first three numbers in Khmer. Its font face is expected to be white just like any other special keys, but it isn't. (see the screenshot below)
special key appearance 2

The same issue happens with the special key used to switch to the default layer. "កខគ" is used in place of "ABC," and it looks weird. (see the screenshot below)
special key appearance 1

Mismatches in documentation for sil_ethiopic_power_g keyboard

There are a few documentation discrepancies for this keyboard.

  1. In the instructions ‘We’ is printed instead of ‘Wy’:

image

The 'K#' variations all work as expected.
















All the above work correctly.

  1. However, in the instructions ‘H[‘ OR ‘K’ should produce the following –

image

K works as above but ‘H[‘ does not work and produces the following:

ሐ[ H[
ሐ[ኡ H[u
ሐ[ኢ H[i
ሐ[ኣ H[a
ሐ[ H[y
ሐ[እ H[e
ሐ[ኦ H[o

ሐ[ኧኦ H[Wo
ሐ[ኧኢ H[Wi
ሐ[ኧኡ H[Wu
ሐ[ኧ H[W
ሐ[ኧ H[Wy

  1. 'H#' should produce the following, but does not.

image

ሐ# H#
ሐ#ኡ H#u
ሐ#ኢ H#i
ሐ#ኣ H#a
ሐ# H#y
ሐ#እ H#e
ሐ#ኦ H#o

So basically the 'H[' and 'H#' keys do not work.

sil_el_ethiopian_latin keyboard_info description notes

Via @tombogle: Note that in keyboard_info, the word "Latin" is not capitalized. Also, note the different wording in my DRAFT announcement vs. the wording in the keyboard_info. I was thinking my wording is correct and clearer, but I'm not sure.

From said DRAFT announcement:

"We have published an updated version of the “SIL EL - Ethiopian Latin” keyboard, intended to support keying many Ethiopian languages using Latin-based scripts"

Long press ញ on Khmer Angkor 1.0 gives coeng marker incorrectly

The long press on phone for ញ, selecting the base character from the long press menu, gives a coeng marker. This appears to be the only key giving this action which is a little strange, given that the first longpress option is generated from the base key on mobile.

bj_cree_east fails to compile with warnings

bj_cree_east.kmn: Warning: line 116  warning 209A: The rule will never be matched because its key code is never fired.
bj_cree_east.kmn: Warning: line 117  warning 209A: The rule will never be matched because its key code is never fired.

Temporarily allowing warnings on this keyboard so we can pass the build

Capture script metadata for keyboards

It would be very helpful to be able to search against script for keyboard metadata. We should be able to apply this through BCP 47 codes. Where a suppress-script exists for a given language, we should use that in automatically when compiling the keyboard metadata for search. If no suppress-script is given, then we should start to put these scripts into the BCP 47 tag data (this would be required for install on Windows in any case).

e.g. Instead of abg, we use abg-Latn. For en, we have a Suppress-Script of Latn in the language-subtag-registry, so we can reference that automatically.

We then also need to have the lookup between script subtag and common names in the search.

What do we do with IPA? und-fonipa is the agreed tag. But we may need a bit of a special-case to capture all cases.

moveToElement does not accept element ID strings any mor

This issue was found in the Keyman Developer Web Debugger.

Chrome Version 64.0.3282.140 (Official Build) (64-bit)
Keyman Developer Version 10.0.1000.0

Uncaught TypeError: e.focus is not a function
    at DOMManager.moveToElement (kmwdom.ts:1330)
    at KeymanBase.moveToElement (kmwbase.ts:483)
    at olympus.phnompenh.keyman.com/:123

Pan-sahelian keyboard (NFD) needs to reorder diacritics

Steps to reproduce:

  1. Create bookmarklet for Fulfulde, Adamawa Keyboard
javascript: void((function() {
    try {
        var e = document.createElement('script');
        e.type = 'text/javascript';
        e.src = 'https://r.keymanweb.com/code/bml20.php?langid=fub&keyboard=ps32&lang=Fulfulde%2C Adamawa pan-Sahelian (v. 3.2)%26font%3D%7B"family"%3A"LatinWeb"%2C"source"%3A%5B"DejaVuSans.ttf"%2C"DejaVuSans.mobileconfig"%5D%2C"files"%3A%5B"DejaVuSans.ttf"%2C"DejaVuSans.mobileconfig"%5D%2C"path"%3A"https%3A%2F%2Fs.keyman.com%2Ffont%2Fdeploy%2F"%7D';
        document.body.appendChild(e);
    } catch (v) {}
})())
  1. Use the bookmarklet on a website
  2. Using the Pan-sahelian keyboard, type
    w + 2 + 9 ==> ẃ̩

The resulting diacritics (U+0301) + (U+0329) are in the wrong order

Add help from welcome.htm content

Many keyboards are missing online help documentation, but the .kmp files contain welcome.htm content that can be used.

Running a script, the list seems to be:

Legacy Keyboards

  • ./legacy/a/acoli/source/acoli.kmp
  • ./legacy/a/amazigh_lat.kmn/source/amazigh_lat.kmn.kmp
  • ./legacy/a/aramaic/source/aramaic.kmp
  • ./legacy/b/bu/source/bu.kmp
  • ./legacy/b/buang/source/buang.kmp
  • ./legacy/b/bukawa/source/bukawa.kmp
  • ./legacy/b/busau/source/busau.kmp
  • ./legacy/c/cameroonqwertyunicode50/source/cameroonqwertyunicode50.kmp
  • ./legacy/c/creekeysdesktop3/source/creekeysdesktop3.kmp
  • ./legacy/c/cs-pinyin/source/cs-pinyin.kmp
  • ./legacy/d/deseret/source/deseret.kmp
  • ./legacy/d/dvsp/source/dvsp.kmp
  • ./legacy/e/esperantohx/source/esperantohx.kmp
  • ./legacy/f/farsi_unicode/source/farsi_unicode.kmp
  • ./legacy/g/galaxiegreekandhebrew/source/galaxiegreekandhebrew.kmp
  • ./legacy/g/gensalish/source/gensalish.kmp
  • ./legacy/g/gensalishu/source/gensalishu.kmp
  • ./legacy/g/grkpolycompv103/source/grkpolycompv103.kmp
  • ./legacy/h/hararab/source/hararab.kmp
  • ./legacy/h/hararabalt/source/hararabalt.kmp
  • ./legacy/h/harethi/source/harethi.kmp
  • ./legacy/h/harethialt/source/harethialt.kmp
  • ./legacy/h/harlatn/source/harlatn.kmp
  • ./legacy/h/heidelberginputsolution/source/heidelberginputsolution.kmp
  • ./legacy/h/hi-keyboard/source/hi-keyboard.kmp
  • ./legacy/i/indic roman transliteration/source/indic roman transliteration.kmp
  • ./legacy/i/inuktitut_4/source/inuktitut_4.kmp
  • ./legacy/k/khowar/source/khowar.kmp
  • ./legacy/k/kmhmu/source/kmhmu.kmp
  • ./legacy/k/km_cree/source/km_cree.kmp
  • ./legacy/k/km_ojibwasyllabics/source/km_ojibwasyllabics.kmp
  • ./legacy/k/km_ojicreesyllabics/source/km_ojicreesyllabics.kmp
  • ./legacy/k/korda/source/korda.kmp
  • ./legacy/k/korean_morse/source/korean_morse.kmp
  • ./legacy/kbd/kbda1/source/kbda1.kmp
  • ./legacy/kbd/kbda2/source/kbda2.kmp
  • ./legacy/kbd/kbda3/source/kbda3.kmp
  • ./legacy/kbd/kbdal/source/kbdal.kmp
  • ./legacy/kbd/kbdarme/source/kbdarme.kmp
  • ./legacy/kbd/kbdarmw/source/kbdarmw.kmp
  • ./legacy/kbd/kbdaze/source/kbdaze.kmp
  • ./legacy/kbd/kbdazel/source/kbdazel.kmp
  • ./legacy/kbd/kbdbash/source/kbdbash.kmp
  • ./legacy/kbd/kbdbe/source/kbdbe.kmp
  • ./legacy/kbd/kbdbene/source/kbdbene.kmp
  • ./legacy/kbd/kbdbgph/source/kbdbgph.kmp
  • ./legacy/kbd/kbdbhc/source/kbdbhc.kmp
  • ./legacy/kbd/kbdblr/source/kbdblr.kmp
  • ./legacy/kbd/kbdbr/source/kbdbr.kmp
  • ./legacy/kbd/kbdbu/source/kbdbu.kmp
  • ./legacy/kbd/kbdbulg/source/kbdbulg.kmp
  • ./legacy/kbd/kbdca/source/kbdca.kmp
  • ./legacy/kbd/kbdcr/source/kbdcr.kmp
  • ./legacy/kbd/kbdcz/source/kbdcz.kmp
  • ./legacy/kbd/kbdcz1/source/kbdcz1.kmp
  • ./legacy/kbd/kbdcz2/source/kbdcz2.kmp
  • ./legacy/kbd/kbdda/source/kbdda.kmp
  • ./legacy/kbd/kbddiv1/source/kbddiv1.kmp
  • ./legacy/kbd/kbddiv2/source/kbddiv2.kmp
  • ./legacy/kbd/kbddv/source/kbddv.kmp
  • ./legacy/kbd/kbdes/source/kbdes.kmp
  • ./legacy/kbd/kbdest/source/kbdest.kmp
  • ./legacy/kbd/kbdfa/source/kbdfa.kmp
  • ./legacy/kbd/kbdfc/source/kbdfc.kmp
  • ./legacy/kbd/kbdfi/source/kbdfi.kmp
  • ./legacy/kbd/kbdfi1/source/kbdfi1.kmp
  • ./legacy/kbd/kbdfo/source/kbdfo.kmp
  • ./legacy/kbd/kbdfr/source/kbdfr.kmp
  • ./legacy/kbd/kbdgae/source/kbdgae.kmp
  • ./legacy/kbd/kbdgeo/source/kbdgeo.kmp
  • ./legacy/kbd/kbdgeoer/source/kbdgeoer.kmp
  • ./legacy/kbd/kbdgeoqw/source/kbdgeoqw.kmp
  • ./legacy/kbd/kbdgkl/source/kbdgkl.kmp
  • ./legacy/kbd/kbdgr/source/kbdgr.kmp
  • ./legacy/kbd/kbdgr1/source/kbdgr1.kmp
  • ./legacy/kbd/kbdgrlnd/source/kbdgrlnd.kmp
  • ./legacy/kbd/kbdhe/source/kbdhe.kmp
  • ./legacy/kbd/kbdhe220/source/kbdhe220.kmp
  • ./legacy/kbd/kbdhe319/source/kbdhe319.kmp
  • ./legacy/kbd/kbdheb/source/kbdheb.kmp
  • ./legacy/kbd/kbdhela2/source/kbdhela2.kmp
  • ./legacy/kbd/kbdhela3/source/kbdhela3.kmp
  • ./legacy/kbd/kbdhept/source/kbdhept.kmp
  • ./legacy/kbd/kbdhu/source/kbdhu.kmp
  • ./legacy/kbd/kbdhu1/source/kbdhu1.kmp
  • ./legacy/kbd/kbdic/source/kbdic.kmp
  • ./legacy/kbd/kbdinasa/source/kbdinasa.kmp
  • ./legacy/kbd/kbdinbe1/source/kbdinbe1.kmp
  • ./legacy/kbd/kbdinbe2/source/kbdinbe2.kmp
  • ./legacy/kbd/kbdinben/source/kbdinben.kmp
  • ./legacy/kbd/kbdindev/source/kbdindev.kmp
  • ./legacy/kbd/kbdinguj/source/kbdinguj.kmp
  • ./legacy/kbd/kbdinhin/source/kbdinhin.kmp
  • ./legacy/kbd/kbdinkan/source/kbdinkan.kmp
  • ./legacy/kbd/kbdinmal/source/kbdinmal.kmp
  • ./legacy/kbd/kbdinmar/source/kbdinmar.kmp
  • ./legacy/kbd/kbdinori/source/kbdinori.kmp
  • ./legacy/kbd/kbdinpun/source/kbdinpun.kmp
  • ./legacy/kbd/kbdintam/source/kbdintam.kmp
  • ./legacy/kbd/kbdintel/source/kbdintel.kmp
  • ./legacy/kbd/kbdinuk2/source/kbdinuk2.kmp
  • ./legacy/kbd/kbdir/source/kbdir.kmp
  • ./legacy/kbd/kbdit/source/kbdit.kmp
  • ./legacy/kbd/kbdit142/source/kbdit142.kmp
  • ./legacy/kbd/kbdiulat/source/kbdiulat.kmp
  • ./legacy/kbd/kbdkaz/source/kbdkaz.kmp
  • ./legacy/kbd/kbdkhmr/source/kbdkhmr.kmp
  • ./legacy/kbd/kbdkyr/source/kbdkyr.kmp
  • ./legacy/kbd/kbdla/source/kbdla.kmp
  • ./legacy/kbd/kbdlao/source/kbdlao.kmp
  • ./legacy/kbd/kbdlt/source/kbdlt.kmp
  • ./legacy/kbd/kbdlt1/source/kbdlt1.kmp
  • ./legacy/kbd/kbdlt2/source/kbdlt2.kmp
  • ./legacy/kbd/kbdlv/source/kbdlv.kmp
  • ./legacy/kbd/kbdlv1/source/kbdlv1.kmp
  • ./legacy/kbd/kbdmac/source/kbdmac.kmp
  • ./legacy/kbd/kbdmacst/source/kbdmacst.kmp
  • ./legacy/kbd/kbdmaori/source/kbdmaori.kmp
  • ./legacy/kbd/kbdmlt47/source/kbdmlt47.kmp
  • ./legacy/kbd/kbdmlt48/source/kbdmlt48.kmp
  • ./legacy/kbd/kbdmon/source/kbdmon.kmp
  • ./legacy/kbd/kbdmonmo/source/kbdmonmo.kmp
  • ./legacy/kbd/kbdne/source/kbdne.kmp
  • ./legacy/kbd/kbdnepr/source/kbdnepr.kmp
  • ./legacy/kbd/kbdno/source/kbdno.kmp
  • ./legacy/kbd/kbdno1/source/kbdno1.kmp
  • ./legacy/kbd/kbdpash/source/kbdpash.kmp
  • ./legacy/kbd/kbdpl/source/kbdpl.kmp
  • ./legacy/kbd/kbdpl1/source/kbdpl1.kmp
  • ./legacy/kbd/kbdpo/source/kbdpo.kmp
  • ./legacy/kbd/kbdro/source/kbdro.kmp
  • ./legacy/kbd/kbdropr/source/kbdropr.kmp
  • ./legacy/kbd/kbdrost/source/kbdrost.kmp
  • ./legacy/kbd/kbdru/source/kbdru.kmp
  • ./legacy/kbd/kbdru1/source/kbdru1.kmp
  • ./legacy/kbd/kbdsf/source/kbdsf.kmp
  • ./legacy/kbd/kbdsg/source/kbdsg.kmp
  • ./legacy/kbd/kbdsl/source/kbdsl.kmp
  • ./legacy/kbd/kbdsl1/source/kbdsl1.kmp
  • ./legacy/kbd/kbdsmsfi/source/kbdsmsfi.kmp
  • ./legacy/kbd/kbdsmsno/source/kbdsmsno.kmp
  • ./legacy/kbd/kbdsorex/source/kbdsorex.kmp
  • ./legacy/kbd/kbdsorst/source/kbdsorst.kmp
  • ./legacy/kbd/kbdsp/source/kbdsp.kmp
  • ./legacy/kbd/kbdsw/source/kbdsw.kmp
  • ./legacy/kbd/kbdsw09/source/kbdsw09.kmp
  • ./legacy/kbd/kbdsyr1/source/kbdsyr1.kmp
  • ./legacy/kbd/kbdsyr2/source/kbdsyr2.kmp
  • ./legacy/kbd/kbdtajik/source/kbdtajik.kmp
  • ./legacy/kbd/kbdtat/source/kbdtat.kmp
  • ./legacy/kbd/kbdth0/source/kbdth0.kmp
  • ./legacy/kbd/kbdth1/source/kbdth1.kmp
  • ./legacy/kbd/kbdth2/source/kbdth2.kmp
  • ./legacy/kbd/kbdth3/source/kbdth3.kmp
  • ./legacy/kbd/kbdtiprc/source/kbdtiprc.kmp
  • ./legacy/kbd/kbdtuf/source/kbdtuf.kmp
  • ./legacy/kbd/kbdtuq/source/kbdtuq.kmp
  • ./legacy/kbd/kbdturme/source/kbdturme.kmp
  • ./legacy/kbd/kbdughr/source/kbdughr.kmp
  • ./legacy/kbd/kbduk/source/kbduk.kmp
  • ./legacy/kbd/kbdukx/source/kbdukx.kmp
  • ./legacy/kbd/kbdur/source/kbdur.kmp
  • ./legacy/kbd/kbdur1/source/kbdur1.kmp
  • ./legacy/kbd/kbdus/source/kbdus.kmp
  • ./legacy/kbd/kbdusa/source/kbdusa.kmp
  • ./legacy/kbd/kbdusl/source/kbdusl.kmp
  • ./legacy/kbd/kbdusr/source/kbdusr.kmp
  • ./legacy/kbd/kbdusx/source/kbdusx.kmp
  • ./legacy/kbd/kbduzb/source/kbduzb.kmp
  • ./legacy/kbd/kbdvntc/source/kbdvntc.kmp
  • ./legacy/kbd/kbdyak/source/kbdyak.kmp
  • ./legacy/kbd/kbdycc/source/kbdycc.kmp
  • ./legacy/kbd/kbdycl/source/kbdycl.kmp
  • ./legacy/l/laounicodebasic_on_thaikbd/source/laounicodebasic_on_thaikbd.kmp
  • ./legacy/l/lingfilsemitica/source/lingfilsemitica.kmp
  • ./legacy/l/lushootseed/source/lushootseed.kmp
  • ./legacy/m/moore/source/moore.kmp
  • ./legacy/m/mozhi/source/mozhi.kmp
  • ./legacy/m/mozhi51/source/mozhi51.kmp
  • ./legacy/m/multi pak/source/multi pak.kmp
  • ./legacy/n/naskeysdesktop/source/naskeysdesktop.kmp
  • ./legacy/n/ndailu keyman keyboard/source/ndailu keyman keyboard.kmp
  • ./legacy/p/persian11/source/persian11.kmp
  • ./legacy/p/phoneticarabic/source/phoneticarabic.kmp
    [ ] ./legacy/p/phonyrus/source/phonyrus.kmpAlready exists
  • ./legacy/p/pokhto/source/pokhto.kmp
  • ./legacy/r/russian-tajik/source/russian-tajik.kmp
  • ./legacy/s/sabdalipi assamese/source/sabdalipi assamese.kmp
  • ./legacy/s/sipon phonetic sinhala/source/sipon phonetic sinhala.kmp
  • ./legacy/t/tchadunicode_with_charis_fonts/source/tchadunicode_with_charis_fonts.kmp
  • ./legacy/t/thamizha anjal/source/thamizha anjal.kmp
  • ./legacy/t/thamizha bamini/source/thamizha bamini.kmp
  • ./legacy/t/thamizha tamil99/source/thamizha tamil99.kmp
  • ./legacy/t/thamizha typewriter/source/thamizha typewriter.kmp
  • ./legacy/t/thompsonu/source/thompsonu.kmp
  • ./legacy/t/tunisianspokenarabic/source/tunisianspokenarabic.kmp
  • ./legacy/t/turkmen/source/turkmen.kmp
  • ./legacy/u/urdu ph - package/source/urdu ph - package.kmp
    [ ] ./legacy/v/venetian/source/venetian.kmp Already exists
  • ./legacy/w/waiwai/source/waiwai.kmp
  • ./legacy/w/wiwa/source/wiwa.kmp

Release Keyboards

[ ] ./release/sil/sil_ipa/build/sil_ipa.kmp Added in #207

Questions

  • Are these different versions of ./legacy/m/mozhi_1_1_0?
  • ./legacy/m/mozhi/source/mozhi.kmp
  • ./legacy/m/mozhi51/source/mozhi51.kmp
  • Is this the same as ./legacy/e/ekwnewtwuni.kmp?
  • ./legacy/t/thamizha typewriter/source/thamizha typewriter.kmp
  • Is this the same as visual_media_tamil_x.kmp? (modular and typewriter)
  • ./legacy/t/tamil - visual media/source/tamil - visual media.kmp

For keyboards that contain welcome.htm in the .kmp file, convert them to help/[keyboardID].php so they'll deploy to help.keyman.com

Typing አዕምሮ on gff_amh_7 keyboard is difficult

I am using the Amharic fonts and I have hard time to script the word አዕምሮ. After I write አ to write ዕ when I press e twice it changes the first letter አ to ኧ. I tried reading the manual and using ' to keep the letter not to change with the vowels but it does not work for me. I would like to write without any interruption and editing. So, if you have any idea please help...

Response from myself: The best I can suggest right now is to type a'eemro and then go back and delete the apostrophe (') mark.

https://secure.tavultesoft.com/forums/topic.php?ForumTopicID=488&ForumPostID=1643

Several keyboards have .keyboard_info with custom language codes that should be corrected

The language codes recorded for a number of keyboards should be improved now that we have BCP 47 instead of straight ISO 639-3:

  • 1. qab should become und-fonipa
    • bu
    • indic roman transliteration
    • ipatotal
    • nw_iranian_latin
    • ipauni111
    • ipa93_km5
  • 2. qae should become fr-ca
    • canadian_french
    • canadian_french_legacy
    • canadian_ms
    • european2
  • 3. qaf should become en-US (or eliminated, contrast to en?)
    • dvorak
    • european2
    • us_dvorak
    • us_dvorak_lh
    • us_dvorak_rh
    • us_int
    • us
  • 4. qag should probably be eliminated (es-Latin America) or replaced with country-specific codes
    • european2
    • latin_american
  • 5. qah should be replaced with pt-br
    • brazilian_portuguese
    • european2
    • portuguese_abnt
    • portuguese_abnt2
  • 6. qai should be eliminated
    • only used with european2

CS-Pinyin has impossible pinyin sequences on US English keyboard

The CS-Pinyin keyboard has a few sequences that are impossible to type on a US English keyboard. These presumably arose because the data came from an Austrian or German database?

"lü4","律","lǜ"
"lü4","率","lǜ"
"lü3","旅","lǚ"
"lü4","绿","lǜ"
"lü4","虑","lǜ"
"lü3","吕","lǚ"
"lü3","履","lǚ"
"lü2","驴","lǘ"
"lü3","屡","lǚ"
"lü3","缕","lǚ"
"lü3","侣","lǚ"
"lü3","铝","lǚ"
"lü3","捋","lǚ"
"lü4","滤","lǜ"
"lü4","氯","lǜ"
"lü3","褛","lǚ"
"lü2","闾","lǘ"
"lü3","膂","lǚ"
"lü2","榈","lǘ"
"lü3","偻","lǚ"

and

"nü3","女","nǚ"
"nü3","钕","nǚ"
"nü4","恧","nǜ"
"nü4","衄","nǜ"

In this case, ü in the first column should be v.

Please check for other restrictive characters in the database when addressing this issue.

arabic_izza touch subkeys

For the phone layout for the arabic_izza touch keyboard, there are a few sets of subkeys. My impression from the text on each key is that the author is not expecting the keys to be mapped through the kmn mapping. But they are. So the keytops are wrong for what output will happen. E.g. the K_PERIOD in the default layer has subkeys and both the K_COLON and K_BACKSLASH as listed there will output \u0650.

The "Ctrl Alt" Simulation Doesn't Output the Expected Characters

With the keyboards that use AltGr, when simulating the AltGr for the "Ctrl Alt", the expected characters are not output when using "the Ctrl Alt"; the OSK shows those characters though.

For instance, when pressing AltGr or "Ctrl Alt", the OSK shows this same layout:
khmer angkor when pressing altgr or ctrl alt

but nothing is output when press any key while press & hold the "Ctrl Alt". Only with the AltGr that the expected characters are output.

The bug can be reproduced using this keyboard: https://keyman.com/keyboards/khmer_angkor .

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.