Commit graph

16 commits

Author SHA1 Message Date
Marc Durdin
be4f036a3c feat(developer): Add support for building a folder to kmc
Relates to #2761.

kmc now supports passing in a folder and building all Keyman source
files found in the folder, even if a .kpj is not present in the folder.

If a .kpj file exists, `KeymanDeveloperProject/Options/Version` will be
checked to determine behaviour. If this field is missing or "1.0", then
the classical behaviour persists.

If the Version field is "2.0", the `Files` key is ignored, and .kmn,
.xml, .model.ts, and .kps files under `sourcePath` are enumerated and
added to the in-memory project for build.

If a .kpj is not present in the folder, a virtual project is constructed
in memory with the following defaults:

* `version`: `2.0`
* `buildPath`: `$PROJECTPATH/build`
* `sourcePath`: `$PROJECTPATH/source`
* `compilerWarningsAsErrors`: `false`
* `warnDeprecatedCode`: `true`
* `checkFilenameConventions`: `true`

It is still considered an error to include both a keyboard and a model
in the same file, but a version 2.0 project will not include the field
determining its type in `Options/ProjectType`; this will instead be
checked during build.

The call to `kmc` can reference a folder or a .kpj file. The .kpj file
must have the same basename as the folder name (e.g.
`khmer_angkor/khmer_angkor.kpj`).

WARNING: this does not add support for 2.0 projects to Keyman Developer;
it is likely that opening a version 2.0 project in Developer will
currently corrupt it.

WARNING: it is not anticipated that kmcomp.exe will be updated to
support version 2.0 projects -- rather kmcomp.exe will be removed before
release of v17, and replaced with kmc.
2023-02-27 13:11:22 +07:00
Marc Durdin
647803ef28 feat(common): add .kpj typescript reader and schema 2023-02-25 11:17:39 +07:00
Marc Durdin
da72845da3 feat(common): add keyman-touch-layout format and readers/writers for typescript 2022-10-10 07:23:38 +11:00
Marc Durdin
78f4660557 feat(common): kvks writer for TypeScript
Also splits attributes from sub-elements in kvks-file in order to make
round-trip writing more pleasant.

Adds new round-trip test for kvks writer.

Removes incorrect property keybitmap, adds missing property layout.
2022-09-29 12:32:12 +10:00
Marc Durdin
50db7a2c9b feat(developer): add schemas for .kvk and .kvks
Also minor tweaks around reading .xml files.
2022-09-26 20:05:52 +10:00
Marc Durdin
c8971a457c
chore: Apply suggestions from code review 2022-07-15 08:58:12 +10:00
Marc Durdin
6032181e18 feat(developer): rework displayHint to defaultHint
After a demo of the Touch Layout Editor @jahorton suggested using a
"default hint" model instead of the "display hint" from the design spec.
I liked this and have reworked the design accordingly. With the default
hint model, a source for the hint text can be specified, such as the
default longpress key, or a specific flick key. This can then be
overridden on a key level.

The hint input element now shows a placeholder to indicate the default
hint for the key, and if a hint has been customised for a given key, it
is shown in green on the key cap.

Changing the default hint does not impact any customised hints.
2022-07-14 10:58:59 +10:00
Marc Durdin
11d8a3ad65 feat(developer): add hint properties to touch layout schema 2022-07-14 10:58:54 +10:00
Marc Durdin
51a94a1d7d feat(developer): cleanup touch layout files on load and save
Improves the .keyman-touch-layout clean schema and adds additional
cleanup during load and save in the Touch Layout Editor.

The compiler already does transforms for the relevant fields to the
formats that KeymanWeb is expecting (in particular, width, pad to
string).

This is preparation for adding hint data to the format as well.
2022-07-14 10:57:39 +10:00
Marc Durdin
b2427386f1 feat(developer): tighter spec for .keyman-touch-layout 2022-06-30 14:37:43 +10:00
Marc Durdin
ebfd474d90 feat(developer): add flick and multitap to touch layout schema and doc
Does not tighten the spec for legacy data -- that should probably be a
separate schema file.
2022-06-30 11:43:51 +10:00
Marc Durdin
3d9d6f59dc chore: add documentation for keyman-touch-layout 2022-06-30 11:07:38 +10:00
Marc Durdin
87cc5d42a8 feat(developer): add missing props to schema and make more lenient 2022-06-29 06:05:30 +10:00
Marc Durdin
d9accbe07b feat(developer): draft .keyman-touch-layout schema 2022-06-28 11:31:20 +10:00
Marc Durdin
cb240e259f chore(windows): move schemas to common 2022-06-10 13:26:05 +10:00
Marc Durdin
b9c492a66b feat(developer): validate .kps files during compile
Fixes #5464.

The keyboards repository already has code to validate .xsd files, using
xmllint. This adds the same functionality directly into kmcomp and TIKE.
2021-11-11 14:41:04 +11:00