Skip to content

Conversation

@srl295
Copy link
Member

@srl295 srl295 commented Jul 5, 2025

  • add planning, overview, keybag, displays, and layers sections
  • with this, the guide is somewhat complete for a basic non-transform keyboard!

#13836

@keymanapp-test-bot skip

@srl295 srl295 self-assigned this Jul 5, 2025
@github-project-automation github-project-automation bot moved this to Todo in Keyman Jul 5, 2025
- add a few initial sections, mostly blank

#13836
@srl295 srl295 marked this pull request as draft July 5, 2025 22:00
- updates across sections

#13836
@srl295 srl295 changed the title feat: ldml-docs update guide feat: ldml-docs update guide ✍️ Jul 16, 2025
srl295 added 5 commits July 16, 2025 17:12
- updated displays and keybag

#13836
- updated displays, keybag, layouts

#13836
- update keybags and displays

#13836
- layouts to layers (!) and add image

#13836
- finish the layers section, also update keybag and displays

#13836
@srl295 srl295 marked this pull request as ready for review August 1, 2025 01:03
@markcsinclair markcsinclair assigned markcsinclair and unassigned srl295 Aug 6, 2025
Copy link
Contributor

@markcsinclair markcsinclair left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There looks to be some more work to do yet @srl295, especially in the glossary and 'going further' sections. Keep going!


More information about BCP 47 language tag and full details on [how they are used in Keyman Developer](../../current-version/reference/bcp-47).

Now, go on to begin [planning](./planning) your LDML keyboard.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The glossary should be expanded to include as many of the technical terms used in LDML as possible e.g. Keybag, Displays, Layers, shift layer, Variables, Transforms, Markers, Reorders, Elements, base physical types (US, ISO), organisation of keys (QWERTY, AZERTY, QWERTZ), touch-only keyboard, gestures, long press, flick, multitap, LDML, XML, locale, (element) attribute, DTD, CLDR, repertoire, key element, keys element, (key) gap, (key) stretch, keytop, keycap, switch key, layer group, modifier, (keyboard) row, etc.
Some of these terms you could just give a short entry and a link to either an internal or external definition/description (e.g. the key element is described in keybag.md).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that this para makes sense now that the Glossary is the final page in the Guide section. I would remove it or replace it with 'return to index'?

Suggested change
Now, go on to begin [planning](./planning) your LDML keyboard.
You have reached the end of the LDML keyboard authoring guide. Return to the [index](index).


### Form and Function

- Will this be a hardware-only or touch-only keyboard?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to have links from the technical terms to entries in the glossary.

---
title: Variables
---

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No content yet?

---
title: Transforms
---

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No content yet?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not yet

---
title: Reorders
---

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No content yet?

---
title: Markers
---

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No content yet?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still in progress

@markcsinclair markcsinclair assigned srl295 and unassigned markcsinclair Aug 6, 2025
@keymanapp-test-bot
Copy link

User Test Results

Test specification and instructions

User tests are not required

@keymanapp-test-bot keymanapp-test-bot bot added this to the A19S9 milestone Aug 9, 2025
Copy link
Member

@mcdurdin mcdurdin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking good, looking forward to seeing the next bits

Can you wrap .md at 80 chars -- this is what we try to do on other pages on the site.

- keybag: updated per review comments
- layers: upated per review comments
- moved "overview" into the getting started section
- planning: updated per review comments

For: #13836
@srl295
Copy link
Member Author

srl295 commented Aug 28, 2025

@markcsinclair @mcdurdin I think I've now resolved all of the review comments other than:

  • stub pages (no content yet)
  • need more links to the glossary

I think if these look good we could merge this into the epic branch as an improvement, getting us through the first two parts of the guide. (getting started / jumping in)

@darcywong00 darcywong00 modified the milestones: A19S10, A19S11 Aug 29, 2025
@github-actions github-actions bot added the feat label Aug 30, 2025
@mcdurdin mcdurdin assigned mcdurdin and unassigned srl295 Sep 2, 2025
@mcdurdin
Copy link
Member

mcdurdin commented Sep 2, 2025

Have re-embarked on review here, will do this when my brain is fresh.

