spiegel-keyman/developer/src
Marc Durdin c155325d73 fix(developer): Select BCP47 Code dialog inconsistencies
Fixes #8157.

There are some limitations in this dialog as it stands; we will rework
it completely when we revisit BCP 47 tagging.

However, for now, this addresses some strange behaviours around the
Reset button and the displayed output:

* The Reset button will only be enabled if you change the text in the
  Language Name field.
* The messaging around a missing language subtag is clearer -- tells
  the user that they need to enter something there.
* The Reset button will now never insert default text strings into the
  Language Name field.

One example of something that is slightly weird, is if you enter a
two-letter region subtag into the script box, it will show what looks
like a valid tag in the output box (e.g. `en-Au`), but it will be
considered invalid, because that two letter subtag needs to be entered
into the region box.
2023-02-07 12:40:31 +07:00
..
common/delphi feat(developer): check for duplicated language codes in package editor and compiler 2023-02-02 15:06:15 +07:00
ext chore(developer): move qrcode component to Developer 2022-06-06 14:07:34 +10:00
images fix(developer): remove ancient samples 2022-11-01 17:04:38 +11:00
inst fix(developer): remove ancient samples 2022-11-01 17:04:38 +11:00
kmanalyze fix(developer): Show full version number 2022-06-29 10:58:40 +10:00
kmcmpdll fix(developer): prevent repeated begin statements 2022-11-01 14:25:05 +11:00
kmcomp fix(developer): ensure backslash in paths passed to kmcomp 2022-09-28 16:50:58 +10:00
kmconvert fix(developer): generate a default icon for basic keyboard projects 2022-11-01 15:14:13 +11:00
kmdecomp fix(developer): kmdecomp virtual character key output 2022-07-14 16:19:03 +10:00
kmlmc chore: Apply review comments 2022-12-22 08:07:42 +11:00
samples fix(windows): lower case filenames for projects 2022-11-28 19:28:14 +07:00
server chore(web): Merge branch 'master' into change/web/reorg-source-src-reorg 2023-02-02 09:18:46 +07:00
setup chore(developer): increase label height in setup 2022-06-29 12:54:22 +10:00
test/auto chore(developer): Coinit required for test suite 2022-07-28 09:24:18 +10:00
tike fix(developer): Select BCP47 Code dialog inconsistencies 2023-02-07 12:40:31 +07:00
tools chore: revise tag variable name to VERSION_GIT_TAG 2023-01-21 17:02:50 +07:00
.gitignore chore(developer): add .hpp files 2022-06-05 15:49:47 +10:00
Defines.mak chore(developer): add developer_components package 2022-06-18 14:05:44 +10:00
developer.groupproj chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00
developer.sln chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00
Header.mak chore(developer): additional moves of developer scripts 2022-05-22 07:59:54 +10:00
history.md chore(developer): move source files to /developer/src 2022-05-18 10:34:48 +10:00
Makefile Merge branch 'chore/developer/js-to-lmc' into chore/developer/move-common-components 2022-06-24 14:23:02 +10:00
README.md chore(developer): README and more path fixups 2022-06-23 10:58:58 +10:00
Target.mak chore(developer): move .mak to src 2022-05-19 09:26:00 +10:00

Keyman Developer

This is the current home for Keyman Developer.

Cross-dependencies

We do not have 100% clean separation between Keyman Developer and Keyman for Windows. Shared units are intended to live in common, however the following projects will need to be updated in the future.

  • buildpkg in Windows depends on various compiler units in multiple folders.
  • kmbrowserhost in Windows is included as part of Keyman Developer.

Folders

src/common

Units shared among Keyman Developer projects, Delphi

src/ext

3rd party code and components, mostly Delphi

src/inst - keymandeveloper.msi

Building and signing of the installation archive keymandeveloper.msi.

src/inst/node

Contains a minimal distribution of node.js intended just for compiling lexical models. If more dependencies are required, then the developer will be expected to install node.js themselves; this gets users going without requiring a large installer or a full node.js install.

src/kmanalyze - kmanalyze.exe

A keyboard source analysis and automated regression test tool. Testing for logical errors of a keyboard.

src/kmcmpdll - kmcmpdll.dll & kmcmpdll.x64.dll

This is the main source code for the keyboard compiler, packaged as a dynamic linked library for Windows. The consumers will call 'CompileKeyboardFile'.

src/kmcmpdll/kcframe - kcframe.exe & kcframe.x64.exe

Located under kmcmpdll folder this is used for debugging in Visual Studio. A command line program compiler for a keyboard file 'kmn' into a binary format 'kmx'. Has hardcoded default arguments.

src/kmcomp - kmcomp.exe & kmcomp.x64.exe

The main command line compiler for a keyboard. It compiles keyboards (.kmn), packages (.kps), and projects (.kpj).

src/kmconvert - kmconvert.exe & kmconvert.x64.exe

KMConvert converts keyboard layouts between different formats. KMConvert will generate a full Keyman template project from the imported layout or data, in a new folder named with the ID of the keyboard. It will not overwrite an existing folder. Also used to generate new projects from templates.

src/kmdecomp - kmdecomp.exe

Unsupported utility decompiles a Keyman .kmx keyboard. It will produce a .kmn source file and optionally a .ico or .bmp image. see kmdecomp/kmdecomp.md for details.

src/kmlmc

node-based compilers for lexical models

src/kmlmc/kmlmc - Lexical Model Compiler

The Lexical Model Compiler, kmlmc, runs on nodeJS on all supported desktop platforms.

src/kmlmc/kmlmp - Package Compiler

The package compiler is broadly compatible with the kmcomp .kps package compiler. However at this stage it is only tested with lexical models, and use with keyboards (either .js or .kmx) is not tested or supported. It is likely in the future that the kmcomp .kps compiler will be deprecated in favour of this one.

src/kmlmc/kmlmi - Model Info Compiler

Merges .model_info files for use on the Keyman Cloud lexical model repository at https://github.com/keymanapp/lexical-models.

src/samples

Contains sample keyboards and sample developer projects. See readme.txt for details.

src/server

Keyman Developer Server. Node-based, cross platform host app for Keyman Developer. Used currently for web-based test and deployment. In future, will be the foundation for a web-based Keyman Developer project.

src/setup - setup.exe

Installation program for Keyman Developer for Windows. Bundles with keymandeveloper.msi to generate single deployable installer executable.

src/tike - "Tavultesoft Integrated Keyboard Editor"

This is the designer side of the Developer. Used for designing, developing, testing and packing keyboards for distribution.

src/tools

Various build-time tools for Keyman Developer.