我正在使用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.
答案 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