Copy link
Member

@mcdurdin mcdurdin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some really good work here. I have mostly nits!

## Why customize the display

Normally, the display of a keytop, whether in a touch environment or the
on-screen display of a hardware keyboard, simply matches the characrer output.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
on-screen display of a hardware keyboard, simply matches the characrer output.
on-screen display of a hardware keyboard, simply matches the character output.

So, a key that outputs `a` will have a keytop that looks like `a`.

However, there are some situations where it is desirable to customize the
display of a key. This is where the [display] element is useful. This is an
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
display of a key. This is where the [display] element is useful. This is an
display of a key. This is where the [`display`] element is useful. This is an


## displayOptions

The `displayOptions` has a single configurable option at present, the
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The `displayOptions` has a single configurable option at present, the
The [`displayOptions`] element has a single configurable option at present, the

baseCharacter.

In Lao for example, it's sometimes preferred to use `x` as the base for showing
combining marks, rather than the dotted circle ◌.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
combining marks, rather than the dotted circle .
combining marks, rather than the dotted circle `` (U+25CC).

needed to successfully author an LDML Keyboard used with Keyman.

* [LDML Language Overview](overview)
We recommend to start with [Planning](./planning) and read these pags in order,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
We recommend to start with [Planning](./planning) and read these pags in order,
We recommend that you start with [Planning](./planning) and read these pages in order,

<?xml version="1.0" encoding="UTF-8"?>
```

### Outer `keyboard3` Element
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### Outer `keyboard3` Element
### Root `keyboard3` Element

- What is the base physical type for hardware, such as US or ISO?
- Does the keyboard follow an existing organization of keys, such as QWERTY,
AZERTY, QWERTZ etc?
- Which width(s) will you start with for the touch layout?
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- Which width(s) will you start with for the touch layout?
- Which device screen width(s) will you start with for the touch layout?

- Which characters are the most important to access? That is, those that would
be right on the keyboard or on a shift layer, versus others that might be
reached via a gesture or multiple key combination.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could reference the DISCUS principles here? /developer/keyboards/standard

Comment on lines -18 to +19
`id`
: The …
`id` : The …
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My guess is that this unwrapping was not intentional, throughout, for definition lists?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unintentional, probably mis-parsing of markdown

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The vscode wrapping plugin I use (rewrap) doesn't recognize DLs and so munges my DLs like this. One slightly clumsy workaround is a blank line between dt and dd.

Comment on lines 18 to +19

`conformsTo` - Required
: This indicates the minimum supported version number of CLDR that this file conforms to. In other words, this file may not use features from CLDR versions after this number. This must be a whole number such as "46". See [CLDR Releases] for a current list of CLDR versions. Authors should use the _minimum_ possible number here so that the keyboard is the most widely usable.

`draft` - Optional
: For keyboards which are contributed to CLDR itself, this indicates the approval level of the [CLDR keyboard process]. For keyboard authors, it is best to omit this attribute or set it to `contributed`. Other possible values include `approved`, `unconfirmed`, and `provisional`.

`locale` - Required
: This attribute specifies the [BCP 47] tag used for the primary locale for this keyboard. The [`locales`](./locales) element can be used to specify additional locales, however, at least one locale must be specified in the `locale` attribute.
`conformsTo` - Required : This indicates the minimum supported version number
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same - DL is unwrapped wrongly

@darcywong00 darcywong00 modified the milestones: A19S11, A19S12 Sep 13, 2025
@darcywong00 darcywong00 modified the milestones: A19S12, A19S13 Sep 27, 2025
@darcywong00 darcywong00 modified the milestones: A19S13, A19S14 Oct 11, 2025
@darcywong00 darcywong00 modified the milestones: A19S14, A19S15 Oct 24, 2025
@keyman-server keyman-server modified the milestones: A19S15, A19S16 Nov 8, 2025
@keyman-server keyman-server modified the milestones: A19S16, A19S17 Nov 22, 2025
@keyman-server keyman-server modified the milestones: A19S17, A19S18 Dec 6, 2025
@keyman-server keyman-server modified the milestones: A19S18, A19S19 Dec 21, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

6 participants