-
Notifications
You must be signed in to change notification settings - Fork 20
Description
When navigating 2D structures with AT, it is very common to name the part of the expression one has navigated to. For example, if you have a fraction, then when you "zoom into" the fraction, you will often hear "in numerator" and/or "end numerator" when leaving it. Same for the denominator. For "msup", "base" and "superscript" (or "exponent") might be used. If an intent is given that is not in core, there is no way for AT to use a concept-specific name when navigating.
As an example of how one could handle this, one could add something like ":navname-xxx" to the arguments. As an example
<math>
<mrow intent="fraction-like($x, _over_, $y)">
<mo>\</mo>
<mtable>
<mtr><mtd><mi arg='x' intent=':navname-num'>a</mi></mtd></mtr>
<mtr><mtd><mi arg='y' intent=':navname-denom'>b</mi></mtd></mtr>
</mtable>
<mo>/</mo>
</mrow>
</math>
In this example, the user might hear "fraction-like of a and b end fraction-like" when listening to the expression. If they decide to navigate into it, they might hear "in num, x". Moving right, they might hear "out of num, in denom, y". Without the names, they might hear some generic phrases: "in arg 1" and "out of arg 1, in arg 2 y". That's not ideal, especially when you have nested expressions so that there several "arg 1"s, etc.
We at one point discussed a param=value
for properties but felt that was too complex. This is a "data-xxx"-like ugly version of it where AT would could recognize navname-
as being important if it is doing navigation and get the name to use by choosing the string that follows it. The main benefit to this approach over the param-value approach is that this doesn't introduce new syntax to the grammar for intent.