- spec: change caps value to 0x100 #7533
- add a 'mod_all' for validating valid modifier keys, plus tests
- add asserts on C++ side mapping modifiers to keyman constants
- use 'mod_all' to validate modifiers
- further fix modifier -> mod in binary
For: #7985 and related to #7533
- spec: update spec for layr.mod field
- core/include/ldm: update constants
- bitfield modelled after s_modifier_names[] / LCTRLFLAG etc.
- new test case k_004_tinyshift, also update k_010_mt
- update const builder to ignore all *_map properties
- split utility out to utils, add test
For: #7533
(cherry picked from commit 0346bea488)
- update .ts constants
- update builder to support digits in section id
- update XML and stub KMXPlusData
For feat(developer): ldml: include all LDML data in kmx+ 🙀#7532
Fixes#7487.
`KMN_API` defines only import/export/static modifiers for functions, so
it makes no sense to apply it to a typedef. (Previously, I thought it
also included a calling convention, but it doesn't.)
Recently some include files got added to `common/include` which are
referenced by `core/include/keyman`. This change adds the necessary
code to install them in the same directory as the other include files.
Fixes#7490.
Also splits the root tsconfig.json into tsconfig.cjs.json and
tsconfig.esm.json. These are not typically used at present but in theory
you could do a `tsc -b <tsconfig.x.json>` and build all modules. In
practice, we still have some prebuild steps that make that a bit of a
pain.
Adds infrastructure required to support caps lock control on keyboard
activation per #5822.
Keyboardprocessor implementation is currently a stub, and engines will
need corresponding updates to support the new API.
Adds compilers and minimal unit tests for transform sections bksp,
finl, ordr, and tran, and cleans up problems in the corresponding
builders.
Adds a utility script for building test fixtures for manual analysis:
./build.sh build-fixtures
Refactors constants to give us design-time type safety once more.
Adds definitions for LDML keyboard transform elements `transforms`,
`backspaces`, and `reorders`, and the binary format sections `bksp`,
`elem`, `finl`, `ordr`, and `tran`.
Minimally updates the compiler so that it will build, but no other
changes to the compiler.
Compiler and Typescript updates to support building these sections will
come in the next PR.
Just reorders all work around the various sections to match the binary
format order -- that is, 'sect' first, then all other sections
alphabetically.
This also means the compiler now emits the sections in the expected
order.
No other changes to functionality.
Updates compiler, headers and documentation for the 'name' section,
which will always be present as the LDML keyboard spec requires at least
one name in the `<names>` element.
Well, almost. There are still callback side-effects for messages. These
may in future be returned as an array as well, eliminating the need for
a message callback.
But restructures each section compiler so that it is self-contained and
responsible only for writing its own section. Also tightens up the types
for the sections constants.
Last, but not least, moves responsibility for writing the output .kmx
out of compiler.ts and into its callers -- removing one dependency from
the compiler. Reading input files still needs to be done in the
compiler, as there may be multiple input files with `<import>` that we
cannot know about until we start parsing xml.
Adds support for writing kmxplus section of a kmx file. Extends KMXFile
to a KMXPlusFile subclass. Adds KMXPlusBuilder which is called from
KMXBuilder if KMXBuilder finds that the file is a KMXPlusFile.
This means that KMXPlusBuilder generates a buffer that could be stored
independently of its parent .kmx file transport, if that is later
considered desirable.
Adds new constants for sizes of various table components, which makes
building the file much simpler.
Splits the building of keyboardprocessor_ldml.h into a separate
tsconfig.build.json, and designates keyboardprocessor_ldml.ts as a new
Typescript/Node module @keymanapp/ldml-keyboard-constants.
Includes an example usage in the (currently unused) kmx-plus.ts.