diff --git a/docs/ldml/tr35-keyboards.md b/docs/ldml/tr35-keyboards.md index 1220302609f..a50e4d4c2a4 100644 --- a/docs/ldml/tr35-keyboards.md +++ b/docs/ldml/tr35-keyboards.md @@ -1322,7 +1322,7 @@ _Attribute:_ `modifiers` (required for `hardware`) > > For hardware layouts, the use of `@modifiers` as an identifier for a layer is sufficient since it is always unique among the set of `layer` elements in each `form`. > -> This attribute is a list of lists. It is a comma-separated (`,`) list of modifier sets, and each modifier set is a space-separated list of modifier components. +> This attribute value is a list of lists. It is a comma-separated (`,`) list of modifier sets, and each modifier set is a space-separated list of modifier components. > > Each modifier component must match `[A-Za-z0-9]+`. Extra whitespace is ignored. > @@ -1351,7 +1351,7 @@ _Attribute:_ `modifiers` (required for `hardware`) #### Layer Modifier Sets The `@modifiers` attribute value contains one or more Layer Modifier Sets, separated by commas. -For example, in the element ` Strings may contain whitespaces. However, for clarity, it is recommended to escape spacing marks, even in strings. -> This attribute may be escaped with `\u` notation, see [Escaping](#escaping). +> This attribute value may be escaped with `\u` notation, see [Escaping](#escaping). > Variables may refer to other string variables if they have been previously defined, using `${string}` syntax. > [Markers](#markers) may be included with the `\m{…}` notation. @@ -1556,9 +1556,9 @@ _Attribute:_ `id` (required) _Attribute:_ `value` (required) -> The `value` attribute is always a set of strings separated by whitespace, even if there is only a single item in the set, such as `"A"`. +> The `value` attribute value is always a set of strings separated by whitespace, even if there is only a single item in the set, such as `"A"`. > Leading and trailing whitespace is ignored. -> This attribute may be escaped with `\u` notation, see [Escaping](#escaping). +> This attribute value may be escaped with `\u` notation, see [Escaping](#escaping). > Sets may refer to other string variables if they have been previously defined, using `${string}` syntax, or to other previously-defined sets using `$[set]` syntax. > Set references must be separated by whitespace: `$[set1]$[set2]` is an error; instead use `$[set1] $[set2]`. > [Markers](#markers) may be included with the `\m{…}` notation. @@ -1866,7 +1866,7 @@ All of the `transform` elements in a `transformGroup` are tested for a match, in _Attribute:_ `from` (required) -> The `from` attribute consists of an input rule for matching the input context. +> The `from` attribute value consists of an input rule for matching the input context. > > The `transform` rule and output pattern uses a modified, mostly subsetted, regular expression syntax, with EcmaScript syntax (with the `u` Unicode flag) as its baseline reference (see [MDN-REGEX](https://developer.mozilla.org/docs/Web/JavaScript/Guide/Regular_Expressions)). Differences from regex implementations will be noted. @@ -2040,7 +2040,7 @@ The following are additions to standard Regex syntax. _Attribute:_ `to` -> This attribute represents the characters that are output from the transform. +> This attribute value represents the characters that are output from the transform. > > If this attribute is absent, it indicates that the no characters are output, such as with a backspace transform. > @@ -2170,7 +2170,7 @@ _Attribute:_ `before` _Attribute:_ `order` -> This attribute gives the primary order for the elements in the matched string in the `@from` attribute. The value is a simple integer between -128 and +127 inclusive, or a space separated list of such integers. For a single integer, it is applied to all the elements in the matched string. Details of such list type attributes are given after all the attributes are described. If missing, the order value of all the matched characters is 0. We consider the order value for a matched character in the string. +> This attribute value gives the primary order for the elements in the matched string in the `@from` attribute. The value is a simple integer between -128 and +127 inclusive, or a space separated list of such integers. For a single integer, it is applied to all the elements in the matched string. Details of such list type attributes are given after all the attributes are described. If missing, the order value of all the matched characters is 0. We consider the order value for a matched character in the string. > > * If the value is 0 and its tertiary value is 0, then the character is the base of a new run. > * If the value is 0 and its tertiary value is non-zero, then it is a normal character in a run, with ordering semantics as described in the `@tertiary` attribute. @@ -2186,7 +2186,7 @@ _Attribute:_ `order` _Attribute:_ `tertiary` -> This attribute gives the tertiary order value to the characters matched. The value is a simple integer between -128 and +127 inclusive, or a space separated list of such integers. If missing, the value for all the characters matched is 0. We consider the tertiary value for a matched character in the string. +> This attribute value gives the tertiary order value to the characters matched. The value is a simple integer between -128 and +127 inclusive, or a space separated list of such integers. If missing, the value for all the characters matched is 0. We consider the tertiary value for a matched character in the string. > > * If the value is 0 then the character is considered to have a primary order as specified in its order value and is a primary character. > * If the value is non zero, then the order value must be zero otherwise it is an error. The character is considered as a tertiary character for the purposes of ordering. @@ -2200,15 +2200,15 @@ _Attribute:_ `tertiary` _Attribute:_ `tertiaryBase` -> This attribute is a space separated list of `"true"` or `"false"` values corresponding to each character matched. It is illegal for a tertiary character to have a true `tertiaryBase` value. For a primary character it marks that this character may have tertiary characters moved after it. When calculating the secondary weight for a tertiary character, the most recently encountered primary character with a true `tertiaryBase` attribute is used. Primary characters with an `@order` value of 0 automatically are treated as having `tertiaryBase` true regardless of what is specified for them. +> This attribute value is a space separated list of `"true"` or `"false"` values corresponding to each character matched. It is illegal for a tertiary character to have a true `tertiaryBase` value. For a primary character it marks that this character may have tertiary characters moved after it. When calculating the secondary weight for a tertiary character, the most recently encountered primary character with a true `tertiaryBase` attribute value is used. Primary characters with an `@order` value of 0 automatically are treated as having `tertiaryBase` true regardless of what is specified for them. _Attribute:_ `preBase` -> This attribute gives the prebase attribute for each character matched. The value may be `"true"` or `"false"` or a space separated list of such values. If missing the value for all the characters matched is false. It is illegal for a tertiary character to have a true prebase value. +> This attribute value gives the prebase attribute for each character matched. The value may be `"true"` or `"false"` or a space separated list of such values. If missing the value for all the characters matched is false. It is illegal for a tertiary character to have a true prebase value. > > If a primary character has a true prebase value then the character is marked as being typed before the base character of a run, even though it is intended to be stored after it. The primary order gives the intended position in the order after the base character, that the prebase character will end up. Thus `@order` shall not be 0. These characters are part of the run prefix. If such characters are typed then, in order to give the run a base character after which characters can be sorted, an appropriate base character, such as a dotted circle, is inserted into the output run, until a real base character has been typed. A value of `"false"` indicates that the character is not a prebase. -For `@from` attributes with a match string length greater than 1, the sort key information (`@order`, `@tertiary`, `@tertiaryBase`, `@preBase`) may consist of a space-separated list of values, one for each element matched. The last value is repeated to fill out any missing values. Such a list may not contain more values than there are elements in the `@from` attribute: +For `@from` attribute values with a match string length greater than 1, the sort key information (`@order`, `@tertiary`, `@tertiaryBase`, `@preBase`) may consist of a space-separated list of values, one for each element matched. The last value is repeated to fill out any missing values. Such a list may not contain more values than there are elements in the `@from` attribute: ```java if len(@from) < len(@list) then error @@ -2266,7 +2266,7 @@ We want all of these sequences to end up ordered as the first. To do this, we us The first reorder is the default ordering for the _sakot_ which allows for it to be placed anywhere in a sequence, but moves any non-consonants that may immediately follow it, back before it in the sequence. The next two rules give the orders for the top vowel component and tone marks respectively. The next three rules give the _sakot_ and _wa_ characters a primary order that places them before the _o_. Notice particularly the final reorder rule where the _sakot_+_wa_ is split by the tone mark. This rule is necessary in case someone types into the middle of previously normalized text. -`` elements are priority ordered based first on the length of string their `@from` attribute matches and then the sum of the lengths of the strings their `@before` attribute matches. +`` elements are priority ordered based first on the length of string their `@from` attribute value matches and then the sum of the lengths of the strings their `@before` attribute value matches. #### Using `` with `` elements @@ -2276,9 +2276,9 @@ The @from string in a `` element describes a set of strings that it mat If two `` elements have a non empty intersection, then they are split and merged. They are split such that where there were two `` elements, there are, in effect (but not actuality), three elements consisting of: -* `@from`, `@before` that match the intersection of the two rules. The other attributes are merged, as described below. -* `@from`, `@before` that match the set of strings in the first rule not in the intersection with the other attributes from the first rule. -* `@from`, `@before` that match the set of strings in the second rule not in the intersection, with the other attributes from the second rule. +* `@from`, `@before` that match the intersection of the two rules. The other attribute values are merged, as described below. +* `@from`, `@before` that match the set of strings in the first rule not in the intersection with the other attribute values from the first rule. +* `@from`, `@before` that match the set of strings in the second rule not in the intersection, with the other attribute values from the second rule. When merging the other attributes, the second rule is taken to have priority (being an override of the earlier element). Where the second rule does not define the value for a character but the first does, the value is taken from the first rule, otherwise it is taken from the second rule. @@ -2617,7 +2617,7 @@ This is the top level element. _Attribute:_ `conformsTo` (required) -The `conformsTo` attribute here is the same as on the [``](#element-keyboard3) element. +The `conformsTo` attribute value here is the same as on the [``](#element-keyboard3) element. ```xml @@ -2638,15 +2638,15 @@ The `conformsTo` attribute here is the same as on the [``](#element-k _Attribute:_ `author` -This freeform attribute allows for description of the author or authors of this test file. +This freeform attribute value allows for description of the author or authors of this test file. _Attribute:_ `keyboard` (required) -This attribute specifies the keyboard’s file name, such as `fr-t-k0-azerty.xml`. +This attribute value specifies the keyboard’s file name, such as `fr-t-k0-azerty.xml`. _Attribute:_ `name` (required) -This attribute specifies a name for this overall test file. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. +This attribute value specifies a name for this overall test file. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. **Example** @@ -2669,11 +2669,11 @@ This element represents a repertoire test, to validate the available characters _Attribute:_ `name` (required) -This attribute specifies a unique name for this repertoire test. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. +This attribute value specifies a unique name for this repertoire test. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. _Attribute:_ `type` -This attribute is one of the following: +This attribute value is one of the following: | type | Meaning | |-----------|----------------------------------------------------------------------------------------------------------| @@ -2687,7 +2687,7 @@ This attribute is one of the following: _Attribute:_ `chars` (required) -This attribute specifies a list of characters in UnicodeSet format, which is specified in [UTS #35 Part One](tr35.md#Unicode_Sets). +This attribute value specifies a list of characters in UnicodeSet format, which is specified in [UTS #35 Part One](tr35.md#Unicode_Sets). **Example** @@ -2720,7 +2720,7 @@ This element specifies a particular suite of `` elements. _Attribute:_ `name` (required) -This attribute specifies a unique name for this suite of tests. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. +This attribute value specifies a unique name for this suite of tests. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. **Example** @@ -2751,13 +2751,13 @@ This attribute specifies a unique name for this suite of tests. These names coul > Occurrence: Required, Multiple > -This attribute specifies a specific isolated regression test. Multiple test elements do not interact with each other. +This attribute value specifies a specific isolated regression test. Multiple test elements do not interact with each other. The order of child elements is significant, with cumulative effects: they must be processed from first to last. _Attribute:_ `name` (required) -This attribute specifies a unique name for this particular test. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. +This attribute value specifies a unique name for this particular test. These names could be output to the user during test execution, used to summarize success and failure, or used to select or deselect test components. **Example** @@ -2802,7 +2802,7 @@ Specifies the starting context. This text may be escaped with `\u` notation, see This element represents a single keystroke or other gesture event, identified by a particular key element. -Optionally, one of the gesture attributes, either `flick`, `longPress`, or `tapCount` may be specified. If none of the gesture attributes are specified, then a regular keypress is effected on the key. It is an error to specify more than one gesture attribute. +Optionally, one of the gesture attributes, either `flick`, `longPress`, or `tapCount` may be specified. If none of the gesture attribute values are specified, then a regular keypress is effected on the key. It is an error to specify more than one gesture attribute. If a key is not found, or a particular gesture has no definition, the output should be behave as if the user attempted to perform such an action. For example, an unspecified `flick` would result in no output. @@ -2810,19 +2810,19 @@ When a key is found, processing continues with the transform and other elements _Attribute:_ `key` (required) -This attribute specifies a key by means of the key’s `id` attribute. +This attribute value specifies a key by means of the key’s `id` attribute. _Attribute:_ `flick` -This attribute specifies a flick gesture to be performed on the specified key instead of a keypress, such as `e` or `nw se`. This value corresponds to the `directions` attribute of the [``](#element-flicksegment) element. +This attribute value specifies a flick gesture to be performed on the specified key instead of a keypress, such as `e` or `nw se`. This value corresponds to the `directions` attribute value of the [``](#element-flicksegment) element. _Attribute:_ `longPress` -This attribute specifies that a long press gesture should be performed on the specified key instead of a keypress. For example, `longPress="2"` indicates that the second character in a longpress series should be chosen. `longPress="0"` indicates that the `longPressDefault` value, if any, should be chosen. This corresponds to `longPress` and `longPressDefault` on [``](#element-key). +This attribute value specifies that a long press gesture should be performed on the specified key instead of a keypress. For example, `longPress="2"` indicates that the second character in a longpress series should be chosen. `longPress="0"` indicates that the `longPressDefault` value, if any, should be chosen. This corresponds to `longPress` and `longPressDefault` on [``](#element-key). _Attribute:_ `tapCount` -This attribute specifies that a multi-tap gesture should be performed on the specified key instead of a keypress. For example, `tapCount="3"` indicates that the key should be tapped three times in rapid succession. This corresponds to `multiTap` on [``](#element-key). The minimum tapCount is 2. +This attribute value specifies that a multi-tap gesture should be performed on the specified key instead of a keypress. For example, `tapCount="3"` indicates that the key should be tapped three times in rapid succession. This corresponds to `multiTap` on [``](#element-key). The minimum tapCount is 2. **Example** @@ -2851,10 +2851,10 @@ Processing of the specified text continues with the transform and other elements _Attribute:_ `to` (required) -This attribute specifies a string of output text representing a single keystroke or gesture. This string is intended to match the output of a `key`, `flick`, `longPress` or `multiTap` element or attribute. -Tooling should give a hint if this attribute does not match at least one keystroke or gesture. Note that the specified text is not injected directly into the output buffer. +This attribute value specifies a string of output text representing a single keystroke or gesture. This string is intended to match the output of a `key`, `flick`, `longPress` or `multiTap` element or attribute. +Tooling should give a hint if this attribute value does not match at least one keystroke or gesture. Note that the specified text is not injected directly into the output buffer. -This attribute may be escaped with `\u` notation, see [Escaping](#escaping). +This attribute value may be escaped with `\u` notation, see [Escaping](#escaping). **Example** @@ -2897,7 +2897,7 @@ This element represents a check on the current output buffer. _Attribute:_ `result` (required) -This attribute specifies the expected resultant text in a document after processing this event and all prior events, and including any `startContext` text. This text may be escaped with `\u` notation, see [Escaping](#escaping). +This attribute value specifies the expected resultant text in a document after processing this event and all prior events, and including any `startContext` text. This text may be escaped with `\u` notation, see [Escaping](#escaping). **Example**