When option 'SkipMetadataFiles' is not set in the project (inverse of
'Build metadata files for Keyman Cloud' in Project Settings dialog),
then will run the validation step and generate .keyboard_info /
.model_info from the IDE. Also add corresponding log messages (and add
formatting for some others that were missing).
Fixes: #16068
Test-bot: skip
This comes out of a design philosophy review on what we include when we
embed OSK data into KMX.
We will now avoid embedding font name into the OSK (and hence .kmx)
altogether, and leave that metadata to the packaging data. Reasons:
1. The font information is specified in the .kps, so we have to do a
patchup on the .kmx during packaging if we want to embed the info
into the OSK.
2. The referenced font must be supplied separately anyway (via .kmp,
@font-face, or system supplied, etc), so including the font facename
in the keyboard is not really all that helpful.
3. Philosophically, the font is really a presentation level factor
(aside from displaymap considerations). Keeping it together with
future theming and styling choices, rather than the key layout data,
seems appropriate.
4. This makes fewer places where font data is referenced -- in fact, to
just one place: in the .kps/.kmp for LDML keyboards, which is great.
This also simplifies some aspects of the embed-osk-in-kmx work, removing
the need to patch the .kmx after the build, and eliminates the smelly
kmx-plus-osk-token.ts file.
A corresponding change has been made to the design document referenced
in #14857.
Test-bot: skip
Remove old content and place redirects where the content is adequately
replaced by the new walkthrough. Leaves some content which does not
overlap the walkthrough. Moved reference information about package
contents.
Test-bot: skip
Presenting as a commit as I made many minor edits in-place and this was
much simpler than trying to use GitHub review for this level of detail.
Test-bot: skip
Build-bot: skip
The disp and layr sections have new v19 layouts, to support the Keyman
OSK requirements for epic/embed-osk-in-kmx. This supports writing the
new versions of these sections in Developer and loading them into Core,
doing transformations where necessary so that Core always works with v19
structures after load.
This does not implement the transformations required to support the OSK
APIs; that will be implemented in a follow-up PR. Nor is support for
writing the OSK data from source .kvks and .keyman-touch-layout
supported; this is just the scaffolding for supporting the structures in
the KMX+ data.
Test-bot: skip
These were replaced by kmc in v17.0. We kept them as legacy alternatives
in v18.0, but it is time to remove them now to reduce the maintenance of
having multiple entry points to kmc.
Fixes: #13181
Test-bot: skip
Special key caps such as '*ZWNJ*' are defined in a number of places in
the source. In theory, we could DRY these definitions out, but that
would add a number of unhelpful dependencies or take considerable time
to implement. So, for now I opted to write a unit test to compare the
definitions as found in the following files, treating web's definition
as primary:
* web/src/engine/osk/src/specialCharacters.ts
* developer/src/tike/xml/layoutbuilder/constants.js
* developer/src/kmc-kmn/kmw-compiler/constants.ts
* developer/docs/help/reference/file-types/keyman-touch-layout.md
* core/include/ldml/keyman_core_ldml.ts
Note that the keyman_core_ldml.ts file changes are not included in this
commit, and hence the unit test for it is currently skipped. This will
be enabled in a subsequent commit along with other KMX+ changes to
support epic/embed-osk-in-kmx.
Test-bot: skip