Keyman开发人员10无法匹配Odia脚本中的规则

时间:2018-06-27 10:21:38

标签: unicode keyboard ime keyman keyman-developer

我正在使用Keyman开发人员10为Oriya / Odia脚本制作自定义键盘,但是当所有输入都在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 :(得分:0)

此方法不起作用的原因是您尝试匹配Unicode值而不是第3行的击键。

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

您需要match on the keystroke,而不是U+0B24(它是Unicode字符),例如:

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

由于该第三条规则具有较长的上下文(U+0B15),因此需要precedence over the second rule

解决此问题的另一种方法是使用post-processing group。在此模型中,来自第一组的输出被馈送到第二组的上下文中。请注意,第二组不包含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