diff --git a/_includes/includes/index-content.php b/_includes/includes/index-content.php
index ee9253cb5..758831cf1 100644
--- a/_includes/includes/index-content.php
+++ b/_includes/includes/index-content.php
@@ -1,6 +1,39 @@
$title) {
+ if($title != '') {
+ $items[$item] = $title;
+ }
+ }
+ return $items;
+}
+
function get_file_titles($base) {
+ $hasIndex = false;
$files = glob($base.'*');
$items = array(); $dirs = array();
foreach($files as $file) {
@@ -8,6 +41,10 @@ function get_file_titles($base) {
if($basefile == '.' || $basefile == '..') {
continue;
}
+ if($basefile == '__index.txt') {
+ $hasIndex = true;
+ continue;
+ }
if($basefile == '_nav.php' || $basefile == 'index.php' || $basefile == 'index.md') {
continue;
}
@@ -37,6 +74,10 @@ function get_file_titles($base) {
}
}
+ if($hasIndex) {
+ return get_file_titles_by_index($base, $items + $dirs);
+ }
+
asort($items, SORT_FLAG_CASE|SORT_STRING);
asort($dirs, SORT_FLAG_CASE|SORT_STRING);
diff --git a/developer/19.0/guides/develop/tutorial/step-1.md b/developer/19.0/guides/develop/tutorial/step-1.md
index 642fa916b..96db7592e 100644
--- a/developer/19.0/guides/develop/tutorial/step-1.md
+++ b/developer/19.0/guides/develop/tutorial/step-1.md
@@ -62,10 +62,10 @@ accent, and one for the vowel.
| `Â, â, ...` | caret (^), then the vowel key. |
| `Ä, ä, ...` | double-quote ("), then the vowel key. |
| `Ç, ç` | quote ('), then lower- or uppercase C. |
-| `«, »` | two less-than (<<) or greater-than (>>) symbols. |
+| `«, »` | two less-than (<<) or greater-than (>>) symbols. |
Now that we have decided which character to use and how the user can
enter them, we can start to write the keyboard.
- [Continue with Step 2: Writing the Header](step-2)
-- [Back to the Introduction](index)
\ No newline at end of file
+- [Back to the Introduction](index)
diff --git a/developer/19.0/reference/api/index.md b/developer/19.0/reference/api/index.md
index 0eda56596..9d6d2599c 100644
--- a/developer/19.0/reference/api/index.md
+++ b/developer/19.0/reference/api/index.md
@@ -6,15 +6,101 @@
## Packages
-| Package | Description |
-| --- | --- |
-| [@keymanapp/kmc-analyze](./kmc-analyze.md) | kmc-analyze - keyboard analysis classes, including tools for &displayMap. |
-| [@keymanapp/kmc-copy](./kmc-copy.md) | |
-| [@keymanapp/kmc-generate](./kmc-generate.md) | |
-| [@keymanapp/kmc-keyboard-info](./kmc-keyboard-info.md) | |
-| [@keymanapp/kmc-kmn](./kmc-kmn.md) | kmc-kmn - Keyman keyboard compiler |
-| [@keymanapp/kmc-ldml](./kmc-ldml.md) | |
-| [@keymanapp/kmc-model](./kmc-model.md) | |
-| [@keymanapp/kmc-model-info](./kmc-model-info.md) | |
-| [@keymanapp/kmc-package](./kmc-package.md) | |
+
| + +Package + + + | + +Description + + + |
|---|---|
| + +[@keymanapp/kmc-analyze](./kmc-analyze.md) + + + | + +kmc-analyze - keyboard analysis classes, including tools for `&displayMap`. + + + |
| + +[@keymanapp/kmc-copy](./kmc-copy.md) + + + | + + + |
| + +[@keymanapp/kmc-generate](./kmc-generate.md) + + + | + + + |
| + +[@keymanapp/kmc-keyboard-info](./kmc-keyboard-info.md) + + + | + + + |
| + +[@keymanapp/kmc-kmn](./kmc-kmn.md) + + + | + +kmc-kmn - Keyman keyboard compiler + + + |
| + +[@keymanapp/kmc-ldml](./kmc-ldml.md) + + + | + + + |
| + +[@keymanapp/kmc-model](./kmc-model.md) + + + | + + + |
| + +[@keymanapp/kmc-model-info](./kmc-model-info.md) + + + | + + + |
| + +[@keymanapp/kmc-package](./kmc-package.md) + + + | + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + + + |
| + +options + + + | + +[AnalyzeOskCharacterUseOptions](./kmc-analyze.analyzeoskcharacteruseoptions.md) + + + | + +_(Optional)_ + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +file + + + | + +string + + + | + +relative or absolute path to a Keyman source file + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +format + + + | + +'.txt' \| '.md' \| '.json' + + + | + +_(Optional)_ file format to return - can be '.txt', '.md', or '.json' + + + |
AnalyzeOskCharacterUse class |
+| + +Constructor + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[(constructor)(callbacks, options)](./kmc-analyze.analyzeoskcharacteruse._constructor_.md) + + + | + + + | + +Constructs a new instance of the `AnalyzeOskCharacterUse` class + + + |
Analyzes a single source file for Unicode character usage. Can parse .kmn, .kvks, .keyman-touch-layout file formats. Can be called multiple times to collect results from more than one file. Use [AnalyzeOskCharacterUse.getStrings()](./kmc-analyze.analyzeoskcharacteruse.getstrings.md) to retrieve results.
Note: analyze() collects key cap data, so calling this for a .kmn file will retrieve the key caps from the .kvks and .keyman-touch-layout files that it references, rather than key cap data from the .kmn file itself.
Returns the collected results from earlier calls to [AnalyzeOskCharacterUse.analyze()](./kmc-analyze.analyzeoskcharacteruse.analyze.md). This generates a mapping from a key cap (one or more characters) to a PUA code, for use with &displayMap.
Three output formats are supported:
- .txt: tab-separated string format, with three columns: PUA, Key Cap, and plain string. The PUA and Key Cap columns are formatted as Unicode Scalar Values, e.g. U+0061, and the plain string is the original key cap string.
- .md: formatted for documentation purposes. Generates a Markdown table (GFM) with PUA, Key Cap, and plain string. The PUA and Key Cap columns are formatted as Unicode Scalar Values, e.g. U+0061, and the plain string is the original key cap string.
- .json: returns the final aggregated data as an array of strings, which can be joined to form a JSON blob of an object with a single member, map, which is an array of objects.
| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[analyze(file)](./kmc-analyze.analyzeoskcharacteruse.analyze.md) + + + | + + + | + +Analyzes a single source file for Unicode character usage. Can parse .kmn, .kvks, .keyman-touch-layout file formats. Can be called multiple times to collect results from more than one file. Use [AnalyzeOskCharacterUse.getStrings()](./kmc-analyze.analyzeoskcharacteruse.getstrings.md) to retrieve results. + +Note: `analyze()` collects key cap data, so calling this for a .kmn file will retrieve the key caps from the .kvks and .keyman-touch-layout files that it references, rather than key cap data from the .kmn file itself. + + + |
| + +[clear()](./kmc-analyze.analyzeoskcharacteruse.clear.md) + + + | + + + | + +Clears analysis data collected from previous calls to [AnalyzeOskCharacterUse.analyze()](./kmc-analyze.analyzeoskcharacteruse.analyze.md) + + + |
| + +[getStrings(format)](./kmc-analyze.analyzeoskcharacteruse.getstrings.md) + + + | + + + | + +Returns the collected results from earlier calls to [AnalyzeOskCharacterUse.analyze()](./kmc-analyze.analyzeoskcharacteruse.analyze.md). This generates a mapping from a key cap (one or more characters) to a PUA code, for use with `&displayMap`. + +Three output formats are supported: + +- .txt: tab-separated string format, with three columns: PUA, Key Cap, and plain string. The PUA and Key Cap columns are formatted as Unicode Scalar Values, e.g. U+0061, and the plain string is the original key cap string. + +- .md: formatted for documentation purposes. Generates a Markdown table (GFM) with PUA, Key Cap, and plain string. The PUA and Key Cap columns are formatted as Unicode Scalar Values, e.g. U+0061, and the plain string is the original key cap string. + +- .json: returns the final aggregated data as an array of strings, which can be joined to form a JSON blob of an object with a single member, `map`, which is an array of objects. + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[includeCounts?](./kmc-analyze.analyzeoskcharacteruseoptions.includecounts.md) + + + | + + + | + +boolean + + + | + +_(Optional)_ If true, reports number of references to each character found in each source file + + + |
| + +[mergeMapFile?](./kmc-analyze.analyzeoskcharacteruseoptions.mergemapfile.md) + + + | + + + | + +string + + + | + +_(Optional)_ Filename of an existing mapping file to merge the results into + + + |
| + +[puaBase?](./kmc-analyze.analyzeoskcharacteruseoptions.puabase.md) + + + | + + + | + +number + + + | + +_(Optional)_ First character to use in PUA for remapping with &displayMap, defaults to U+F100 + + + |
| + +[stripDottedCircle?](./kmc-analyze.analyzeoskcharacteruseoptions.stripdottedcircle.md) + + + | + + + | + +boolean + + + | + +_(Optional)_ If true, strips U+25CC from the key cap before further analysis + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +file + + + | + +string + + + | + +relative or absolute path to a Keyman source file + + + |
| + +mapping + + + | + +Osk.StringResult\[\] + + + | + +OSK keycap map provided by [AnalyzeOskCharacterUse](./kmc-analyze.analyzeoskcharacteruse.md) + + + |
AnalyzeOskRewritePua class |
+| + +Constructor + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[(constructor)(callbacks)](./kmc-analyze.analyzeoskrewritepua._constructor_.md) + + + | + + + | + +Constructs a new instance of the `AnalyzeOskRewritePua` class + + + |
readonly | { \[index: string\]: Uint8Array; } | Returns the file data for OSK files rewritten with PUA characters, for use with &displayMap. |
+| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[data](./kmc-analyze.analyzeoskrewritepua.data.md) + + + | + +`readonly` + + + | + +{ \[index: string\]: Uint8Array; } + + + | + +Returns the file data for OSK files rewritten with PUA characters, for use with `&displayMap`. + + + |
| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[analyze(file, mapping)](./kmc-analyze.analyzeoskrewritepua.analyze.md) + + + | + + + | + +Analyze a keyboard file or files, and provide a remapped output. Accepts a .kmn, .kvks, .keyman-touch-layout file formats. For .kmn, will rewrite associated On Screen Keyboard file formats. Can be called multiple times to rewrite multiple files. Use the [AnalyzeOskRewritePua.data](./kmc-analyze.analyzeoskrewritepua.data.md) property to retrieve the output file content for writing. This does not modify the source file. + + + |
| + +[clear()](./kmc-analyze.analyzeoskrewritepua.clear.md) + + + | + + + | + +Clears data collected from previous calls to [AnalyzeOskRewritePua.analyze()](./kmc-analyze.analyzeoskrewritepua.analyze.md) + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[AnalyzeOskCharacterUseOptions](./kmc-analyze.analyzeoskcharacteruseoptions.md) + + + | + +Options for character analysis + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[dryRun](./kmc-copy.copieroptions.dryrun.md) + + + | + + + | + +boolean + + + | + +dryRun: show what would happen + + + |
| + +[outPath](./kmc-copy.copieroptions.outpath.md) + + + | + + + | + +string + + + | + +output path where project folder will be created + + + |
| + +[relocateExternalFiles?](./kmc-copy.copieroptions.relocateexternalfiles.md) + + + | + + + | + +boolean + + + | + +_(Optional)_ Copy referenced files that are outside the project folder into an 'external' folder within the new project, rather than just referencing them in their current location + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + + + |
| + +options + + + | + +[CopierOptions](./kmc-copy.copieroptions.md) + + + | + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[asyncCallbacks](./kmc-copy.keymanprojectcopier.asynccallbacks.md) + + + | + + + | + +CopierAsyncCallbacks + + + | + + + |
| + +[callbacks](./kmc-copy.keymanprojectcopier.callbacks.md) + + + | + + + | + +CompilerCallbacks + + + | + + + |
| + +[cloudSource](./kmc-copy.keymanprojectcopier.cloudsource.md) + + + | + + + | + +KeymanCloudSource + + + | + + + |
| + +[githubRef](./kmc-copy.keymanprojectcopier.githubref.md) + + + | + + + | + +GitHubRef + + + | + + + |
| + +[options](./kmc-copy.keymanprojectcopier.options.md) + + + | + + + | + +[CopierOptions](./kmc-copy.copieroptions.md) + + + | + + + |
| + +[outPath](./kmc-copy.keymanprojectcopier.outpath.md) + + + | + + + | + +string + + + | + + + |
| + +[outputId](./kmc-copy.keymanprojectcopier.outputid.md) + + + | + + + | + +string + + + | + + + |
| + +[sourceId](./kmc-copy.keymanprojectcopier.sourceid.md) + + + | + + + | + +string + + + | + + + |
| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-copy.keymanprojectcopier.init.md) + + + | + + + | + + + |
| + +[isLocalOrigin()](./kmc-copy.keymanprojectcopier.islocalorigin.md) + + + | + + + | + + + |
| + +[run(source)](./kmc-copy.keymanprojectcopier.run.md) + + + | + + + | + +Copy a Keyman project. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [KeymanProjectCopier.init()](./kmc-copy.keymanprojectcopier.init.md) function to read any input files by disk. + + + |
| + +[write(artifacts)](./kmc-copy.keymanprojectcopier.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written will include all files from the project, across multiple folders. Folders will be created as needed + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +source + + + | + +string + + + | + +Source file or folder to copy. Can be a local file or folder, https://github.com/.../repo\[/path\], or cloud:id + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +CopierArtifacts + + + | + +object containing artifact binary data to write out + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[KeymanProjectCopier](./kmc-copy.keymanprojectcopier.md) + + + | + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[CopierOptions](./kmc-copy.copieroptions.md) + + + | + +Options for the Keyman Developer project copier + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + +Callbacks for external interfaces, including message reporting and file io + + + |
| + +options + + + | + +[GeneratorOptions](./kmc-generate.generatoroptions.md) + + + | + +Generator options + + + |
protected
readonly
protected
readonly
protected | string | extension of options.copyright including copyright year |
-| [includedPrefixes](./kmc-generate.abstractgenerator.includedprefixes.md) | protected
readonly
protected
readonly
protected
static
readonly
protected
static
readonly
protected
static
readonly
protected
static
readonly
protected
static
readonly
protected
static
readonly
protected
static
readonly
protected
readonly
protected
readonly
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[callbacks](./kmc-generate.abstractgenerator.callbacks.md) + + + | + +`protected` + +`readonly` + + + | + +CompilerCallbacks + + + | + + + |
| + +[filenameMap](./kmc-generate.abstractgenerator.filenamemap.md) + + + | + +`protected` + +`readonly` + + + | + +{ \[index: string\]: string; } + + + | + +map of all files to be transformed, filled by this class and subclasses + + + |
| + +[fullCopyright](./kmc-generate.abstractgenerator.fullcopyright.md) + + + | + +`protected` + + + | + +string + + + | + +extension of options.copyright including copyright year + + + |
| + +[includedPrefixes](./kmc-generate.abstractgenerator.includedprefixes.md) + + + | + +`protected` + +`readonly` + + + | + +string\[\] + + + | + +identifiers for lines to include when transforming template files, filled by child classes + + + |
| + +[options](./kmc-generate.abstractgenerator.options.md) + + + | + +`protected` + +`readonly` + + + | + +[GeneratorOptions](./kmc-generate.generatoroptions.md) + + + | + + + |
| + +[SFile\_GitIgnore](./kmc-generate.abstractgenerator.sfile_gitignore.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_HistoryMD](./kmc-generate.abstractgenerator.sfile_historymd.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_LicenseMD](./kmc-generate.abstractgenerator.sfile_licensemd.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_ReadmeHTM](./kmc-generate.abstractgenerator.sfile_readmehtm.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_ReadmeMD](./kmc-generate.abstractgenerator.sfile_readmemd.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_WelcomeHTM](./kmc-generate.abstractgenerator.sfile_welcomehtm.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SPath\_Source](./kmc-generate.abstractgenerator.spath_source.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[templateBasePath](./kmc-generate.abstractgenerator.templatebasepath.md) + + + | + +`protected` + +`readonly` + + + | + +string + + + | + +base path for template files in this module + + + |
| + +[tokenMap](./kmc-generate.abstractgenerator.tokenmap.md) + + + | + +`protected` + +`readonly` + + + | + +{ \[index: string\]: string; } + + + | + +tokens to rewrite in output files + + + |
protected | Fills in the artifact outputPath used by all generators |
-| [init(callbacks, options)](./kmc-generate.abstractgenerator.init.md) | | Initialize the generator. Copies options. |
-| [write(artifacts)](./kmc-generate.abstractgenerator.write.md) | | Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written will include all files from the project, across multiple folders. Folders will be created as needed |
+| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[defaultArtifacts()](./kmc-generate.abstractgenerator.defaultartifacts.md) + + + | + +`protected` + + + | + +Fills in the artifact outputPath used by all generators + + + |
| + +[init(callbacks, options)](./kmc-generate.abstractgenerator.init.md) + + + | + + + | + +Initialize the generator. Copies options. + + + |
| + +[write(artifacts)](./kmc-generate.abstractgenerator.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written will include all files from the project, across multiple folders. Folders will be created as needed + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +GeneratorArtifacts + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[author?](./kmc-generate.generatoroptions.author.md) + + + | + + + | + +string + + + | + +_(Optional)_ name of the author of the keyboard + + + |
| + +[copyright?](./kmc-generate.generatoroptions.copyright.md) + + + | + + + | + +string + + + | + +_(Optional)_ name of the copyright holder for the keyboard or lexical model (do not include (c) symbol or date) + + + |
| + +[description?](./kmc-generate.generatoroptions.description.md) + + + | + + + | + +string + + + | + +_(Optional)_ description of the keyboard, Markdown permissible + + + |
| + +[id](./kmc-generate.generatoroptions.id.md) + + + | + + + | + +string + + + | + +identifier (basename) of the keyboard or model + + + |
| + +[keymanVersion?](./kmc-generate.generatoroptions.keymanversion.md) + + + | + + + | + +string + + + | + +_(Optional)_ version of Keyman to reference in source files, defaults to KEYMAN\_VERSION.VERSION + + + |
| + +[languageTags?](./kmc-generate.generatoroptions.languagetags.md) + + + | + + + | + +string\[\] + + + | + +_(Optional)_ array of bcp 47 tags which are supported by the keyboard or lexical model + + + |
| + +[name?](./kmc-generate.generatoroptions.name.md) + + + | + + + | + +string + + + | + +_(Optional)_ descriptive name of the keyboard or lexical model + + + |
| + +[outPath](./kmc-generate.generatoroptions.outpath.md) + + + | + + + | + +string + + + | + +output path where project folder will be created + + + |
| + +[targets?](./kmc-generate.generatoroptions.targets.md) + + + | + + + | + +KeymanTargets.KeymanTarget\[\] + + + | + +_(Optional)_ supported platforms, only used in Keyman keyboard project generator + + + |
| + +[version?](./kmc-generate.generatoroptions.version.md) + + + | + + + | + +string + + + | + +_(Optional)_ version of the keyboard or model, 1.0 default for Keyman keyboard, lexical model, 1.0.0 default for LDML keyboard + + + |
static
readonly
static
readonly
static
readonly
static
readonly
static
readonly
static
readonly
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[SFile\_Keyboard](./kmc-generate.keymankeyboardgenerator.sfile_keyboard.md) + + + | + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_KeyboardKMN](./kmc-generate.keymankeyboardgenerator.sfile_keyboardkmn.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_KeyboardKPS](./kmc-generate.keymankeyboardgenerator.sfile_keyboardkps.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_KeyboardKVKS](./kmc-generate.keymankeyboardgenerator.sfile_keyboardkvks.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_Project](./kmc-generate.keymankeyboardgenerator.sfile_project.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_TouchLayout](./kmc-generate.keymankeyboardgenerator.sfile_touchlayout.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[run()](./kmc-generate.keymankeyboardgenerator.run.md) + + + | + + + | + +Generate a Keyman Keyboard project. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [AbstractGenerator.init()](./kmc-generate.abstractgenerator.init.md) function to read any input files by disk. + + + |
protected
static
readonly
static
readonly
static
readonly
static
readonly
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[SFile\_Keyboard](./kmc-generate.ldmlkeyboardgenerator.sfile_keyboard.md) + + + | + +`protected` + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_KeyboardXML](./kmc-generate.ldmlkeyboardgenerator.sfile_keyboardxml.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_Package](./kmc-generate.ldmlkeyboardgenerator.sfile_package.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_Project](./kmc-generate.ldmlkeyboardgenerator.sfile_project.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[run()](./kmc-generate.ldmlkeyboardgenerator.run.md) + + + | + + + | + +Generate a LDML Keyboard project. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [AbstractGenerator.init()](./kmc-generate.abstractgenerator.init.md) function to read any input files by disk. + + + |
static
readonly
static
readonly
static
readonly
static
readonly
static
readonly
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[SFile\_Model](./kmc-generate.lexicalmodelgenerator.sfile_model.md) + + + | + +`static` + +`readonly` + + + | + +(not declared) + + + | + + + |
| + +[SFile\_ModelTs](./kmc-generate.lexicalmodelgenerator.sfile_modelts.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_Package](./kmc-generate.lexicalmodelgenerator.sfile_package.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_Project](./kmc-generate.lexicalmodelgenerator.sfile_project.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +[SFile\_WordlistTsv](./kmc-generate.lexicalmodelgenerator.sfile_wordlisttsv.md) + + + | + +`static` + +`readonly` + + + | + +string + + + | + + + |
| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[run()](./kmc-generate.lexicalmodelgenerator.run.md) + + + | + + + | + +Generate a Lexical Model project. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [AbstractGenerator.init()](./kmc-generate.abstractgenerator.init.md) function to read any input files by disk. + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[AbstractGenerator](./kmc-generate.abstractgenerator.md) + + + | + +Common functionality for generating projects. Do not instantiate this class, rather instantiate a subclass + + + |
| + +[KeymanKeyboardGenerator](./kmc-generate.keymankeyboardgenerator.md) + + + | + +Generate a Keyman keyboard project. The generator does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +[LdmlKeyboardGenerator](./kmc-generate.ldmlkeyboardgenerator.md) + + + | + +Generate a LDML keyboard project. The generator does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +[LexicalModelGenerator](./kmc-generate.lexicalmodelgenerator.md) + + + | + +Generate a Keyman lexical model project. The generator does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[GeneratorOptions](./kmc-generate.generatoroptions.md) + + + | + +Options for the Keyman Developer project generator + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + +Callbacks for external interfaces, including message reporting and file io + + + |
| + +options + + + | + +[KeyboardInfoCompilerOptions](./kmc-keyboard-info.keyboardinfocompileroptions.md) + + + | + +Compiler options + + + |
Builds a .keyboard\_info file with metadata from the keyboard and package source file. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [KeyboardInfoCompiler.init()](./kmc-keyboard-info.keyboardinfocompiler.init.md) function to read any input files by disk.
This function is intended for use within the keyboards repository. While many of the parameters could be deduced from each other, they are specified here to reduce the number of places the filenames are constructed. For full documentation, see: https://help.keyman.com/developer/cloud/keyboard\_info/
| -| [write(artifacts)](./kmc-keyboard-info.keyboardinfocompiler.write.md) | |Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .keyboard\_info file - metadata file used by keyman.com
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-keyboard-info.keyboardinfocompiler.init.md) + + + | + + + | + +Initialize the compiler. Copies options. + + + |
| + +[run(inputFilename, outputFilename)](./kmc-keyboard-info.keyboardinfocompiler.run.md) + + + | + + + | + +Builds a .keyboard\_info file with metadata from the keyboard and package source file. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [KeyboardInfoCompiler.init()](./kmc-keyboard-info.keyboardinfocompiler.init.md) function to read any input files by disk. + +This function is intended for use within the keyboards repository. While many of the parameters could be deduced from each other, they are specified here to reduce the number of places the filenames are constructed. For full documentation, see: https://help.keyman.com/developer/cloud/keyboard\_info/ + + + |
| + +[write(artifacts)](./kmc-keyboard-info.keyboardinfocompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .keyboard\_info file - metadata file used by keyman.com + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +[KeyboardInfoCompilerArtifacts](./kmc-keyboard-info.keyboardinfocompilerartifacts.md) + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[keyboard\_info](./kmc-keyboard-info.keyboardinfocompilerartifacts.keyboard_info.md) + + + | + + + | + +KeymanCompilerArtifact + + + | + +Binary keyboard info filedata and filename - used by keyman.com + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[sources](./kmc-keyboard-info.keyboardinfocompileroptions.sources.md) + + + | + + + | + +[KeyboardInfoSources](./kmc-keyboard-info.keyboardinfosources.md) + + + | + +Description of sources and metadata required to build a .keyboard\_info file + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[artifacts](./kmc-keyboard-info.keyboardinfocompilerresult.artifacts.md) + + + | + + + | + +[KeyboardInfoCompilerArtifacts](./kmc-keyboard-info.keyboardinfocompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation. Caller can write these to disk with [KeyboardInfoCompiler.write()](./kmc-keyboard-info.keyboardinfocompiler.write.md) + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[forPublishing](./kmc-keyboard-info.keyboardinfosources.forpublishing.md) + + + | + + + | + +boolean + + + | + +Return an error if project does not meet requirements of keyboards repository + + + |
| + +[jsFilename?](./kmc-keyboard-info.keyboardinfosources.jsfilename.md) + + + | + + + | + +string + + + | + +_(Optional)_ The compiled keyboard filename and relative path (.js only) + + + |
| + +[kmpFilename](./kmc-keyboard-info.keyboardinfosources.kmpfilename.md) + + + | + + + | + +string + + + | + +The compiled package filename and relative path (.kmp) + + + |
| + +[kpsFilename](./kmc-keyboard-info.keyboardinfosources.kpsfilename.md) + + + | + + + | + +string + + + | + +The source package filename and relative path (.kps) + + + |
| + +[lastCommitDate?](./kmc-keyboard-info.keyboardinfosources.lastcommitdate.md) + + + | + + + | + +string + + + | + +_(Optional)_ Last modification date for files in the project folder 'YYYY-MM-DDThh:mm:ssZ' + + + |
| + +[sourcePath](./kmc-keyboard-info.keyboardinfosources.sourcepath.md) + + + | + + + | + +string + + + | + +The path in the keymanapp/keyboards repo where this keyboard may be found + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[KeyboardInfoCompiler](./kmc-keyboard-info.keyboardinfocompiler.md) + + + | + +Compiles source data from a keyboard project to a .keyboard\_info. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[KeyboardInfoCompilerArtifacts](./kmc-keyboard-info.keyboardinfocompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation + + + |
| + +[KeyboardInfoCompilerOptions](./kmc-keyboard-info.keyboardinfocompileroptions.md) + + + | + +Options for the .keyboard\_info compiler + + + |
| + +[KeyboardInfoCompilerResult](./kmc-keyboard-info.keyboardinfocompilerresult.md) + + + | + +Build artifacts from the .keyboard\_info compiler + + + |
| + +[KeyboardInfoSources](./kmc-keyboard-info.keyboardinfosources.md) + + + | + +Description of sources and metadata required to build a .keyboard\_info file + + + |
Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .kmx file - binary keyboard used by Keyman on desktop platforms - .kvk file - binary on screen keyboard used by Keyman on desktop platforms - .js file - Javascript keyboard for web and touch platforms
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-kmn.kmncompiler.init.md) + + + | + + + | + +Initialize the compiler, including loading the WASM host for kmcmplib. Copies options. + + + |
| + +[run(infile, outfile)](./kmc-kmn.kmncompiler.run.md) + + + | + + + | + +Compiles a .kmn file to .kmx, .kvk, and/or .js files. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [KmnCompiler.init()](./kmc-kmn.kmncompiler.init.md) function to read any input files by disk. + + + |
| + +[verifyInitialized()](./kmc-kmn.kmncompiler.verifyinitialized.md) + + + | + + + | + +Verify that wasm is spun up OK. + + + |
| + +[write(artifacts)](./kmc-kmn.kmncompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .kmx file - binary keyboard used by Keyman on desktop platforms - .kvk file - binary on screen keyboard used by Keyman on desktop platforms - .js file - Javascript keyboard for web and touch platforms + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +infile + + + | + +string + + + | + +Path to source file. Path will be parsed to find relative references in the .kmn file, such as icon or On Screen Keyboard file + + + |
| + +outfile + + + | + +string + + + | + +Path to output file. The file will not be written to, but will be included in the result for use by [KmnCompiler.write()](./kmc-kmn.kmncompiler.write.md). + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +[KmnCompilerArtifacts](./kmc-kmn.kmncompilerartifacts.md) + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[js?](./kmc-kmn.kmncompilerartifacts.js.md) + + + | + + + | + +KeymanCompilerArtifactOptional + + + | + +_(Optional)_ Javascript keyboard filedata and filename - installable into KeymanWeb, Keyman mobile products + + + |
| + +[kmx?](./kmc-kmn.kmncompilerartifacts.kmx.md) + + + | + + + | + +KeymanCompilerArtifactOptional + + + | + +_(Optional)_ Binary keyboard filedata and filename - installable into Keyman desktop projects + + + |
| + +[kvk?](./kmc-kmn.kmncompilerartifacts.kvk.md) + + + | + + + | + +KeymanCompilerArtifactOptional + + + | + +_(Optional)_ Binary on screen keyboard filedata and filename - installable into Keyman desktop projects alongside .kmx + + + |
&displayMap, intended for use by kmc-analyze |
-| [extra](./kmc-kmn.kmncompilerresult.extra.md) | | KmnCompilerResultExtra | Internal additional metadata used by secondary compile phases such as KmwCompiler, not intended for external use |
+| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[artifacts](./kmc-kmn.kmncompilerresult.artifacts.md) + + + | + + + | + +[KmnCompilerArtifacts](./kmc-kmn.kmncompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation. Caller can write these to disk with [KmnCompiler.write()](./kmc-kmn.kmncompiler.write.md) + + + |
| + +[displayMap?](./kmc-kmn.kmncompilerresult.displaymap.md) + + + | + + + | + +[Osk.PuaMap](./kmc-kmn.osk.puamap.md) + + + | + +_(Optional)_ Mapping data for `&displayMap`, intended for use by kmc-analyze + + + |
| + +[extra](./kmc-kmn.kmncompilerresult.extra.md) + + + | + + + | + +KmnCompilerResultExtra + + + | + +Internal additional metadata used by secondary compile phases such as KmwCompiler, not intended for external use + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[KmnCompiler](./kmc-kmn.kmncompiler.md) + + + | + +Compiles a .kmn file to a .kmx, .kvk, and/or .js. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[KmnCompilerArtifacts](./kmc-kmn.kmncompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation + + + |
| + +[KmnCompilerOptions](./kmc-kmn.kmncompileroptions.md) + + + | + +Options for the .kmn compiler + + + |
| + +[KmnCompilerResult](./kmc-kmn.kmncompilerresult.md) + + + | + +Build artifacts from the .kmn compiler + + + |
| + +Namespace + + + | + +Description + + + |
|---|---|
| + +[Osk](./kmc-kmn.osk.md) + + + | + + + |
| + +Function + + + | + +Description + + + |
|---|---|
| + +[parseMapping(mapping)](./kmc-kmn.osk.parsemapping.md) + + + | + + + |
| + +[remapTouchLayout(source, map)](./kmc-kmn.osk.remaptouchlayout.md) + + + | + + + |
| + +[remapVisualKeyboard(vk, map)](./kmc-kmn.osk.remapvisualkeyboard.md) + + + | + + + |
AnalyzeOskCharacterUse |
+| + +Interface + + + | + +Description + + + |
|---|---|
| + +[StringRef](./kmc-kmn.osk.stringref.md) + + + | + + + |
| + +[StringRefUsage](./kmc-kmn.osk.stringrefusage.md) + + + | + + + |
| + +[StringResult](./kmc-kmn.osk.stringresult.md) + + + | + +Represents a single key cap found by `AnalyzeOskCharacterUse` + + + |
| + +Type Alias + + + | + +Description + + + |
|---|---|
| + +[PuaMap](./kmc-kmn.osk.puamap.md) + + + | + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +mapping + + + | + +any + + + | + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +source + + + | + +TouchLayout.TouchLayoutFile + + + | + + + |
| + +map + + + | + +[PuaMap](./kmc-kmn.osk.puamap.md) + + + | + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +vk + + + | + +VisualKeyboard.VisualKeyboard + + + | + + + |
| + +map + + + | + +[PuaMap](./kmc-kmn.osk.puamap.md) + + + | + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[str](./kmc-kmn.osk.stringref.str.md) + + + | + + + | + +string + + + | + + + |
| + +[usages](./kmc-kmn.osk.stringref.usages.md) + + + | + + + | + +[StringRefUsage](./kmc-kmn.osk.stringrefusage.md)\[\] + + + | + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[count](./kmc-kmn.osk.stringrefusage.count.md) + + + | + + + | + +number + + + | + + + |
| + +[filename](./kmc-kmn.osk.stringrefusage.filename.md) + + + | + + + | + +string + + + | + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[pua](./kmc-kmn.osk.stringresult.pua.md) + + + | + + + | + +string + + + | + +hexadecimal single character in PUA range, without 'U+' prefix, e.g. 'F100' + + + |
| + +[str](./kmc-kmn.osk.stringresult.str.md) + + + | + + + | + +string + + + | + +the key cap string + + + |
| + +[unicode](./kmc-kmn.osk.stringresult.unicode.md) + + + | + + + | + +string + + + |
+
+unicode code points in |
| + +[usages](./kmc-kmn.osk.stringresult.usages.md) + + + | + + + | + +[StringRefUsage](./kmc-kmn.osk.stringrefusage.md)\[\] \| string\[\] + + + | + +files in which the string is referenced; will be an array of if includeCounts is true, otherwise will be an array of strings listing files in which the key cap may be found + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[readerOptions](./kmc-ldml.ldmlcompileroptions.readeroptions.md) + + + | + + + | + +LDMLKeyboardXMLSourceFileReaderOptions + + + | + +Paths and other options required for reading .xml files + + + |
Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .kmx file - binary keyboard used by Keyman on desktop platforms - .kvk file - binary on screen keyboard used by Keyman on desktop platforms
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-ldml.ldmlkeyboardcompiler.init.md) + + + | + + + | + +Initialize the compiler, including loading the WASM host for uset parsing. Copies options. + + + |
| + +[run(inputFilename, outputFilename)](./kmc-ldml.ldmlkeyboardcompiler.run.md) + + + | + + + | + +Compiles a LDML keyboard .xml file to .kmx, .kvk files. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [LdmlKeyboardCompiler.init()](./kmc-ldml.ldmlkeyboardcompiler.init.md) function to read any input files by disk. + + + |
| + +[write(artifacts)](./kmc-ldml.ldmlkeyboardcompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .kmx file - binary keyboard used by Keyman on desktop platforms - .kvk file - binary on screen keyboard used by Keyman on desktop platforms + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +LdmlKeyboardCompilerArtifacts + + + | + +object containing artifact binary data to write out + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[LdmlKeyboardCompiler](./kmc-ldml.ldmlkeyboardcompiler.md) + + + | + +Compiles a LDML keyboard .xml file to a .kmx (KMXPlus), .kvk. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[LdmlCompilerOptions](./kmc-ldml.ldmlcompileroptions.md) + + + | + +Options for the .xml LDML keyboard compiler + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[ModelInfoCompiler](./kmc-model-info.modelinfocompiler.md) + + + | + +Compiles source data from a lexical model project to a .model\_info. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +[ModelInfoSources](./kmc-model-info.modelinfosources.md) + + + | + +Description of sources and metadata required to build a .model\_info file + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[ModelInfoCompilerArtifacts](./kmc-model-info.modelinfocompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation + + + |
| + +[ModelInfoCompilerOptions](./kmc-model-info.modelinfocompileroptions.md) + + + | + +Options for the .model\_info compiler + + + |
| + +[ModelInfoCompilerResult](./kmc-model-info.modelinfocompilerresult.md) + + + | + +Build artifacts from the .model\_info compiler + + + |
ModelInfoCompiler class |
+| + +Constructor + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[(constructor)()](./kmc-model-info.modelinfocompiler._constructor_.md) + + + | + + + | + +Constructs a new instance of the `ModelInfoCompiler` class + + + |
Builds .model\_info file with metadata from the model and package source file. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [ModelInfoCompiler.init()](./kmc-model-info.modelinfocompiler.init.md) function to read any input files by disk.
This function is intended for use within the lexical-models repository. While many of the parameters could be deduced from each other, they are specified here to reduce the number of places the filenames are constructed.
| -| [write(artifacts)](./kmc-model-info.modelinfocompiler.write.md) | |Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .model\_info file - metadata file used by keyman.com
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-model-info.modelinfocompiler.init.md) + + + | + + + | + +Initialize the compiler. Copies options. + + + |
| + +[run(inputFilename, outputFilename)](./kmc-model-info.modelinfocompiler.run.md) + + + | + + + | + +Builds .model\_info file with metadata from the model and package source file. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [ModelInfoCompiler.init()](./kmc-model-info.modelinfocompiler.init.md) function to read any input files by disk. + +This function is intended for use within the lexical-models repository. While many of the parameters could be deduced from each other, they are specified here to reduce the number of places the filenames are constructed. + + + |
| + +[write(artifacts)](./kmc-model-info.modelinfocompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .model\_info file - metadata file used by keyman.com + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +[ModelInfoCompilerArtifacts](./kmc-model-info.modelinfocompilerartifacts.md) + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[model\_info](./kmc-model-info.modelinfocompilerartifacts.model_info.md) + + + | + + + | + +KeymanCompilerArtifact + + + | + +Binary model info filedata and filename - used by keyman.com + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[sources](./kmc-model-info.modelinfocompileroptions.sources.md) + + + | + + + | + +[ModelInfoSources](./kmc-model-info.modelinfosources.md) + + + | + +Description of sources and metadata required to build a .model\_info file + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[artifacts](./kmc-model-info.modelinfocompilerresult.artifacts.md) + + + | + + + | + +[ModelInfoCompilerArtifacts](./kmc-model-info.modelinfocompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation. Caller can write these to disk with [ModelInfoCompiler.write()](./kmc-model-info.modelinfocompiler.write.md) + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[forPublishing](./kmc-model-info.modelinfosources.forpublishing.md) + + + | + + + | + +boolean + + + | + +Return an error if project does not meet requirements of lexical-models repository + + + |
| + +[kmpFileName](./kmc-model-info.modelinfosources.kmpfilename.md) + + + | + + + | + +string + + + | + +The compiled package filename and relative path (.kmp) + + + |
| + +[kmpJsonData](./kmc-model-info.modelinfosources.kmpjsondata.md) + + + | + + + | + +KmpJsonFile.KmpJsonFile + + + | + +The data from the .kps file, transformed to kmp.json + + + |
| + +[kpsFilename](./kmc-model-info.modelinfosources.kpsfilename.md) + + + | + + + | + +string + + + | + +The source package filename and relative path (.kps) + + + |
| + +[lastCommitDate?](./kmc-model-info.modelinfosources.lastcommitdate.md) + + + | + + + | + +string + + + | + +_(Optional)_ Last modification date for files in the project folder 'YYYY-MM-DDThh:mm:ssZ' + + + |
| + +[model\_id](./kmc-model-info.modelinfosources.model_id.md) + + + | + + + | + +string + + + | + +The identifier for the model + + + |
| + +[modelFileName](./kmc-model-info.modelinfosources.modelfilename.md) + + + | + + + | + +string + + + | + +The compiled model filename and relative path (.js) + + + |
| + +[sourcePath](./kmc-model-info.modelinfosources.sourcepath.md) + + + | + + + | + +string + + + | + +The path in the keymanapp/lexical-models repo where this model may be found + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + +Callbacks for external interfaces, including message reporting and file io + + + |
| + +\_options + + + | + +CompilerOptions + + + | + + + |
Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .model.js file - Javascript lexical model for web and touch platforms
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, \_options)](./kmc-model.lexicalmodelcompiler.init.md) + + + | + + + | + +Initialize the compiler. There are currently no options specific to the lexical model compiler + + + |
| + +[run(inputFilename, outputFilename)](./kmc-model.lexicalmodelcompiler.run.md) + + + | + + + | + +Compiles a .model.ts file to .model.js. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [LexicalModelCompiler.init()](./kmc-model.lexicalmodelcompiler.init.md) function to read any input files by disk. + + + |
| + +[write(artifacts)](./kmc-model.lexicalmodelcompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .model.js file - Javascript lexical model for web and touch platforms + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +[LexicalModelCompilerArtifacts](./kmc-model.lexicalmodelcompilerartifacts.md) + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[js](./kmc-model.lexicalmodelcompilerartifacts.js.md) + + + | + + + | + +KeymanCompilerArtifact + + + | + +Javascript model filedata and filename - installable into KeymanWeb, Keyman mobile products + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[artifacts](./kmc-model.lexicalmodelcompilerresult.artifacts.md) + + + | + + + | + +[LexicalModelCompilerArtifacts](./kmc-model.lexicalmodelcompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation. Caller can write these to disk with [LexicalModelCompiler.write()](./kmc-model.lexicalmodelcompiler.write.md) + + + |
readonly | CasingFunction | _(Optional)_ Specifies the casing rules for a language. Should implement three casing forms: - 'lower' -- a fully-lowercased version of the text appropriate for the language's use of the writing system. - 'upper' -- a fully-uppercased version of the text - 'initial' -- a version preserving the input casing aside from the initial character, which is uppercased (like with proper nouns and sentence-initial words in English sentences.)
This is only utilized if languageUsesCasing is defined and set to true. 14.0
readonly | boolean | _(Optional)_ When set to true, suggestions will attempt to match the case of the input text even if the lexicon entries use a different casing scheme due to search term keying effects. 14.0 |
-| [punctuation?](./kmc-model.lexicalmodelsource.punctuation.md) | readonly | LexicalModelPunctuation | _(Optional)_ Punctuation and spacing suggested by the model. |
-| [rootClass?](./kmc-model.lexicalmodelsource.rootclass.md) | readonly | string | _(Optional)_ The name of the type to instantiate (without parameters) as the base object for a custom predictive model. |
-| [searchTermToKey?](./kmc-model.lexicalmodelsource.searchtermtokey.md) | readonly | [WordformToKeySpec](./kmc-model.wordformtokeyspec.md) | _(Optional)_ How to simplify words, to convert them into simplified search keys This often involves removing accents, lowercasing, etc. |
-| [sources](./kmc-model.lexicalmodelsource.sources.md) | readonly | Array<string> | |
-| [wordBreaker?](./kmc-model.lexicalmodelsource.wordbreaker.md) | readonly | [WordBreakerSpec](./kmc-model.wordbreakerspec.md) \| [SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) | _(Optional)_ Which word breaker to use. Choose from:
- 'default' -- breaks according to Unicode UAX \#29 §4.1 Default Word Boundary Specification, which works well for \*most\* languages. - 'ascii' -- a very simple word breaker, for demonstration purposes only. - word breaking function -- provide your own function that breaks words. - class-based word-breaker - may be supported in the future.
| +| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[applyCasing?](./kmc-model.lexicalmodelsource.applycasing.md) + + + | + +`readonly` + + + | + +CasingFunction + + + | + +_(Optional)_ Specifies the casing rules for a language. Should implement three casing forms: - 'lower' -- a fully-lowercased version of the text appropriate for the language's use of the writing system. - 'upper' -- a fully-uppercased version of the text - 'initial' -- a version preserving the input casing aside from the initial character, which is uppercased (like with proper nouns and sentence-initial words in English sentences.) + +This is only utilized if `languageUsesCasing` is defined and set to `true`. 14.0 + + + |
| + +[languageUsesCasing?](./kmc-model.lexicalmodelsource.languageusescasing.md) + + + | + +`readonly` + + + | + +boolean + + + | + +_(Optional)_ When set to `true`, suggestions will attempt to match the case of the input text even if the lexicon entries use a different casing scheme due to search term keying effects. 14.0 + + + |
| + +[punctuation?](./kmc-model.lexicalmodelsource.punctuation.md) + + + | + +`readonly` + + + | + +LexicalModelPunctuation + + + | + +_(Optional)_ Punctuation and spacing suggested by the model. + + + |
| + +[rootClass?](./kmc-model.lexicalmodelsource.rootclass.md) + + + | + +`readonly` + + + | + +string + + + | + +_(Optional)_ The name of the type to instantiate (without parameters) as the base object for a custom predictive model. + + + |
| + +[searchTermToKey?](./kmc-model.lexicalmodelsource.searchtermtokey.md) + + + | + +`readonly` + + + | + +[WordformToKeySpec](./kmc-model.wordformtokeyspec.md) + + + | + +_(Optional)_ How to simplify words, to convert them into simplified search keys This often involves removing accents, lowercasing, etc. + + + |
| + +[sources](./kmc-model.lexicalmodelsource.sources.md) + + + | + +`readonly` + + + | + +Array<string> + + + | + + + |
| + +[wordBreaker?](./kmc-model.lexicalmodelsource.wordbreaker.md) + + + | + +`readonly` + + + | + +[WordBreakerSpec](./kmc-model.wordbreakerspec.md) \| [SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) + + + | + +_(Optional)_ Which word breaker to use. Choose from: + +- 'default' -- breaks according to Unicode UAX \#29 §4.1 Default Word Boundary Specification, which works well for \*most\* languages. - 'ascii' -- a very simple word breaker, for demonstration purposes only. - word breaking function -- provide your own function that breaks words. - class-based word-breaker - may be supported in the future. + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[LexicalModelCompiler](./kmc-model.lexicalmodelcompiler.md) + + + | + +Compiles a .model.ts file to a .model.js. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
Keyman 14.0+ word breaker specification:
Can support all old word breaking specification, but can also be extended with options.
14.0
| +| + +Interface + + + | + +Description + + + |
|---|---|
| + +[LexicalModelCompilerArtifacts](./kmc-model.lexicalmodelcompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation + + + |
| + +[LexicalModelCompilerResult](./kmc-model.lexicalmodelcompilerresult.md) + + + | + +Build artifacts from the lexical model compiler + + + |
| + +[LexicalModelSource](./kmc-model.lexicalmodelsource.md) + + + | + +Base interface for a lexical model source definition + + + |
| + +[WordBreakerSpec](./kmc-model.wordbreakerspec.md) + + + | + +Keyman 14.0+ word breaker specification: + +Can support all old word breaking specification, but can also be extended with options. + + 14.0 + + + |
applyCasing function to assist in the keying process. 14.0 |
-| [SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) | Simplified word breaker specification.
11.0
| -| [SimpleWordformToKeySpec](./kmc-model.simplewordformtokeyspec.md) | Simplifies input text to facilitate finding entries within a lexical model's lexicon. 11.0 | -| [WordformToKeySpec](./kmc-model.wordformtokeyspec.md) | Simplifies input text to facilitate finding entries within a lexical model's lexicon. | +| + +Type Alias + + + | + +Description + + + |
|---|---|
| + +[CasedWordformToKeySpec](./kmc-model.casedwordformtokeyspec.md) + + + | + +Simplifies input text to facilitate finding entries within a lexical model's lexicon, using the model's `applyCasing` function to assist in the keying process. 14.0 + + + |
| + +[SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) + + + | + +Simplified word breaker specification. + + 11.0 + + + |
| + +[SimpleWordformToKeySpec](./kmc-model.simplewordformtokeyspec.md) + + + | + +Simplifies input text to facilitate finding entries within a lexical model's lexicon. 11.0 + + + |
| + +[WordformToKeySpec](./kmc-model.wordformtokeyspec.md) + + + | + +Simplifies input text to facilitate finding entries within a lexical model's lexicon. + + + |
readonly | string\[\] | _(Optional)_ If present, joins words that were split by the word breaker together at the given strings. e.g.,
joinWordsAt: \['-'\] // to keep hyphenated items together
14.0
| -| [overrideScriptDefaults?](./kmc-model.wordbreakerspec.overridescriptdefaults.md) |readonly | OverrideScriptDefaults | _(Optional)_ Overrides word splitting behaviour for certain scripts. For example, specifing that spaces break words in certain South-East Asian scripts that otherwise do not use spaces.
14.0
| -| [use](./kmc-model.wordbreakerspec.use.md) |readonly | [SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) | |
+| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[joinWordsAt?](./kmc-model.wordbreakerspec.joinwordsat.md) + + + | + +`readonly` + + + | + +string\[\] + + + | + +_(Optional)_ If present, joins words that were split by the word breaker together at the given strings. e.g., + +joinWordsAt: \['-'\] // to keep hyphenated items together + + 14.0 + + + |
| + +[overrideScriptDefaults?](./kmc-model.wordbreakerspec.overridescriptdefaults.md) + + + | + +`readonly` + + + | + +OverrideScriptDefaults + + + | + +_(Optional)_ Overrides word splitting behaviour for certain scripts. For example, specifing that spaces break words in certain South-East Asian scripts that otherwise do not use spaces. + + 14.0 + + + |
| + +[use](./kmc-model.wordbreakerspec.use.md) + + + | + +`readonly` + + + | + +[SimpleWordBreakerSpec](./kmc-model.simplewordbreakerspec.md) + + + | + + + |
readonly | (path: string) => string | |
+| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[normalizePath](./kmc-package.kmpcompiler.normalizepath.md) + + + | + +`readonly` + + + | + +(path: string) => string + + + | + + + |
Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .kmp file - binary keyboard package used by Keyman on desktop and touch platforms
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-package.kmpcompiler.init.md) + + + | + + + | + +Initialize the compiler. Copies options. + + + |
| + +[run(inputFilename, outputFilename)](./kmc-package.kmpcompiler.run.md) + + + | + + + | + +Compiles a .kps file to .kmp file. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [KmpCompiler.init()](./kmc-package.kmpcompiler.init.md) function to read any input files by disk. + + + |
| + +[write(artifacts)](./kmc-package.kmpcompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .kmp file - binary keyboard package used by Keyman on desktop and touch platforms + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +inputFilename + + + | + +string + + + | + + + |
| + +outputFilename + + + | + +string + + + | + +_(Optional)_ + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +[KmpCompilerArtifacts](./kmc-package.kmpcompilerartifacts.md) + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[kmp](./kmc-package.kmpcompilerartifacts.kmp.md) + + + | + + + | + +KeymanCompilerArtifact + + + | + +Binary keyboard package filedata and filename - installable into Keyman desktop and mobile projects + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[artifacts](./kmc-package.kmpcompilerresult.artifacts.md) + + + | + + + | + +[KmpCompilerArtifacts](./kmc-package.kmpcompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation. Caller can write these to disk with [KmpCompiler.write()](./kmc-package.kmpcompiler.write.md) + + + |
| + +Class + + + | + +Description + + + |
|---|---|
| + +[KmpCompiler](./kmc-package.kmpcompiler.md) + + + | + +Compiles a .kps file to a .kmp archive. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +[WindowsPackageInstallerCompiler](./kmc-package.windowspackageinstallercompiler.md) + + + | + +Compiles a .kps file to a .exe installer. The compiler does not read or write from filesystem or network directly, but relies on callbacks for all external IO. + + + |
| + +Interface + + + | + +Description + + + |
|---|---|
| + +[KmpCompilerArtifacts](./kmc-package.kmpcompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation + + + |
| + +[KmpCompilerOptions](./kmc-package.kmpcompileroptions.md) + + + | + +Options for the .kps compiler + + + |
| + +[KmpCompilerResult](./kmc-package.kmpcompilerresult.md) + + + | + +Build artifacts from the .kps compiler + + + |
| + +[WindowsPackageInstallerCompilerArtifacts](./kmc-package.windowspackageinstallercompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation + + + |
| + +[WindowsPackageInstallerCompilerOptions](./kmc-package.windowspackageinstallercompileroptions.md) + + + | + +Options for the .kps Windows package installer compiler + + + |
| + +[WindowsPackageInstallerCompilerResult](./kmc-package.windowspackageinstallercompilerresult.md) + + + | + +Build artifacts from the .kps Windows package installer compiler + + + |
| + +[WindowsPackageInstallerSources](./kmc-package.windowspackageinstallersources.md) + + + | + +Sources and metadata for the Windows package installer compiler + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +callbacks + + + | + +CompilerCallbacks + + + | + +Callbacks for external interfaces, including message reporting and file io + + + |
| + +options + + + | + +[WindowsPackageInstallerCompilerOptions](./kmc-package.windowspackageinstallercompileroptions.md) + + + | + +Compiler options + + + |
Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include:
- .exe file - binary Windows package installer executable file
| +| + +Method + + + | + +Modifiers + + + | + +Description + + + |
|---|---|---|
| + +[init(callbacks, options)](./kmc-package.windowspackageinstallercompiler.init.md) + + + | + + + | + +Initialize the compiler. Copies options. + + + |
| + +[run(inputFilename, outputFilename)](./kmc-package.windowspackageinstallercompiler.run.md) + + + | + + + | + +Compiles a .kps file to .exe Windows package installer file. Returns an object containing binary artifacts on success. The files are passed in by name, and the compiler will use callbacks as passed to the [WindowsPackageInstallerCompiler.init()](./kmc-package.windowspackageinstallercompiler.init.md) function to read any input files by disk. + + + |
| + +[write(artifacts)](./kmc-package.windowspackageinstallercompiler.write.md) + + + | + + + | + +Write artifacts from a successful compile to disk, via callbacks methods. The artifacts written may include: + +- .exe file - binary Windows package installer executable file + + + |
| + +Parameter + + + | + +Type + + + | + +Description + + + |
|---|---|---|
| + +artifacts + + + | + +[WindowsPackageInstallerCompilerArtifacts](./kmc-package.windowspackageinstallercompilerartifacts.md) + + + | + +object containing artifact binary data to write out + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[exe](./kmc-package.windowspackageinstallercompilerartifacts.exe.md) + + + | + + + | + +KeymanCompilerArtifact + + + | + +Binary package installer filedata and filename - installable into Keyman desktop and mobile projects + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[sources](./kmc-package.windowspackageinstallercompileroptions.sources.md) + + + | + + + | + +[WindowsPackageInstallerSources](./kmc-package.windowspackageinstallersources.md) + + + | + +Sources and metadata for the Windows package installer compiler + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[artifacts](./kmc-package.windowspackageinstallercompilerresult.artifacts.md) + + + | + + + | + +[WindowsPackageInstallerCompilerArtifacts](./kmc-package.windowspackageinstallercompilerartifacts.md) + + + | + +Internal in-memory build artifacts from a successful compilation. Caller can write these to disk with [WindowsPackageInstallerCompiler.write()](./kmc-package.windowspackageinstallercompiler.write.md) + + + |
| + +Property + + + | + +Modifiers + + + | + +Type + + + | + +Description + + + |
|---|---|---|---|
| + +[appName?](./kmc-package.windowspackageinstallersources.appname.md) + + + | + + + | + +string + + + | + +_(Optional)_ + + + |
| + +[licenseFilename](./kmc-package.windowspackageinstallersources.licensefilename.md) + + + | + + + | + +string + + + | + + + |
| + +[msiFilename](./kmc-package.windowspackageinstallersources.msifilename.md) + + + | + + + | + +string + + + | + + + |
| + +[setupExeFilename](./kmc-package.windowspackageinstallersources.setupexefilename.md) + + + | + + + | + +string + + + | + + + |
| + +[startDisabled](./kmc-package.windowspackageinstallersources.startdisabled.md) + + + | + + + | + +boolean + + + | + + + |
| + +[startWithConfiguration](./kmc-package.windowspackageinstallersources.startwithconfiguration.md) + + + | + + + | + +boolean + + + | + + + |
| + +[titleImageFilename?](./kmc-package.windowspackageinstallersources.titleimagefilename.md) + + + | + + + | + +string + + + | + +_(Optional)_ + + + |
The include for this interface is <script src="kmwuitoolbar.js">.
To select where the interface will be displayed on your page, add the following element where desired: <div id="KeymanWebControl" display="block"></div>, as with the Button Interface above.
A live example of the KeymanWeb Toolbar Interface is available on the KeymanWeb Demo Site. For information on how your site users will interact with the Toolbar Interface, click here.
- + +[Previous: Get Started](get-started) | [Next: What is a Keyboard?](what-is-a-keyboard) diff --git a/developer/engine/web/19.0/guide/what-is-a-keyboard.md b/developer/engine/web/19.0/guide/what-is-a-keyboard.md index 204e26bfb..488d12f92 100644 --- a/developer/engine/web/19.0/guide/what-is-a-keyboard.md +++ b/developer/engine/web/19.0/guide/what-is-a-keyboard.md @@ -11,3 +11,5 @@ The keyboards available for use with KeymanWeb have been developed by a wide ran KeymanWeb supports a very wide range of languages, and many keyboards available for use with KeymanWeb include features specific to particular languages. Because of this, each keyboard has its own documentation, which is included with the On-Screen Keyboard. Although the level of detail in this documentation does vary somewhat, depending on the designer and the requirements of each keyboard, this is the first place to look for information on using a particular language with KeymanWeb. [Index of help for KeymanWeb keyboard layouts](/keyboard) + +[Previous: User Interface Design](user-interface-design) | [Next: Installing Keyboards](adding-keyboards) diff --git a/developer/engine/web/19.0/reference/osk/index.md b/developer/engine/web/19.0/reference/osk/index.md index 6f2018178..999a25c50 100644 --- a/developer/engine/web/19.0/reference/osk/index.md +++ b/developer/engine/web/19.0/reference/osk/index.md @@ -38,4 +38,4 @@ The On-Screen Keyboard module is exposed to the developer as `window.keyman.osk` : Determine whether or not the OSK has been moved from its default position by the user. [Class Names and Identifiers for On-Screen Keyboard and Other KeymanWeb Elements](classes) -: The appearance of the KeymanWeb on-screen keyboard, menu amd other elements can be customized by a web designer by redefining (or adding to) the default styles. +: The appearance of the KeymanWeb on-screen keyboard, menu and other elements can be customized by a web designer by redefining (or adding to) the default styles. diff --git a/developer/language/guide/__index.txt b/developer/language/guide/__index.txt new file mode 100644 index 000000000..872597e0d --- /dev/null +++ b/developer/language/guide/__index.txt @@ -0,0 +1,23 @@ +overview.md +glossary.md +rules.md +constraints.md +groups.md +stores.md +variable-stores.md +headers.md +strings.md +virtual-keys.md +expansions.md +casing-support.md +control-keys.md +hardware-forms.md +unicode.md +comments.md +long-lines.md +constants.md +compile-targets.md +multi-platform.md +rota-keys.md +history.md +-us-english.md \ No newline at end of file diff --git a/developer/language/guide/groups.md b/developer/language/guide/groups.md index 92fe3c9ad..8bf0a3852 100644 --- a/developer/language/guide/groups.md +++ b/developer/language/guide/groups.md @@ -133,26 +133,38 @@ future versions of the language. ## Empty final group -If the final group processed is a context and keystroke group (`using keys`), -and there is no `nomatch` rule, and the keystroke is not matched in the group, -the keystroke will be output to the screen, regardless of whether or not it was -matched in earlier groups. +There is a side-effect of keystroke processing, when the last group that is +processed during a keystroke event has the following properties: -This can be used for example if you want to process a change at the end of a -word which might be the last word in a line or in a text field, where the user +1. it is a context and keystroke group (`using keys`), and +2. is has no `nomatch` rule, and +3. it has no rule matching the keystroke + +In this situation, the keystroke will be emitted to the application, even if it +was matched in earlier groups. + +See [Control keys and control characters](control-keys) for further discussion. + +### Example with Enter or Tab + +This is can helpful, for example, if you want to process a change at the end of +a word which might be the last word in a line or in a text field, where the user presses Enter or Tab: ``` +begin Unicode > use(main) + group(main) using keys + 's' > 'σ' 'σ + [K_ENTER] > 'ς' use(final) +'σ + [K_TAB] > 'ς' use(final) group(final) using keys -c Empty final group causes keystroke to be emitted +c Empty group causes keystroke to be emitted ``` -See [Control keys and control characters](control-keys) for more details. +Note: the name of the group is not significant. ## Statements and rules used with groups diff --git a/developer/language/reference/__index.txt b/developer/language/reference/__index.txt new file mode 100644 index 000000000..8884d4a2c --- /dev/null +++ b/developer/language/reference/__index.txt @@ -0,0 +1,52 @@ +_keywordsbytype.md +any.md +aselayout.md +baselayout.md +beep.md +begin.md +bitmap.md +call.md +caps.md +casedkeys.md +context.md +copyright.md +deadkey.md +displaymap.md +group.md +hotkey.md +includecodes.md +if.md +index.md +keyboardversion.md +kmw_embedcss.md +kmw_embedjs.md +kmw_helpfile.md +kmw_helptext.md +kmw_rtl.md +layer.md +layoutfile.md +match.md +message.md +mnemoniclayout.md +name.md +newlayer.md +nomatch.md +notany.md +nul.md +oldcharposmatching.md +oldlayer.md +outs.md +platform.md +reset.md +return.md +save.md +set.md +store.md +targets.md +use.md +version.md +visualkeyboard.md +-ethnologuecode.md +-language.md +-layout.md +-windowslanguages.md diff --git a/developer/lexical-models/submission/step-0.md b/developer/lexical-models/submission/step-0.md index a9330123d..c50e8d395 100644 --- a/developer/lexical-models/submission/step-0.md +++ b/developer/lexical-models/submission/step-0.md @@ -81,13 +81,6 @@ components: `LICENSE.md` : the open source license for the lexical model -`+ Le clavier Àlkèláŋg est optimisé pour écrire dans les langues africaines. + Il inclut : +
+Proposé et développé par © NIBANN ENGINEERING.
+
+ Pour basculer entre les claviers ABC et IPA, utilisez les boutons
+
+ et
+
.
+
+ Pour basculer entre les claviers Symbols et Devises, utilisez
+
+ et
+
.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/keyboard/alkelang/1.0/btn-abc.png b/keyboard/alkelang/1.0/btn-abc.png
new file mode 100644
index 000000000..1d7809a37
Binary files /dev/null and b/keyboard/alkelang/1.0/btn-abc.png differ
diff --git a/keyboard/alkelang/1.0/btn-currencies.png b/keyboard/alkelang/1.0/btn-currencies.png
new file mode 100644
index 000000000..bb1c37fd4
Binary files /dev/null and b/keyboard/alkelang/1.0/btn-currencies.png differ
diff --git a/keyboard/alkelang/1.0/btn-ipa.png b/keyboard/alkelang/1.0/btn-ipa.png
new file mode 100644
index 000000000..e7d9fe2ec
Binary files /dev/null and b/keyboard/alkelang/1.0/btn-ipa.png differ
diff --git a/keyboard/alkelang/1.0/btn-symbols.png b/keyboard/alkelang/1.0/btn-symbols.png
new file mode 100644
index 000000000..884b3f650
Binary files /dev/null and b/keyboard/alkelang/1.0/btn-symbols.png differ
diff --git a/keyboard/alkelang/1.0/currencies-layout.png b/keyboard/alkelang/1.0/currencies-layout.png
new file mode 100644
index 000000000..94b4da9ec
Binary files /dev/null and b/keyboard/alkelang/1.0/currencies-layout.png differ
diff --git a/keyboard/alkelang/1.0/default-layout.png b/keyboard/alkelang/1.0/default-layout.png
new file mode 100644
index 000000000..c69d6ee2d
Binary files /dev/null and b/keyboard/alkelang/1.0/default-layout.png differ
diff --git a/keyboard/alkelang/1.0/default-lexique.png b/keyboard/alkelang/1.0/default-lexique.png
new file mode 100644
index 000000000..02ac5dfd5
Binary files /dev/null and b/keyboard/alkelang/1.0/default-lexique.png differ
diff --git a/keyboard/alkelang/1.0/ipa-layout.png b/keyboard/alkelang/1.0/ipa-layout.png
new file mode 100644
index 000000000..4ca25ebf9
Binary files /dev/null and b/keyboard/alkelang/1.0/ipa-layout.png differ
diff --git a/keyboard/alkelang/1.0/longpress-e.png b/keyboard/alkelang/1.0/longpress-e.png
new file mode 100644
index 000000000..3d8bb6ee2
Binary files /dev/null and b/keyboard/alkelang/1.0/longpress-e.png differ
diff --git a/keyboard/alkelang/1.0/symbols-layout.png b/keyboard/alkelang/1.0/symbols-layout.png
new file mode 100644
index 000000000..63637bc9a
Binary files /dev/null and b/keyboard/alkelang/1.0/symbols-layout.png differ
diff --git a/keyboard/arabic_izza/1.2.2/arabic_izza.php b/keyboard/arabic_izza/1.2.2/arabic_izza.php
new file mode 100644
index 000000000..6be445f3a
--- /dev/null
+++ b/keyboard/arabic_izza/1.2.2/arabic_izza.php
@@ -0,0 +1,80 @@
+
+
+Supported languages: Arabic, Tamazight, Farsi, Ottoman (Turkish), etc.
+يمكن استعمال مفاتيح العزة لكتابة: العربية، الأمازيغية، الفارسية، العثمانية، إلخ
+In order to type letters with Hamza proceed as follows:
+قواعد كتابة الهمزة
+ +Isolated Hamza(ء), press letter Hamza(ء)once.
+الهمزة لوحدها، الضغط على رمز الهمزة مرة واحدة
+Hamza fouk alif(أ), press letter alif(ا)twice.
+الهمزة فوق ألف، الضغط على رمز الألف مرتين
+Hamza taht alif(إ), press letter Hamza(ء)twice.
+الهمزة تحت ألف، الضغط على رمز الهمزة مرتين
+Hamza fouk waw(ؤ), press letter waw(و)twice.
+الهمزة فوق واو، الضغط على رمز الواو مرتين
+Hamza fouk nabira(ئ), press nabira twice(ى).
+الهمزة فوق نبرة، الضغط على رمز النبرة مرتين
+Hamzat madd(آ), press Isolated Hamza(ء)followed by Alif(ا).
+همزة المد، الضغط على الهمزة ثم الألف
+To type Al taarif(ال), just press one key.
+الـ التعريف لها زر مستقل
+Harakat(Damma, Fatha, Kasra)and Shadda are on the first level without Shift.
+الحركات و الشدة لها أزرار مستقلة على المستوى الأول
+Extra letters (چ،ڤ،گ،پ،ژ)are found on second level under keys (ج،ف،ك،ب،ز) respectively, which make them +very easy to locate.
+(چ،ڤ،گ،پ،ژ) الحروف
+
+توجد على المستوى الثاني تحت أزرار الحروف التالية
+
+(ج،ف،ك،ب،ز)
+
+مما يسهل تحديد مكانها
The layout remains mostly unchanged except for punctuation marks and the extra letters. +They could be reached from the first level without shift.
+التصميم كما في حواسيب المكتب ما عدا بعض التغييرات تتعلق برموز التنقيط و الحروف الزائدة +توجد كلها على المستوى الأول
+Besides taking advantage of the main points above, the number of keys is reduced to eight +in each line on the first layer, thus improving enormously the comfort and typing speed.
+إلى جانب العمل بالنقاط المذكورة أعلاه، لقد تم تخفيض عدد المفاتيح في كل سطر إلى ثمانية على المستوى +الأول، مما يضاعف من سرعة إدخال النصوص العربية
+© Prof. Abdelmalek Bouhadjera
diff --git a/keyboard/arabic_izza/1.2.3/arabic_izza.php b/keyboard/arabic_izza/1.2.3/arabic_izza.php new file mode 100644 index 000000000..6be445f3a --- /dev/null +++ b/keyboard/arabic_izza/1.2.3/arabic_izza.php @@ -0,0 +1,80 @@ + + +Supported languages: Arabic, Tamazight, Farsi, Ottoman (Turkish), etc.
+يمكن استعمال مفاتيح العزة لكتابة: العربية، الأمازيغية، الفارسية، العثمانية، إلخ
+In order to type letters with Hamza proceed as follows:
+قواعد كتابة الهمزة
+ +Isolated Hamza(ء), press letter Hamza(ء)once.
+الهمزة لوحدها، الضغط على رمز الهمزة مرة واحدة
+Hamza fouk alif(أ), press letter alif(ا)twice.
+الهمزة فوق ألف، الضغط على رمز الألف مرتين
+Hamza taht alif(إ), press letter Hamza(ء)twice.
+الهمزة تحت ألف، الضغط على رمز الهمزة مرتين
+Hamza fouk waw(ؤ), press letter waw(و)twice.
+الهمزة فوق واو، الضغط على رمز الواو مرتين
+Hamza fouk nabira(ئ), press nabira twice(ى).
+الهمزة فوق نبرة، الضغط على رمز النبرة مرتين
+Hamzat madd(آ), press Isolated Hamza(ء)followed by Alif(ا).
+همزة المد، الضغط على الهمزة ثم الألف
+To type Al taarif(ال), just press one key.
+الـ التعريف لها زر مستقل
+Harakat(Damma, Fatha, Kasra)and Shadda are on the first level without Shift.
+الحركات و الشدة لها أزرار مستقلة على المستوى الأول
+Extra letters (چ،ڤ،گ،پ،ژ)are found on second level under keys (ج،ف،ك،ب،ز) respectively, which make them +very easy to locate.
+(چ،ڤ،گ،پ،ژ) الحروف
+
+توجد على المستوى الثاني تحت أزرار الحروف التالية
+
+(ج،ف،ك،ب،ز)
+
+مما يسهل تحديد مكانها
The layout remains mostly unchanged except for punctuation marks and the extra letters. +They could be reached from the first level without shift.
+التصميم كما في حواسيب المكتب ما عدا بعض التغييرات تتعلق برموز التنقيط و الحروف الزائدة +توجد كلها على المستوى الأول
+Besides taking advantage of the main points above, the number of keys is reduced to eight +in each line on the first layer, thus improving enormously the comfort and typing speed.
+إلى جانب العمل بالنقاط المذكورة أعلاه، لقد تم تخفيض عدد المفاتيح في كل سطر إلى ثمانية على المستوى +الأول، مما يضاعف من سرعة إدخال النصوص العربية
+© Prof. Abdelmalek Bouhadjera
diff --git a/keyboard/arabic_w_o_dots/1.1/arabic_w_o_dots.php b/keyboard/arabic_w_o_dots/1.1/arabic_w_o_dots.php new file mode 100644 index 000000000..a2f132b28 --- /dev/null +++ b/keyboard/arabic_w_o_dots/1.1/arabic_w_o_dots.php @@ -0,0 +1,91 @@ + + + ++ Arabic Alphabet without the dots like the Olden Days +
+ ++
+
+ +
+
+ +
| Long Press LTR | +FullForm | +
|---|---|
| LRM | +Left-to-Right Mark | +
| LRE | +Left-to-Right Embedding | +
| LRO | +Left-to-Right Overlay | +
| LRI | +Left-to-Right Isolate | +
| FSI | +First Strong Isolate | +
| Long Press RTL | +FullForm |
|---|---|
| RLM | +Right-to-Left Mark | +
| RLE | +Right-to-Left Embedding | +
| RLO | +Right-to-Left Overlay | +
| RLI | +Right-to-Left Isolate | +
| PDI | +Pop Directional Isolate | +
| Pop Directional Formatting | +
+
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-alternate-shifted.png b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-alternate-shifted.png
new file mode 100644
index 000000000..9d1c6518e
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-alternate-shifted.png differ
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-alternate.png b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-alternate.png
new file mode 100644
index 000000000..cc0c30d90
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-alternate.png differ
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-shifted.png b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-shifted.png
new file mode 100644
index 000000000..332ef7162
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop-shifted.png differ
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop.png b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop.png
new file mode 100644
index 000000000..ee30c5d20
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide-desktop.png differ
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide-numbers.jpg b/keyboard/arabic_w_o_dots/1.1/typing-guide-numbers.jpg
new file mode 100644
index 000000000..b67ba32ca
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide-numbers.jpg differ
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide-symbols.jpg b/keyboard/arabic_w_o_dots/1.1/typing-guide-symbols.jpg
new file mode 100644
index 000000000..b38596c05
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide-symbols.jpg differ
diff --git a/keyboard/arabic_w_o_dots/1.1/typing-guide.jpg b/keyboard/arabic_w_o_dots/1.1/typing-guide.jpg
new file mode 100644
index 000000000..2f5752db8
Binary files /dev/null and b/keyboard/arabic_w_o_dots/1.1/typing-guide.jpg differ
diff --git a/keyboard/basic_kbda1/1.2.1/basic_kbda1.php b/keyboard/basic_kbda1/1.2.1/basic_kbda1.php
new file mode 100644
index 000000000..a85ada157
--- /dev/null
+++ b/keyboard/basic_kbda1/1.2.1/basic_kbda1.php
@@ -0,0 +1,21 @@
+
+
+
++ Arabic (101) Basic. The keyboard layout follows the Windows 10 layout. +
+ ++ Arabic (101) Basic. The keyboard layout follows the Windows 10 layout. +
+ ++ The keyboard layout follows the Windows 10 Arabic (102) Basic keyboard layout. +
+ +Due to the size and number of keys, some characters (and shift layers) are hidden in the long press. + Press and hold on the key with a little dot on the top right to reveal them.
+ ++ The keyboard layout follows the Windows 10 Arabic (102) Basic keyboard layout. +
+ +Due to the size and number of keys, some characters (and shift layers) are hidden in the long press. + Press and hold on the key with a little dot on the top right to reveal them.
+ ++ Arabic (102) AZERTY Basic. The keyboard layout follows the Windows 10 layout. +
+ ++ Arabic (102) AZERTY Basic. The keyboard layout follows the Windows 10 layout. +
+ ++ Cantonese Telex keyboard for the Universal Version Script of the National Language for Cantonese Oạt Ngữ Quóc Ngữ Tị Thung Yụng Bản粵語國語字通用版 +
+粵語國語字係一種拉丁化嘅粵語文字,意在發展粵語表音文字,縮短粵文學習同書寫時間,增強粵語使用者之間嘅凝聚力同自我認同
+
粵語國語字通用版本集合咗各種粵語口音嘅特點,形成咗一種能夠體現並且描述各種粵語口音嘅粵語表音文字,又減低咗同音字現象嘅影響,為唔同地區唔同口音嘅粵語使用者提供咗一種通用嘅書面文字
+Oạt-Ngữ Quóc-Ngữ-Tị hệ yât chủng Lai-đinh hóa ké Oạt Ngữ mần-tị, ý tọi phát chiển Oạt Ngữ biểu-yâm mần-tị, suc đoản Oạt Mần học-tập thùng sư-slẻ sị-kan, tăng-khường Oạt-Ngữ sỉ-yụng-chẻ chi-kan ké ngình-tụi-lịch thùng tị-ngõ nhận-thùng
+Oạt-Ngữ Quóc-Ngữ-Tị Thung-Yụng Bản-Bổn tập-hập chỏ cóc-chủng Oạt-Ngữ hẩu-yâm ké đặc-điểm, hình-sình chỏ yât chủng nằng-cấu thể-hiện bính-xẻ miều-suất cóc-chủng Oạt-Ngữ hẩu-yâm ké Oạt-Ngữ biểu-yâm mần-tị, ựu kảm-đê chỏ thùng-yâm-xì ké yỉnh-hưởng, vỵ m̀ thùng đỵ-khư m̀ thùng hẩu-yâm ké Oạt-Ngữ sỉ-yụng-chẻ thề-cung chỏ yât chủng thung-yụng ké sư-miện mần-tị
+Chữ Quốc Ngữ tiếng Quảng Đông là một loại chữ viết La-tinh hóa của tiếng Quảng Đông, nhằm mục đích phát triển chữ viết biểu âm của tiếng Quảng Đông, giảm bớt thời gian học và viết tiếng Quảng Đông, nâng cao sức hướng tâm và khẳng định căn cước của những người sử dụng tiếng Quảng Đông
+Chữ Quốc Ngữ tiếng Quảng Đông thông dụng đã tổng hợp đặc trưng của các loại giọng của tiếng Quảng, hình thành một chữ viết biểu âm có thể thể hiện và mô tả các loại giọng của tiếng Quảng, cũng bớt ảnh hưởng của hiện tượng từ đồng âm, cho những người nói các giọng của tiếng Quảng Đông ở khắp nơi một hệ thống chữ viết thung yụng
+The script of national language for Cantonese is a romanized Cantonese script aimed at developing a phonetic writing system for Cantonese, reduce the time of learning and writing of Cantonese, while strengthening the cohesion and self-identity among Cantonese speakers.
+The universal version of the script of national language for Cantonese combine the character of various accents of Cantonese, forms a phonetic writing system for Cantonese which demonstrates and describe various of Cantonese accents, and reduced the impact of homophone, provides a common written system for Cantonese speakers in different area with different accent.
+ +建議以下嘅粵語國語字音韻表打字
+The suggested form of spelling of Cantonese Romanization
+ +
+ 位於字母a â ă u ư o ô ơ 之前嘅韻首k可以轉變為c
+The consonant "k" before vowels a â ă u ư o ô ơ can be transformed to "c"
+位於字母i ê e之前嘅韻首ng可以轉變為ngh
+The consonant "ng" before vowels i ê e can be transformed to "ngh"
+廣州音入面消失咗嘅某啲日母nh韻首同疑母ng韻首保留喺通用版入面,呢啲日母nh同疑母ng喺台山話欽州話同南寧話仍然存在
+The "nh" and "ng" consonants disappeared in Cantonese of Hong Kong and Canton city are preserved in the universal version, which are still existing in Hoisan, Yamchow and Namning accent
+廣州音入面唔再分別嘅 ch(知)同t(精)韻首、x(持)同tx(青)韻首、s(詩)同sl(思)韻首依然喺通用版本入面得到體現
+The "ch" and "t" consonants pair, "x" and "tx" consonants pair, "s" and "sl" consonants pair which are not differed in Hong Kong and Canton city accent, are still presented in universal version.
+"tr"韻首用嚟表示依家粵語依家已經冇咗嘅「知組」聲母,"tr"韻首用嚟表示專有名詞譬如話人同地方嘅名,"tr"韻首係第一聲、第二聲、第三聲、第六聲嘅韻腹前邊時同"ch"韻首嘅發音相同,"tr"韻首係第四聲、第五聲嘅韻腹前邊時同"x"韻首嘅發音相同
+"tr" consonant is used to represent the "tr" serie consonants which is no longer existing Cantonese. The "tr" is applied in the proper noun such as name of a person and a place. The pronunciation of "tr" is same as "ch" in syllable with the first, second, third and sixth tone. The pronunciation of "tr" is same as "x" in syllable with the forth and fifth tone.
+喺廣州音入面讀"ph"而係喺南寧音入面有機會讀"v"嘅韻首,通用版本寫"ho" "hu"或者"kho"譬如話 「花hoa」「化hóa」「葷huân」「訓huấn」「快khoái」
+The consonants pronounce "ph" in Canton city accent and have change to be pronounced as "v", should be spelled as "ho" "hu" or "kho" in universal version, such as "花hoa" "化hóa" "葷huân" "訓huấn" "快khoái"
+字母"f"嘅發音同"ph"相同,主要用嚟表音同書寫外來詞語
+The letter "f" has the same pronunciation with consonant "ph". "f" is mainly used to represent sounds and spelling loanword from foreign languages.
+字母"d" 字母"z" 同字母組合 "dz" 喺粵語源頭嘅詞語入面與韻首"y"有一樣嘅作用,發音係/j/或者/z/
+Letter "d", letter "z", and letter combination "dz" have the same application with the consonant "y" in Cantonese origin words, the pronunciation is /j/ or /z/
+
+ 喺廣州音入面讀"ô"而係喺台山音入面讀"ao"嘅韻腹寫成"au"
+The vowels pronounce "ô" in Canton city and Hong Kong accent while pronounce "ao" in Hoisan accent are spelled as "au"
+喺廣州音入面讀"âu"而係喺台山音入面讀"ưu"嘅韻腹寫成"ưu"
+The vowels pronounce "âu" in Canton city and Hong Kong accent while pronounce "ưu" in Hoisan accent are spelled as "ưu"
+如果"ưu"韻腹前邊嘅韻首係"y",咁就唔使寫韻首,直程寫"ưu"就得,譬如話「優ưu」「幼ứu」「友ữu」「右ựu」
+If the consonant before the vowel "ưu" is "y", then this consonant will be omitted, only "ưu" will be spelled, such as 「優ưu」「幼ứu」「友ữu」「右ựu」
+如果一個字嘅南寧音版本嘅韻腹係"ư", 喺廣州音或者台山話入面讀"cui/kui" "khui" "hui" "ngui" "slui" "txui" "tui" "nui" "lui",咁呢啲字嘅通用版正寫係"cư/kư" "khư" "hư" "ngư" "slư" "txư" "tư" "nư" "lư"
+If a character's vowel is "ư" in Namning accent, and the character is pronounced "cui/kui" "khui" "hui" "ngui" "slui" "txui" "tui" "nui" "lui" in Canton city and Hong Kong accent or Hoisan accent, then the character should be spelled as "cư/kư" "khư" "hư" "ngư" "slư" "txư" "tư" "nư" "lư" in the universal version
+南寧音入面嘅[tʃɿ] [tʃʰɿ] [sɿ]嘅拼寫係"chu" "xu" "su"
+The [tʃɿ] [tʃʰɿ] and [sɿ] sounds in Namning accent are spelled as "chu" "xu" and "su"
+"iu" "im" "in" "ip" "it" 組合用嚟表示發音或者串唔係粵語詞源或者唔係漢越詞詞源嘅詞語,譬如話來自嘅英文嘅借詞「𨋢lip」「天拿水thin-nà sủi」,或者係借用漢字嚟表示詞語嘅發音但係字嘅意思同漢字本身嘅意思無關嘅字,呢啲正寫嘅發音同廣州話嘅"iêu" "iêm" "iên" "iêp" "iêt" 一樣,同台山話嘅"ưu" "âm" "ân" "ât" "âp" 一樣
+The "iu" "im" "in" "ip" "it" "ay" combiniation can be used to represent sounds and spell words without Cantonese origin and without sino-cantonese origin, for example loanword from English, such as "lip" and "thin-nà sủi", or in case of using chinese characters to represent sounds or a word but the meaning of the character is not linked with its origin meaning. Their pronunciation is same as "iêu" "iêm" "iên" "iêp" "iêt" in Canton city accent, or "ưu" "âm" "ân" "ât" "âp" in Hoisan accent.
+ê同ay用嚟表示一樣嘅發音,ê用嚟拼寫漢字詞源嘅字同有明確嘅詞源喺古音入面讀呢個韻腹嘅詞語,ay用嚟拼寫語氣詞、少部分嘅非漢字嘅詞語或者係漢字但係係由唔規則嘅音變產生出呢個讀音嘅字,譬如話「哎áy」「嚟lày」「睇thảy」「咪may」「咪mạy」「米may」「呢nay」「揮phay」「僞ngạy」「魏ngày」「危ngày」「矮ảy」「哎áy」「曳yay」「喺hảy」「使sảy」「费pháy」「沸pháy」
+"ê" and "ay" are used to represent the same pronunciation. "ê" is used to spell sino-cantonese words and the words with clear etymology that pronounce this vowel in ancient time. "ay" is used to spell few non-sino-cantonese words and sino-cantonese words with irregular sound change, such as「哎áy」「嚟lày」「睇thảy」「咪may」「咪mạy」「米may」「呢nay」「揮phuy」「僞ngụy」「魏ngùy」「危ngùy」「矮ảy」「哎áy」「曳yay」「喺hảy」「使sảy」「费pháy」「沸pháy」
+y同ơi用嚟表示一樣嘅發音,y用嚟拼寫有明確嘅詞源讀呢個韻腹嘅漢越詞或者純越詞,ơi用嚟拼寫語氣詞、冇韻首嘅單獨嘅音節譬如話「誒ợi」,同少部分嘅非漢字嘅詞語或者係漢字但係由不規則音變產生出嘅讀音,譬如話「嚟lời」,同用嚟表示外來語入面嘅呢個韻腹,譬如話「士多啤梨sị-đo-be-lởi」
+"y" and "ơi" are used to represent the same pronunciation. "y" is used to spell native cantonese words and sino-cantonese words with clear etymology that should pronounce this vowel. "ơi" is used to spell the vowel without consonant, such as 「誒ợi」, and few native cantonese words and sino-cantonese words with irregular sound change, such as「嚟lời」, and representing this vowel in borrowed words, such as「士多啤梨sị-đo-be-lởi」
+"oai"用嚟表示語氣詞「㗏」[ʔwaːj]
+"oai" is used to spell the interjection「㗏」[ʔwaːj]
+"uấy"同"uẩy"用嚟表示語氣詞「喂」[ʔwəj]
+"uấy" and "uẩy" are used to spell the interjection「喂」[ʔwəj]
+如果一個單獨嘅yi音嘅音節聲調係第1、2、3聲調,咁唔使寫後邊嘅i,譬如話「衣y」「倚ỷ」「意ỷ」
+If a "yi" sound syllable has first, second, or third tone, the "i" behind can be removed, such as 「衣y」「倚ỷ」「意ỷ」
+如果一個單獨嘅yi音嘅音節聲調係第4、5、6聲調,咁要寫yi,譬如話「移yì」「以yĩ」「易yị」
+If a "yi" sound syllable has forth, fifth, or sixth tone, it should be spelled as "yi", such as 「移yì」「以yĩ」「易yị」
+一個冇韻首嘅uy音要寫成vy
+A "uy" sound syllable without front consonant should be spell as "vy"
+如果一個單獨嘅uy音嘅音節聲調係第1、2、3聲調,咁可以寫成uy,譬如話「威uy」「委ủy」「畏úy」
+If a "vy" sound syllable has first, second, or third tone, it can be spelled as "vy", such as 「威uy」「委ủy」「畏úy」
+如果一個單獨嘅yiêt, yiên, yiêm音嘅音節聲調係第1、2、3聲調,咁唔使寫中間嘅i,譬如話「噎yết」「煙yên」「腌yêm」
+If a "yiêt" "yiên" "yiêm" sound syllable has first, second, or third tone, the "i" in the middle can be removed, such as 「噎yết」「煙yên」「腌yêm」
+如果"y" "ê" 嘅元音前邊冇韻首單獨出現,咁要寫"ơi" "ay",譬如話「誒ợi」「哎áy」
+If "y" and "ê" vowels appear without a consonant before, it should be spelled as "ơi" "ay", such as 「誒ợi」「哎áy」
+如果"â"嘅元音後邊冇韻尾單獨出現,咁要寫"ơ",譬如話「㗎cớ」「嘞lớ」
+If "â" vowels appear without a consonant behind, the vowel should be spelled as "ơ", such as 「㗎cớ」「嘞lớ」
+喺粵語國語字系統入面,正寫"uôc"同韻腹"uoc"嘅作用一樣,正寫"ây"同韻腹"ay"嘅作用一樣
+In the Cantonese National Language system, the spelling "uôc" has the same effect with "uoc" sound, the spelling "ây" has the same effect with "ay" sound
+使用正寫"iêng" "eng"同韻腹"ênh"嘅音位一樣,正寫"iêc" "ek"同韻腹"êc"嘅音位一樣
+The spelling "iêng" "eng" has the same phoneme with "ênh" sound, the spelling "iêc" "ek" has the same phoneme with "êc" sound
+使用正寫"iong"同韻腹"ương"嘅音位一樣,正寫"iok"同韻腹"ươc"嘅音位一樣
+The spelling "iong" has the same phoneme with "ương" sound, the spelling "iok" has the same phoneme with "ươc" sound
+正寫"uyên"同韻腹"oan"嘅作用一樣,正寫"uyêt"同韻腹"oat"嘅作用一樣, 正寫"viêt"同音節"oat"嘅作用一樣, 正寫"viên"同音節"oan"嘅作用一樣, 正寫"uyên"同音節"oan"嘅作用一樣
+The spelling "uyên" has the same effect with "oan" sound, the spelling "uyêt" has the same effect with "oat" sound, the spelling "viêt" has the same effect with "oat" syllable, the spelling "viên" has the same effect with "oan" syllable, the spelling "uyên" has the same effect with "oan" syllable
+韻尾字母k同韻尾字母c ch嘅作用一樣
+The end consonant letter "k" has the same effect as the end consonant letter "c" and "ch"
+
+
+
+Specific Alphabet mẫu tự đặc biệt 特別字母
+| Character | +Key pressed | +Sample input | +Sample output | +
|---|---|---|---|
| ă | +aw | +chacw | +chăc則 | +
| â | +aa | +yata | +yât一 | +
| ê | +ee | +leec | +lêc叻 | +
| iê | +ii | +thiin | +thiên天 | +
| ô | +oo | +ddoo | +đô都 | +
| ơ | +ow | +cow | +cơ㗎 | +
tone rules quy tắc thanh điệu 音調規則
+對應粵拼嘅第一聲唔使打,第二聲打r,第三聲打s,第四聲打f,第五聲打x,第六聲打j
+tone 1 for nothing, tone 2 = r, tone 3 =s, tone 4 = f, tone 5 = x, tone 6 = j
p> +| Tone | +Keys added to syllable | +Sample input | +Sample output + | +
|---|---|---|---|
| 1(high level) | ++ | cau | +cau高 | +
| 2 (high rising) | +r | +haur | +hảu好 + | +
| 3 (mid level) | +s | +huws | +hứ去 + | +
| 4 (low falling) | +f | +xaf | +xà茶 + |
| 5 (low rising) | +x | +max | +mã馬 + | +
| 6 (low falling) | +j | +heej | +hệ係 + | +
| 7 (high entering) | ++ | yaat | +yât一 + | +
| 8 (middle entering) | +s | +phats | +phát發 + | +
| 9 (low entering) | +j | +phaatj | +phật罰 + | +
examples: 舉例:
+ar > ả, as > á, af > à, ax > ã, aj > ạ
+譬如話『兩』嘅國語字係"lưỡng", 咁輸入內容就係"luongwx"
+ +A space " " should be added betweem each words or between each syllable of cantonese origin or sino-cantonese origin words.
+每個詞語或者每個粵語詞語或者漢粵詞嘅每個音節之間應該添加空格" "
+The first letter in one sentence should be capitalized
+每個句子嘅第一個字母要大寫
+The first letter in a proper noun such as the name of a particular person and place should be capitalized
+專有名詞譬如話人同地方嘅第一個字母要大寫
+The first letter in each syllable of a Cantonese origin or Sino-cantonese origin proper noun such as the name of a person and a place should be capitalized
+粵語或者漢粵詞詞源嘅專有名詞嘅每一個音節嘅第一個字母要大寫
+In an acronym, the first letter of each syllable should be capitalized, and a period "." can be added behind each capitalized letter
+係縮寫中,每個音節嘅第一個字母要大寫,每個大寫字母嘅後邊可以添埋一個句號"."
+In a multi-syllable single word, the space " " should be added between each syllable.
+係一個多音字單詞中,每個音節之間應該加入一個連字符"-"
+In a multi-syllable combined word or a Cantonese origin or Sino-cantonese origin word, the hyphen "-" can be added between each syllable for avoid confusion
+係一個多音節嘅組合詞或者粵語詞或者漢粵詞嘅每一個音節之間,可以加入一個連字符"-"避免撈亂
+Other punctuation works similar with punctuations in English and Vietnamese
+等等đẳng đẳng嘅縮寫係đ.đ.
+The acronym of "đẳng đẳng" is "đ.đ."
+如果某一個音節歷史上由兩個音節演化然後合併,咁喺呢個音節嘅韻首同韻腹中間可以加入一個撇"’",譬如話自"mât-yẽ乜嘢"變成嘅"m’e咩" 自"nhị-sập二十"變成嘅"nh’ạ廿" 自"slam-sập三十"變成嘅"sl’a卅" 自"m̀-hệ唔係"變成嘅"m’ệ咪"
+If one syllable was historically evolved from the merging of two syllables, an apostrophe can be inserted between the front consonant and the vowel. For example, "mât-yẽ乜嘢" evolved to "m’e咩" "nhị-sập二十" evolved to "nh’ạ廿" "slam-sập三十" evolved to "s’a卅" "m̀-hệ唔係" evolved to "m’ệ咪"
+其他標點嘅作用同英文同越南文類似
+Other uses of punctuation are similar with English and Vietnamese
+ + + +雙擊音調鍵同特殊轉化鍵,取消轉化,變返原本嘅拼寫
+doubletaping leads to generate original letters:
+
+ If more than one tone marking key is pressed, the last one will be used. For example, typing asf will return "à". To write a tone marking key as a normal character, one has to press it twice: her becomes hẻ, while herr becomes her.
+
使用Z鍵取消音調轉換
+tap Z key to remove tonations
+ + + Dictionary for the script of National Language universal version Quóc Ngữ Tị大粤國音字匯-粵語國語字字典總合通用版 + + Dictionary for the script of National Language for Hong Kong and Canton city accent Quóc Ữ Chị粵語國語字字典香港同廣州音 + + Dictionary for the script of National Language for Hoisanese accent Koc Ngũi Tụ台山話國語字字典 + + Dictionary for the script of National Language for Yamchow accent Quóc Yĩ Chì粵語國語字字典欽州音 + + Dictionary for the script of National Language for Namning accent Quóc Ữ Chị粵語國語字字典南寧音 + +粵語國語字通用版本係一種收納咗多種粵語口音發音嘅粵語文字,粵語國語字通用版本嘅使用同粵語國語字嘅廣州音、台山音、南寧音、欽州音等等粵語口音嘅版本嘅使用之間唔衝突
+Oạt Ngữ Quóc Ngữ Tị thung yụng bản bổn hệ yât chủng sưu-nạp chỏ đo-chủng Oạt Ngữ hẩu yâm ké Oạt-Ngữ mần-tị, Oạt Ngữ Quóc Ngữ Tị thung yụng bản bổn ké sỉ-yụng thùng Oạt Ngữ Quóc Ngữ Tị ké Quỏng Châu yâm, Thòi San yâm, Nàm Nình Yâm, Yâm Châu yâm đ.đ. Oạt Ngữ hẩu yâm ké bản-bổn ké sỉ-yụng m̀ xung-đật
+The universal version of Script of Nation Language of Cantonese is a Cantonese script gathered various of Cantonese accents and dialects, the uses of the universal version of Script of Nation Language of Cantonese is not conflict with the use of the Script of Nation Language of Cantonese for cantonese accents, such as Hong Kong and Canton city accent, Hoisan accent, Namning accent and Yamchow accent.
+ +範文:南國山河
+Nàm Quóc San Hò
+南國山河南帝居
+Nàm Quóc San Hò Nàm Đế Cư
+截然定分在天書
+Tiệt Nhiền Định Phân Tọi Thiên Sư
+如何逆虜來侵犯
+Nhừ Hò Ngịch Lỗ Lòi Txâm Phạn
+汝等行看取敗虛
+Nhữ Đẳng Hành Hón Txử Bại Hư
+ +© cathaylab
\ No newline at end of file diff --git a/keyboard/cantonese_telex/3.1.2/consonants.png b/keyboard/cantonese_telex/3.1.2/consonants.png new file mode 100644 index 000000000..e22eaf184 Binary files /dev/null and b/keyboard/cantonese_telex/3.1.2/consonants.png differ diff --git a/keyboard/cantonese_telex/3.1.2/tones.png b/keyboard/cantonese_telex/3.1.2/tones.png new file mode 100644 index 000000000..b337641f1 Binary files /dev/null and b/keyboard/cantonese_telex/3.1.2/tones.png differ diff --git a/keyboard/cantonese_telex/3.1.2/vowels.png b/keyboard/cantonese_telex/3.1.2/vowels.png new file mode 100644 index 000000000..197837587 Binary files /dev/null and b/keyboard/cantonese_telex/3.1.2/vowels.png differ diff --git a/keyboard/easy_arabic/1.2/easy_arabic.php b/keyboard/easy_arabic/1.2/easy_arabic.php new file mode 100644 index 000000000..02d10d8e9 --- /dev/null +++ b/keyboard/easy_arabic/1.2/easy_arabic.php @@ -0,0 +1,13 @@ + + +Changes some keys to make it easier to type.
+ ++ hoisan for Hòi Sán Vạ Coc Ngũi Tụ (Hoisanese). +
+the Script of National Language for Hoisanese台山話國語字
+台山話國語字係一種羅馬化嘅粵語文字
+Hòi Sán Vạ Coc Ngũi Tụ hại yât chủng Lò-Mã phá ké Oạt Ngũi mồn tụ.
+ +建議以下嘅台山話國語字音韻表打字
+The suggested form of spelling of the Script of National Language for Hoisanese
+ +
+位於字母a â ă u ư o ô ơ 之前嘅韻首k可以轉變為c
+The consonant "k" before vowels a â ă u ư o ô ơ can be transformed to "c"
+位於字母i ê e之前嘅韻首ng可以轉變為ngh
+The consonant "ng" before vowels i ê e can be transformed to "ngh"
* +字母"f"嘅發音同"ph"相同,主要用嚟表音同書寫外來詞語
+The letter "f" has the same pronunciation with consonant "ph". "f" is mainly used to represent sounds and spelling loanword from foreign languages.
+字母"d" 字母"z" 同字母組合 "dz" 喺粵語源頭嘅詞語入面與韻首"y"有一樣嘅作用,發音係/j/或者/z/
+Letter "d", letter "z", and letter combination "dz" have the same application with the consonant "y" in Cantonese origin words, the pronunciation is /j/ or /z/
+ + +
+如果韻腹i單獨出現,音調係陰聲í ỉ,頭先嘅韻首係y,咁韻首y可以俾省略
+If vowel "i" appear alone, the tone is a high tone, such as "í" or "ỉ", and the consonant is "y", then the consonant "y" can be omitted.
+喺台山話國語字系統入面,使用正寫"iêng"同韻腹"ênh"嘅作用一樣,正寫"iêc"同韻腹"êc"嘅作用一樣
+In the Hoisanese National Language system, the spelling "iêng" has the same effect with "ênh" sound, the spelling "iêc" has the same effect with "êc" sound
+使用正寫"im"同韻腹"âm"嘅作用一樣,正寫"in"同韻腹"ân"嘅作用一樣,正寫"iu"同韻腹"ưu"嘅作用一樣
+The spelling "im" has the same effect with "âm" sound, the spelling "iu" has the same effect with "ưu" sound
+正寫"ut"同韻腹"ôt"嘅作用一樣,正寫"un"同韻腹"ôn"嘅作用一樣
+the spelling "ut" has the same effect with "ôt" sound, the spelling "un" has the same effect with "ôn" sound
+正寫"ôi"同韻腹"ui"嘅作用一樣
+the spelling "ôi" has the same effect with "ui" sound
+
+Specific Alphabet: 特別字母
+| Character | +Key pressed | +Sample input | +Sample output | +
|---|---|---|---|
| ă | +aw | +tacw | +tăc則 | +
| â | +aa | +yata | +yât一 | +
| ê | +ee | +leec | +lêc叻 | +
| iê | +ii | +tiip | +tiêp接 | +
| ơ | +ow | +cow | +cơ㗎 | +
tone rules: 音調規則
+對應粵拼嘅第一聲同第三聲打s,第二聲打r, 第四聲打f,第五聲打x,第六聲打j
p> +tone 2 = r, tone 1 and tone 3 = s, tone 4 = f, tone 5 = x, tone 6 = j
p> +| Tone | +Keys added to syllable | +Sample input | +Sample output + | +
|---|---|---|---|
| 1(high level) | +s | +caos | +cáo高 | +
| 2 (high rising) | +r | +haor | +hảo好 + | +
| 3 (mid level) | +s | +huis | +húi去 + | +
| 4 (low falling) | +f | +xaf | +xà茶 + |
| 5 (low rising) | +x | +max | +mã馬 + | +
| 6 (low falling) | +j | +haij | +hại係 + | +
| 7 (high entering) | +/ | +yaat | +yât一 + | +
| 8 (middle entering) | +s | +phats | +phát發 + | +
| 9 (low entering) | +j | +phatj | +phạt罰 + | +
examples: 舉例:
+ar > ả, as > á, af > à, ax > ã, aj > ạ
+
譬如話:‘兩’ 嘅羅馬字係‘lểnh’, 咁輸入內容就係‘leenhr’
+ + +雙擊音調鍵同特殊轉化鍵,取消轉化,變返原本嘅拼寫
+doubletaping leads to generate original letters:
+
+ If more than one tone marking key is pressed, the last one will be used. For example, typing asf will return "à". To write a tone marking key as a normal character, one has to press it twice: her becomes hẻ, while herr becomes her.
+
使用Z鍵取消音調轉換
+tap Z key to remove tonations + + +台山話國語字字典dictionary for Hoisanese Coc Ngũi Tụ + + + + +
範文:南國山河 Nàm Coc Sán Hò
+南國山河南帝居 Nàm Coc Sán Hò Nàm Ái Cúi
+截然定分在天書 Tiệt Ngình Ịnh Phốn Tọi Hính Sí
+如何逆虜來侵犯 Ngùi Hò Ngịch Lũ Lòi Txấm Phạn
+汝等行看取敗虛 Nỹ Ảnh Hành Hón Txủi Bại Húi
+ +© cathaylab
diff --git a/keyboard/hoisan/2.1/tones.png b/keyboard/hoisan/2.1/tones.png new file mode 100644 index 000000000..4c1f22831 Binary files /dev/null and b/keyboard/hoisan/2.1/tones.png differ diff --git a/keyboard/hoisan/2.1/vowels.png b/keyboard/hoisan/2.1/vowels.png new file mode 100644 index 000000000..88a247b09 Binary files /dev/null and b/keyboard/hoisan/2.1/vowels.png differ diff --git a/keyboard/khmer_angkor/2.4/KAK_Documentation_EN.pdf b/keyboard/khmer_angkor/2.4/KAK_Documentation_EN.pdf new file mode 100644 index 000000000..adc878fcc Binary files /dev/null and b/keyboard/khmer_angkor/2.4/KAK_Documentation_EN.pdf differ diff --git a/keyboard/khmer_angkor/2.4/KAK_Documentation_KH.pdf b/keyboard/khmer_angkor/2.4/KAK_Documentation_KH.pdf new file mode 100644 index 000000000..6d38d04e0 Binary files /dev/null and b/keyboard/khmer_angkor/2.4/KAK_Documentation_KH.pdf differ diff --git a/keyboard/khmer_angkor/2.4/khmer_angkor.php b/keyboard/khmer_angkor/2.4/khmer_angkor.php new file mode 100644 index 000000000..be2514399 --- /dev/null +++ b/keyboard/khmer_angkor/2.4/khmer_angkor.php @@ -0,0 +1,4012 @@ + + +This documentation is adapted from +three sources: ‘How to Type Khmer Unicode,’ ‘the Unicode Standard, Version +10.0.0’ and a paper authored by the Keyman team entitled ‘Spoof-Vulnerable Rendering +in Khmer Unicode Implementation’ presented at Asia Conference on Information +System in 2017. Customizations have been made by the Keyman team. A layer +is added to both desktop and touch layout in order to dedicate to the Khmer +divination lore and Khmer lunar dates.
+ +There is no Shift key nor subscript sign in the touch layout +to switch between layouts. Strange, right? Yes, maybe, but it is not easy to +reach for the “Shift” key one-handedly. More keys are embedded in each +key: +
While using the touch keyboard, one has to be aware of the +location of each key. This may take a while to get used to, but it would be +easier, once passed the learning curve, than pressing “Shift” each time to get +addition characters and pressing “្” each +time to get a subscript.
+ +Phone - Default layout with flick gesture on ហ key
+ +
+ +
Phone - Shift layout
+ +
Phone - Khmer Numeric layout
+ +
+ +
Phone - Numeric layout with longpress triggered on / key
+ +
+ +
|
+ Consonant + |
+
+ Keystroke + |
+
+ + |
+
+ Consonant + |
+
+ Keystroke + |
+
|
+ ក + [U+1780] + |
+
+ K + |
+
+ ថ + [U+1790] + |
+
+ F + |
+ |
|
+ ខ + [U+1781] + |
+
+ X + |
+
+ ទ + [U+1791] + |
+
+ Shift T + |
+ |
|
+ គ + [U+1782] + |
+
+ Shift K + |
+
+ ធ + [U+1792] + |
+
+ Shift F + |
+ |
|
+ ឃ + [U+1783] + |
+
+ Shift X + |
+
+ ន + [U+1793] + |
+
+ N + |
+ |
|
+ ង + [U+1784] + |
+
+ G + |
+
+ ប + [U+1794] + |
+
+ B + |
+ |
|
+ ច + [U+1785] + |
+
+ C + |
+
+ ផ + [U+1795] + |
+
+ P + |
+ |
|
+ ឆ + [U+1786] + |
+
+ Q + |
+
+ ព + [U+1796] + |
+
+ Shift B + |
+ |
|
+ ជ + [U+1787] + |
+
+ Shift C + |
+
+ ភ + [U+1797] + |
+
+ Shift P + |
+ |
|
+ ឈ + [U+1788] + |
+
+ Shift Q + |
+
+ ម + [U+1798] + |
+
+ M + |
+ |
|
+ ញ + [U+1789] + |
+
+ Shift J + |
+
+ យ + [U+1799] + |
+
+ Y + |
+ |
|
+ ដ + [U+178A] + |
+
+ D + |
+
+ រ + [U+179A] + |
+
+ R + |
+ |
|
+ ឋ + [U+178B] + |
+
+ Z + |
+
+ ល + [U+179B] + |
+
+ L + |
+ |
|
+ ឌ + [U+178C] + |
+
+ Shift D + |
+
+ វ + [U+179C] + |
+
+ V + |
+ |
|
+ ឍ + [U+178D] + |
+
+ Shift Z + |
+
+ ស + [U+179F] + |
+
+ S + |
+ |
|
+ ណ + [U+178E] + |
+
+ Shift N + |
+
+ ហ + [U+17A0] + |
+
+ H + |
+ |
|
+ ត + [U+178F] + |
+
+ T + |
+
+ ឡ + [U+17A1] + |
+
+ Shift L + |
+ |
|
+ + |
+
+ + |
+
+ អ + [U+17A2] + |
+
+ Shift G + |
+
+ +
|
+ Dependent Vowel + |
+
+ Keystroke + |
+
+ + |
+
+ Dependent Vowel + |
+
+ Keystroke + |
+
|
+ ា [U+17B6] + |
+
+ A + |
+
+ ៀ [U+17C0] + |
+
+ [ + |
+ |
|
+ ិ [U+17B7] + |
+
+ I + |
+
+ េ [U+17C1] + |
+
+ E + |
+ |
|
+ ី [U+17B8] + |
+
+ Shift I + |
+
+ ែ [U+17C2] + |
+
+ Shift E + |
+ |
|
+ ឹ [U+17B9] + |
+
+ W + |
+
+ ៃ [U+17C3] + |
+
+ Shift S + |
+ |
|
+ ឺ [U+17BA] + |
+
+ Shift W + |
+
+ ោ [U+17C4] + |
+
+ O + |
+ |
|
+ ុ [U+17BB] + |
+
+ U + |
+
+ ៅ [U+17C5] + |
+
+ Shift O + |
+ |
|
+ ូ [U+17BC] + |
+
+ Shift U + |
+
+ ុំ [U+17BB][U+17C6] + |
+
+ , + |
+ |
|
+ ួ [U+17BD] + |
+
+ Shift Y + |
+
+ ាំ [U+17B6][U+17C6] + |
+
+ Shift A + |
+ |
|
+ ើ [U+17BE] + |
+
+ ; + |
+
+ ុះ [U+17BB][U+17C7] + |
+
+ Shift , + |
+ |
|
+ ឿ [U+17BF] + |
+
+ Shift [ + |
+
+ េះ [U+17C1][U+17C7] + |
+
+ Shift V + |
+ |
|
+ + |
+
+ + |
+
+ ោះ [U+17C4][U+17C7] + |
+
+ Shift ; + |
+
+ +
|
+ Sign + |
+
+ Keystroke + |
+
|
+ ំ [U+17C6] + |
+
+ Shift M + |
+
|
+ ះ [U+17C7] + |
+
+ Shift H + |
+
|
+ ៈ [U+17C8][1] + |
+
+ AltGr ’ + |
+
+ +
|
+ Independent Vowel + |
+
+ Keystroke + |
+
+ + |
+
+ Independent Vowel + |
+
+ Keystroke + |
+
|
+ ឥ [U+17A5] + |
+
+ - + |
+
+ ឭ [U+17AD] + |
+
+ Shift \ + |
+ |
|
+ ឦ [U+17A6] + |
+
+ AltGr I + |
+
+ ឮ [U+17AE] + |
+
+ \ + |
+ |
|
+ ឧ [U+17A7] + |
+
+ Shift ] + |
+
+ ឯ [U+17AF] + |
+
+ AltGr E + |
+ |
|
+ ឩ [U+17A9] + |
+
+ AltGr [ + |
+
+ ឰ [U+17B0] + |
+
+ AltGr P + |
+ |
|
+ ឪ [U+17AA] + |
+
+ ] + |
+
+ ឱ [U+17B1] + |
+
+ AltGr O + |
+ |
|
+ ឫ [U+17AB] + |
+
+ AltGr R + |
+
+ ឲ [U+17B2] + |
+
+ = + |
+ |
|
+ ឬ [U+17AC] + |
+
+ Shift R + |
+
+ ឳ [U+17B3] + |
+
+ AltGr ] + |
+
|
+ Diacritics + |
+
+ Keystroke + |
+
+ + |
+
+ Diacritics + |
+
+ Keystroke + |
+
|
+ ៉ [U+17C9] + |
+
+ Shift ’ + |
+
+ ៏ [U+17CF] + |
+
+ Shift 8 + |
+ |
|
+ ៊ [U+17CA] + |
+
+ / + |
+
+ ័ [U+17D0] + |
+
+ Shift 7 + |
+ |
|
+ ់ [U+17CB] + |
+
+ ’ + |
+
+ ៎ [U+17CE] + |
+
+ AltGr = + |
+ |
|
+ ៌ [U+17CC] + |
+
+ Shift - + |
+
+ ៓ [U+17D3] + |
+
+ AltGr M + |
+ |
|
+ ៍ [U+17CD] + |
+
+ Shift 6 + |
+
+ ្ [U+17D2] + |
+
+ J + |
+
|
+ Native Punct. + |
+
+ Keystroke + |
+
+ + |
+
+ Native Punct. + |
+
+ Keystroke + |
+
|
+ ។ [U+17D4] + |
+
+ . + |
+
+ ៙ [U+17D9] + |
+
+ AltGr 6 + |
+ |
|
+ ៕ [U+17D5] + |
+
+ Shift . + |
+
+ ៚ [U+17DA] + |
+
+ AltGr 7 + |
+ |
|
+ ៖ [U+17D6] + |
+
+ AltGr ; + |
+
+ ៗ [U+17D7] + |
+
+ Shift 2 + |
+
+ +
|
+ Latin + Punct. + |
+
+ Keystroke + |
+
+ + |
+
+ Latin + Punct. + |
+
+ Keystroke + |
+
|
+ ! [U+0021] + |
+
+ Shift 1 + |
+
+ « [U+00AB] + |
+
+ ` + |
+ |
|
+ ? [U+003F] + |
+
+ Shift ? + |
+
+ » [U+00BB] + |
+
+ Shift ` + |
+ |
|
+ “ [U+0022] + |
+
+ Shift 3 + |
+
+ - [U+002D] + |
+
+ AltGr S + |
+ |
|
+ . [U+002E] + |
+
+ AltGr . + |
+
+ : [U+003A] + |
+
+ AltGr G + |
+ |
|
+ , [U+002C] + |
+
+ AltGr , + |
+
+ ‘ [U+2018] + |
+
+ AltGr H + |
+ |
|
+ ; [U+003B] + |
+
+ AltGr N + |
+
+ ’ [U+2019] + |
+
+ AltGr J + |
+ |
|
+ # [U+0023] + |
+
+ AltGr C + |
+
+ + |
+
+ & [U+0026] + |
+
+ AltGr V + |
+
+ +
|
+ ៛ [U+17DB] + |
+
+ Shift 4 + |
+
+ +
|
+ Khmer + Numeral + |
+
+ Keystroke + |
+
+ + |
+
+ Khmer + Numeral + |
+
+ Keystroke + |
+
|
+ ១ [U+17E1] + |
+
+ 1 + |
+
+ ៦ [U+17E6] + |
+
+ 6 + |
+ |
|
+ ២ [U+17E2] + |
+
+ 2 + |
+
+ ៧ [U+17E7] + |
+
+ 7 + |
+ |
|
+ ៣ [U+17E3] + |
+
+ 3 + |
+
+ ៨ [U+17E8] + |
+
+ 8 + |
+ |
|
+ ៤ [U+17E4] + |
+
+ 4 + |
+
+ ៩ [U+17E9] + |
+
+ 9 + |
+ |
|
+ ៥ [U+17E5] + |
+
+ 5 + |
+
+ ០ [U+17E0] + |
+
+ 0 + |
+
+ +
|
+ Divination Lore + |
+
+ Keystroke + |
+
+ + |
+
+ Divination Lore + |
+
+ Keystroke + |
+
|
+ ៱ [U+17F1] + |
+
+ AltGr Shift 1 + |
+
+ ៶ [U+17F6] + |
+
+ AltGr Shift 6 + |
+ |
|
+ ៲ [U+17F2] + |
+
+ AltGr Shift 2 + |
+
+ ៷ [U+17F7] + |
+
+ AltGr Shift 7 + |
+ |
|
+ ៳ [U+17F3] + |
+
+ AltGr Shift 3 + |
+
+ ៸ [U+17F8] + |
+
+ AltGr Shift 8 + |
+ |
|
+ ៴ [U+17F4] + |
+
+ AltGr Shift 4 + |
+
+ ៹ [U+17F9] + |
+
+ AltGr Shift 9 + |
+ |
|
+ ៵ [U+17F5] + |
+
+ AltGr Shift 5 + |
+
+ ៰ [U+17F0] + |
+
+ AltGr Shift 0 + |
+
|
+ Khmer Lunar Date + |
+
+ Keystroke + |
+
+ + |
+
+ Khmer Lunar Date + |
+
+ Keystroke + |
+
|
+ ᧠ + [U+19E0] + |
+
+ AltGr Shift Q + |
+
+ ᧰ + [U+19F0] + |
+
+ AltGr Shift G + |
+ |
|
+ ᧡ + [U+19E1] + |
+
+ AltGr Shift W + |
+
+ ᧱ + [U+19F1] + |
+
+ AltGr Shift H + |
+ |
|
+ ᧢ + [U+19E2] + |
+
+ AltGr Shift E + |
+
+ ᧲ + [U+19F2] + |
+
+ AltGr Shift J + |
+ |
|
+ ᧣ + [U+19E3] + |
+
+ AltGr Shift R + |
+
+ ᧳ + [U+19F3] + |
+
+ AltGr Shift K + |
+ |
|
+ ᧤ + [U+19E4] + |
+
+ AltGr Shift T + |
+
+ ᧴ + [U+19F4] + |
+
+ AltGr Shift L + |
+ |
|
+ ᧥ + [U+19E5] + |
+
+ AltGr Shift Y + |
+
+ ᧵ + [U+19F5] + |
+
+ AltGr Shift ; + |
+ |
|
+ ᧦ + [U+19E6] + |
+
+ AltGr Shift U + |
+
+ ᧶ + [U+19F6] + |
+
+ AltGr Shift ’ + |
+ |
|
+ ᧧ + [U+19E7] + |
+
+ AltGr Shift I + |
+
+ ᧷ + [U+19F7] + |
+
+ AltGr Shift Z + |
+ |
|
+ ᧨ + [U+19E8] + |
+
+ AltGr Shift O + |
+
+ ᧸ + [U+19F8] + |
+
+ AltGr Shift X + |
+ |
|
+ ᧩ + [U+19E9] + |
+
+ AltGr Shift P + |
+
+ ᧹ + [U+19F9] + |
+
+ AltGr Shift C + |
+ |
|
+ ᧪ + [U+19EA] + |
+
+ AltGr Shift [ + |
+
+ ᧺ + [U+19FA] + |
+
+ AltGr Shift V + |
+ |
|
+ ᧫ + [U+19EB] + |
+
+ AltGr Shift ] + |
+
+ ᧻ + [U+19FB] + |
+
+ AltGr Shift B + |
+ |
|
+ ᧬ + [U+19EC] + |
+
+ AltGr Shift A + |
+
+ ᧼ + [U+19FC] + |
+
+ AltGr Shift N + |
+ |
|
+ ᧭ + [U+19ED] + |
+
+ AltGr Shift S + |
+
+ ᧽ + [U+19FD] + |
+
+ AltGr Shift M + |
+ |
|
+ ᧮ + [U+19EE] + |
+
+ AltGr Shift D + |
+
+ ᧾ + [U+19FE] + |
+
+ AltGr Shift , + |
+ |
|
+ ᧯ + [U+19EF] + |
+
+ AltGr Shift F + |
+
+ ᧿ + [U+19FF] + |
+
+ AltGr Shift . + |
+
|
+ Character + |
+
+ Keystroke + |
+
|
+ ៘ + [U+17D8] + + |
+
+ AltGr L + |
+
|
+ ឨ + [U+17A8] + |
+
+ AltGr T + |
+
|
+ ៜ + [U+17DC] + |
+
+ AltGr Q + |
+
|
+ ៑[2] [U+17D1] + |
+
+ AltGr 3 + |
+
|
+ ៓ + [U+17D3] + |
+
+ AltGr M + |
+
|
+ Other Character + |
+
+ Keystroke + |
+
|
+ ឝ + [U+179D] + |
+
+ AltGr K + |
+
|
+ ឞ + [U+179E] + |
+
+ AltGr B + |
+
|
+ ៝ + [U+17DD] + |
+
+ AltGr W + |
+
|
+ Key name + |
+
+ Keystroke + |
+
|
+ Zero-width non-joiner [U+200C] + |
+
+ AltGr + 1 + |
+
|
+ Zero-width joiner [U+200D] + |
+
+ AltGr + ‘ + |
+
|
+ Zero-width space [U+200B] + |
+
+ Spacebar + |
+
|
+ White space [U+0020] + |
+
+ Shift + Spacebar or Press spacebar twice + |
+
|
+ No break space [U+00A0] + |
+
+ AltGr + Spacebar + |
+
+ +
Khmer Angkor keyboard adopted the key arrangement from that +of Khmer NiDA keyboard. More functionalities have been added to it to assist in +typing (i.e. reduce inconsistency in character sequences). Regardless of how +the user may type, a well-formed word will be produced. Please note that only +issues identified are covered. For how to install the Khmer Angkor keyboard, +please click here +for the instructions.
+ +You can simply use Khmer Angkor as you would for any NiDA +based keyboard. You may type a word in an order of how +it is spelled, not how it appears to be, especially when the vowel is to the +left of the consonant. For example, to type the word “តែ” +which means ‘tea’, one should type the consonant first and then the vowel (i.e. +press key “T” and then “Shift E”).
+ +The order of characters is:
+ ++Consonant + Subscript(s) + Consonant Shifter + Vowel + Diacritic
+ +There are eight cases of invisible typos that Khmer Angkor +keyboard automatically corrects. They could not be detected with the naked eye; +and the rendering engines may render them all the same on the screen. The +auto-correction involves reordering and/or transducing of certain in correct characters to the +correct ones in a split second.
+ +When a subscript and a vowel occur together, the vowel has +to come after the subscript. For instance, “ខ្មែរ” +and +“ខែ្មរ” +look the same, but they are encoded differently.
+ +1. +ខ្មែរ = ខ ្ម ែ រ +(correct)
+ +2. +ខែ្មរ = ខ ែ ្ម រ +(incorrect)
+ +Thanks to the context dependent rules, Khmer Angkor keyboard +is able to output the second typing sequence the same as that of the first one.
+ +According to the spelling rule, in a sequence of two +subscript and one of which is ្រ [U+17D2] [U+179A], +the ្រ [U+17D2] [U+179A] should come after another subscript.
+ +· +កញ្ជ្រឹល = ក +ញ ្ជ ្រ +ឹ ល (correct)
+ +· +កញ្រ្ជឹល = ក +ញ ្រ ្ជ +ឹ ល (incorrect)
+ +As you can see the two-character sequences yield the same +visual output on the screen. Once again, Khmer Angkor will be able to +automatically swap the sequence of the second to the first; so that the output would +be both looked and encoded correctly and consistently.
+ +This is a case whereby the character sequence is vague in +the Unicode Standard. Unicode Standard 4.0 and later have the consonant shifter +come between the consonant and the subscript while Unicode Standard 3.0 has it +after the subscript. Khmer Angkor conforms to Unicode 3.0 and it is taken as the standard +sequence. If one typed a consonant shifter before a subscript, the order would +be switched silently.
+ +ម +៉ ្យ ា ង +Þ ម +្យ ៉ ា ង
+ +Consonant shifters should be typed before a vowel. (See the +same in the section above)
+ +Nikahit is considered as a sign in the Unicode Standard. +However its function is more like that of a vowel. It is usually combined with +another vowel, i.e. ុ [U+17BB] ា [U+17B6], and it should always be +typed after these vowels.
+ + ក
+ំ ុ Þ ក
+ុ ំ
+ ក ំ ា Þ ក
+ា ំ
These two vowels could be mistakenly typed by adding ា +[U+17B6] and េ [U+17C1] respectively to េ [U+17C1]. Given this sequence, Khmer Angkor would +transform them to ោ [U+17C4] and ើ [U+17BE], the correct vowel encodings.
+ +Two subscripts look exactly the same, but they are encoded +with different Unicode code points, ្ដ [U+17D2][U+178A] and ្ត [U+17D2][U+178F]. According to the spelling rule, it +governs that the first should come after ណ [U+178E] and the latter +should come after ន [U+1793].
+ +Since no two-vowel sequence is allowed, once one is typed +after another, the vowel would switch to the one typed last. For +example, if the current character is vowel ា [U+17B6], and then ែ [U+17C2] is typed, the final output +would be +ែ [U+17C2], not ា +[U+17B6].
+ ++NOTE: The vowel rotation would not be triggered in the following +cases:
+ +· +If the first vowel is េ [U+17C1] +and the second is ី [U+17B8] or +vice versa, then the switch would not happen, but the output would be ើ +[U+17BE] instead.
+ +· +If the first vowel is េ [U+17C1] +and the second is ា [U+17B8] or vice versa, then the +switch would not happen, but the output would be ោ +[U+17C4] instead.
+ +· +If the first vowel is on the above vowels[3] and the second is ុ +[U+17BB] or vice versa, +then the switch would not happen, but the output would be the corresponding +consonant shifter instead. For examples: a sequence of ស +ី ុ or ស ុ ី would be +automated as ស៊ី (ស ៊ ី); +ម +ី ុ or ម ុ ី +would be automated as ម៉ី (ម ៉ ី).
+ +· +When ុ [U+17BB] +is typed after ាំ, it will be transformed +to a consonant shifter corresponding with the consonant before ាំ before which the shifter will be placed. For example,
+ +o សាំ ++ ុ Þ ស៊ាំ +(ស ៊ ាំ) and
+ +o មាំ ++ ុ Þ ម៉ាំ +(ម ៉ ាំ).
+ +· +When ា or ុ is typed after ំ, +the order will be reversed. For example,
+ +o ក ++ ំ + ុ + Þ កុំ (ក +ុ ំ) and
+ +o ក ++ ំ + ា +Þ កាំ +(ក ា ំ).
+ ++ +
· +No two consecutive vowels in a syllable.
+ +· +No Bantoc is allowed after a vowel, a pseudo vowel[4], a consonant shifter or a subscript.
+ +· +No two consecutive subscript signs (្) are +allowed.
+ +· +No two consecutive consonant shifters are allowed.
+ ++ +
|
+ No + |
+
+ Mistyped as … + |
+
+ Transformed to … + |
+
|
+ 1 + |
+
+ ទ្ប (ទ ្ប) + |
+
+ ឡ + |
+
|
+ 2 + |
+
+ ប្ញ (ប ្ញ) + + |
+
+ ឫ + |
+
|
+ 3 + |
+
+ ឫុ (ប ្ញ + ុ) + |
+
+ ឬ + |
+
|
+ 4 + |
+
+ ឭា (ឭ ា) + + |
+
+ ញ + |
+
|
+ 5 + |
+
+ ឮា (ឮ ា) + + |
+
+ ញ + |
+
|
+ 6 + |
+
+ ព្ញ (ព ្ញ) + + |
+
+ ឭ + |
+
|
+ 7 + |
+
+ ឭុ (ព ្ញ + ុ) + |
+
+ ឮ + |
+
|
+ 8 + |
+
+ ព្ឋ (ព ្ឋ) + + |
+
+ ឰ + |
+
|
+ 9 + |
+
+ ឧិ (ឧ ិ) + + |
+
+ ឱ + |
+
|
+ 10 + |
+
+ ឧ៌ (ឧ ៌) + |
+
+ ឱ + |
+
|
+ 11 + |
+
+ ឧ៍ (ឧ ៍) + + |
+
+ ឱ + |
+
|
+ 12 + |
+
+ ដ្ធ (ដ ្ធ) + + |
+
+ ដ្ឋ + |
+
|
+ 13 + |
+
+ ទ្ឋ (ទ ្ឋ) + + |
+
+ ទ្ធ + |
+
|
+ 14 + |
+
+ ពន្ឋ (ព ន ្ឋ) + + |
+
+ ពន្ធ + |
+
|
+ 15 + |
+
+ ព័ន្ឋ (ព ័ ន ្ឋ) + + |
+
+ ព័ន្ធ + |
+
|
+ 16 + |
+
+ ឪ្យ (ឪ ្យ) + + |
+
+ ឱ្យ + |
+
|
+ 17 + |
+
+ ឳ្យ (ឳ ្យ) + + |
+
+ ឱ្យ + |
+
|
+ 18 + |
+
+ ញ្វ (ញ ្វ) + + |
+
+ ព្វា + |
+
|
+ 19 + |
+
+ េ ្យ ឺ + |
+
+ ឿ + |
+
|
+ 20 + |
+
+ េ ្យ ឹ + |
+
+ ឿ + |
+
+ 21 + |
+
+ េ ្យ ី + |
+
+ ឿ + |
+
+
+ +
+
[1] +It is actually not a vowel, but it behaves like one. To some, this is a +diacritics.
+ +[2] +Note the different between this character and ៊ [U+17CA].
+ +[3] +ិ [U+17B7], ី [U+17B8], ឹ +[U+17B9], ឺ [U+17BA], ើ [U+17BE], and ាំ [U+17B6] [U+17C6] are considered as +superscript vowels or above vowels.
+ +[4]
+Three characters play a role similar to that of vowels, thus they are called
+‘pseudo vowel’.
+They are: ំ
+[U+17C6], ះ [U+17C7], and ៈ [U+17C8].
Click here to download the English Version or Khmer Version in PDF format.
+ ++ To get Khmer fonts, you may visit one of the three sources below: +
+ +
+ + \ No newline at end of file diff --git a/keyboard/khmer_angkor/2.4/khmer_angkor/colorschememapping.xml b/keyboard/khmer_angkor/2.4/khmer_angkor/colorschememapping.xml new file mode 100644 index 000000000..6a0069cd7 --- /dev/null +++ b/keyboard/khmer_angkor/2.4/khmer_angkor/colorschememapping.xml @@ -0,0 +1,2 @@ + +A keyboard for typing the Moro language. Moro is a language spoken in the Nuba Mountains of South Kordofan, Sudan.
+ +The keyboard layouts shown below show the position of the key to press to output the desired character.
+ +




If you swipe down starting on the 'ŋ' key a '?' will be output. If you swipe up starting on the 'ŋ' key a '/' will be output.
+ +Alternatively, if you press and hold the 'ŋ' a pop-up with two options, '?' or '/' you can then slide without lifting to the desired character. Note the full stop also has other punctuation on long press.
+ +Keyboard for majority letters will follow the standard qwerty keyboard layout, except for the following in the table below.
+The table shows the key cap, the character shown on the hardware keyboard and the character it outputs.
+ +| q | +ɗ | +
| [ | +ñ | +
| ] | +ë | +
| \ | +ḏ | +
| h | +ə | +
| z | +ẓ | +
| x | +đ | +
| / | +ŋ | +
| SHIFT + q | +Ɗ | +
| SHIFT + [ | +Ñ | +
| SHIFT + ] | +Ë | +
| SHIFT + \ | +Ḏ | +
| SHIFT + h | +Ə | +
| SHIFT + z | +Ẑ | +
| SHIFT + x | +Đ | +
| SHIFT + / | +Ŋ | +
To be able to type the characters from the standard qwerty keyboard press the right alt key + the desired key as shown in the table.
+ +| RAlt + [ | +[ | +
| RAlt + ] | +] | +
| RAlt + \ | +\ | +
| RAlt + / | +/ | +
| Shift + RAlt + [ | +{ | +
| Shift + RAlt + ] | +} | +
| Shift + RAlt + \ | +| | +
| Shift + RAlt + / | +/ | +
This is a keyboard for entering Arabic phonetically using a standard English keyboard.
+ +This keyboard has several shortcuts to make it easier to type phonetically:
+ ++Taigi Telex for Tâi-gí (Taiwanese) pe̍h-ōe-jī and Teochewnese Tiê-chiu Pe̍h-ūe-jī. +
++Taigi Telex version, is using "rdfxw" keys for generating tone marks +
++Tâi-gí telex ji̍p-le̍k, tī-leh goân-im jī-bú āu-bīn ah-sī múi chi̍t-ê im-chiat āu-bīn thiam jī-bú "r" "s" "f" "j" "w" kah "x" khì sán-seng im-tiāu. +
+2=r, 3=s, 5=f, 6/7=j, 8=j, 9=w
+| Tone | +Keys added to syllable | +Sample input | +Sample output + | +
|---|---|---|---|
| 1 (high level) | ++ | ko | +ko高 | +
| 2 (high rising) | +r | +hor | +hó好 + | +
| 3 (mid level) | +s | +khis | +khì去 + | +
| 4 (high entering) | ++ | it | +it一 + | +
| 5 (low falling) | +f | +tef | +tê茶 + |
| 6/7 (low falling) | +j | +ej | +ē下 + | +
| 8 (low entering) | +j | +hoatj | +hoa̍t罰 + | +
| 9 (low entering) | +w | +how | +hŏ + | +
ee > ê
+| Character | +Key pressed | +Sample input | +Sample output | +
|---|---|---|---|
| ⁿ | +nn | +hiann | +hiaⁿ | +
| o͘ | +oo | +khoo | +kho͘ | +
| ṳ | +uu | +huuf | +hṳ̂ | +
| o̤ | +aa | +baae | +bo̤e | +
Phah nn̄g pái jī-bú, chhú-siau im-tiāu, sán-seng goân-lâi ê jī-bú doubletaping leads to generate original letters:
+Phì-jû example: is = iss, kann = kannn, law = laww, bee = beee
+ + +
+
+© cathaylab
diff --git a/keyboard/taigi_telex/2.0/taigitelexU_.png b/keyboard/taigi_telex/2.0/taigitelexU_.png new file mode 100644 index 000000000..895ecf15a Binary files /dev/null and b/keyboard/taigi_telex/2.0/taigitelexU_.png differ diff --git a/keyboard/taigi_telex/2.0/taigitelexU_S.png b/keyboard/taigi_telex/2.0/taigitelexU_S.png new file mode 100644 index 000000000..fdb8b407e Binary files /dev/null and b/keyboard/taigi_telex/2.0/taigitelexU_S.png differ diff --git a/keyboard/taigi_telex/2.0/taigitelex_.png b/keyboard/taigi_telex/2.0/taigitelex_.png new file mode 100644 index 000000000..895d6c2b9 Binary files /dev/null and b/keyboard/taigi_telex/2.0/taigitelex_.png differ diff --git a/keyboard/taigi_telex/2.0/taigitelex_N.png b/keyboard/taigi_telex/2.0/taigitelex_N.png new file mode 100644 index 000000000..d834f5c28 Binary files /dev/null and b/keyboard/taigi_telex/2.0/taigitelex_N.png differ diff --git a/keyboard/taigi_telex/2.0/taigitelex_S.png b/keyboard/taigi_telex/2.0/taigitelex_S.png new file mode 100644 index 000000000..2483b7ed2 Binary files /dev/null and b/keyboard/taigi_telex/2.0/taigitelex_S.png differ