我在修改宫保拼音方案,具体修改目标有两点:
- 用回车充当宫保拼音方案中的
A;空格不用于输入,仅像一般输入法一样用来选词
- 当仅键入回车(仅有
A)时,输出回车;该回车可以直接输出到输入法外,或像一般输入法一样用来键入原始按键序列等
宫保拼音对空格的原始实现,是在 chord_composer 中将单个 A 输入置换为空格,相当直接:
default_layout_config:
alphabet: 'swxdecfrvgtbjum kiloaqzhynp'
algebra:
- 'xlit|swxdecfrvgtbjum kiloaqzhynp|SCZHLFGDBKTPIUVANREOXXXXXXX|'
- 'xform/^A$/ /'
- 'xform/X+//'
我在文档中暂时没有找到关于利用回车进行输入的说明。在经过一番尝试后,我作了如下修改:
default_layout_config:
alphabet: 'swxdecfrvgtbjum{Return}kiloaqzhynp'
algebra:
- 'xform/\{Return\}/A/'
- 'xlit|swxdecfrvgtbjumkiloaqzhynp|SCZHLFGDBKTPIUVNREOXXXXXXX|'
- 'xform/X+//'
- 'xform/^A$/X/' # 将单个A输入再次置换为X,则:如果经过后续处理后有X,说明输入是单个A(单个回车)
validate_syllable:
...
- "erase/^([A-WYZa-z+]+)$/" # 删除不合法音节,但保留X
经过这一修改,我已经实现令回车参与并击输入,例如“回车+k”会被解释为宫保拼音的“A+N”,从而得到拼音“an”。同时,如果在并击时只键入回车,输入法会将其解释为单个大写字母X,并与候选项(如有)一起上屏。
接着,我又作了下面的修改:
key_binder:
import_preset: default
bindings:
- { when: always, accept: X, send: Return }
此时,按照 use_return_to_commit_raw_input 的设置,如果先输入一些音节,再单独键入回车,之前的原始输入序列会被上屏(但如果之前的输入序列中的首个按键是回车,上屏的会是带'分隔符的拼音序列,我不太理解为什么会这样)。但是,如果直接键入回车,将不会上屏任何字符。我感觉我对 key_binder 的理解似乎有误,key_binder 是不能用来输出回车、tab等特殊按键的?
有什么办法在将回车作为按键输入的情况下,仍然像一般输入法一样,能够直接输出回车吗?
我在修改宫保拼音方案,具体修改目标有两点:
A;空格不用于输入,仅像一般输入法一样用来选词A)时,输出回车;该回车可以直接输出到输入法外,或像一般输入法一样用来键入原始按键序列等宫保拼音对空格的原始实现,是在
chord_composer中将单个A输入置换为空格,相当直接:我在文档中暂时没有找到关于利用回车进行输入的说明。在经过一番尝试后,我作了如下修改:
经过这一修改,我已经实现令回车参与并击输入,例如“回车+k”会被解释为宫保拼音的“A+N”,从而得到拼音“an”。同时,如果在并击时只键入回车,输入法会将其解释为单个大写字母X,并与候选项(如有)一起上屏。
接着,我又作了下面的修改:
此时,按照
use_return_to_commit_raw_input的设置,如果先输入一些音节,再单独键入回车,之前的原始输入序列会被上屏(但如果之前的输入序列中的首个按键是回车,上屏的会是带'分隔符的拼音序列,我不太理解为什么会这样)。但是,如果直接键入回车,将不会上屏任何字符。我感觉我对key_binder的理解似乎有误,key_binder是不能用来输出回车、tab等特殊按键的?有什么办法在将回车作为按键输入的情况下,仍然像一般输入法一样,能够直接输出回车吗?