Keyman Developer 10 не будет соответствовать правилам в скрипте Odia - PullRequest
0 голосов
/ 27 июня 2018

Я делаю пользовательскую клавиатуру для скрипта Oriya / Odia с Keyman Developer 10, но она не будет выполнять контекстные замены, когда весь ввод вводится в скрипте Odia. Например

+ [K_K] > U+0B15
+ [K_T] > U+0B24
U+0B15 + U+0B24 > U+0B15 U+0B4D U+0B24
"a" + "b" > U+0B15 U+0B4D U+0B24
U+0B15 + [K_C] > U+0B15 U+0B4D U+0B24

Когда я проверяю его, я получаю желаемый результат, когда набираю 'ab' или 'kc', но не с помощью 'kt'. Любая помощь, чтобы объяснить, почему строка 3 не будет работать, а строка 4 будет оценена.

Иногда я получаю эту ошибку, когда для Targets установлено значение «any» вместо «windows»

warning 209A: The rule will never be matched because its key code is never fired.

1 Ответ

0 голосов
/ 27 июня 2018

Причина, по которой это не работает, заключается в том, что вы пытаетесь сопоставить значение Unicode вместо нажатия клавиши в строке 3:

U+0B15 + U+0B24 > U+0B15 U+0B4D U+0B24

Вместо U+0B24, который является символом Unicode, вам нужно сопоставить нажатие клавиши , например:

+ [K_K] > U+0B15
+ [K_T] > U+0B24
U+0B15 + [K_T] > U+0B15 U+0B4D U+0B24

Поскольку это третье правило имеет более длинный контекст (U+0B15), оно имеет приоритет над вторым правилом .

Альтернативным способом решения этой проблемы является использование группы постобработки . В этой модели выходные данные из первой группы вводятся в контекст второй группы. Обратите внимание, что вторая группа не включает предложение using keys.

group(main) using keys

+ [K_K] > U+0B15
+ [K_T] > U+0B24
match > use(post)

group(post)

U+0B15 U+0B24 > U+0B15 U+0B4D U+0B24
...