Closed ghost closed 3 years ago
有。
不顯示拼音比較簡單,就刪除這裏列出的轉寫規則: https://github.com/rime/rime-double-pinyin/blob/69bf85d4dfe8bac139c36abbd68d530b8b6622ea/double_pinyin_flypy.schema.yaml#L90
改成同時顯示按鍵和拼音需要一些技巧。類似做法有: https://github.com/rime/rime-cangjie/blob/d0f6f521ec049166ada29085434126be175f6439/cangjie5.schema.yaml#L68 簡單地說就是在拼寫運算規則裏先複寫輸入碼,然後轉換其中一份,另一份保持原樣。
@lotem 感谢🙏🏻,使用下面的配置,现在能同时显示拼音和按键了:
translator:
dictionary: luna_pinyin
preedit_format:
- 'xform/^([a-z ]*)$/$1\t (\U$1\E)/' # 显示大写按键,不能使用\L替换\U,否则会被下面的正则给改掉
- "xform/([bpmfdtnljqx])n/$1iao/"
- "xform/(\\w)g/$1eng/"
- "xform/(\\w)q/$1iu/"
- "xform/(\\w)w/$1ei/"
- "xform/([dtnlgkhjqxyvuirzcs])r/$1uan/"
- "xform/(\\w)t/$1ve/"
- "xform/(\\w)y/$1un/"
- "xform/([dtnlgkhvuirzcs])o/$1uo/"
- "xform/(\\w)p/$1ie/"
- "xform/([jqx])s/$1iong/"
- "xform/(\\w)s/$1ong/"
- "xform/(\\w)d/$1ai/"
- "xform/(\\w)f/$1en/"
- "xform/(\\w)h/$1ang/"
- "xform/(\\w)j/$1an/"
- "xform/([gkhvuirzcs])k/$1uai/"
- "xform/(\\w)k/$1ing/"
- "xform/([jqxnl])l/$1iang/"
- "xform/(\\w)l/$1uang/"
- "xform/(\\w)z/$1ou/"
- "xform/([gkhvuirzcs])x/$1ua/"
- "xform/(\\w)x/$1ia/"
- "xform/(\\w)c/$1ao/"
- "xform/([dtgkhvuirzcs])v/$1ui/"
- "xform/(\\w)b/$1in/"
- "xform/(\\w)m/$1ian/"
- "xform/([aoe])\\1(\\w)/$1$2/"
- "xform/(^|[ '])v/$1zh/"
- "xform/(^|[ '])i/$1ch/"
- "xform/(^|[ '])u/$1sh/"
- "xform/([jqxy])v/$1u/"
- "xform/([nl])v/$1ü/"
- 'xform/(\([A-Z ]*\))$/\L$1\E/' # 把大写转换成小写
prism: double_pinyin_flypy
如果需要显示大写的按键,把prism: double_pinyin_flypy
的上一行删掉即可。
发现一个小问题,上面的配置文件在输入是合法的双拼的时候能正常工作,但是当输入不是合法的双拼时就不显示按键了。
例如依次按下host
四个键,ho
是合法的双拼,对应拼音huo
,而st
不是合法的双拼,此时整体就 只会显示 huost
。好像在输入不是合法双拼的时候,preedit_format
下面的规则就没有全部执行?
會全部執行。注意這些規則不是對全部輸入碼的轉換,是對當前中文候選所對應的輸入碼區間的變換。非中文輸入的部分原樣顯示。
輸出格式中的\t
表示插入點/光標位置,允許在光標之後添加提示。僅當插入點位於整個輸入串末尾時纔會顯示光標之後的部分。
從直觀角度,最好把格式改成輸入碼在前,拼音標註在光標位置(\t
)後面。
明白了,修改配置如下,实现双拼在前,拼音在后,使用|
分隔。
translator:
dictionary: luna_pinyin
preedit_format:
- 'xform/^(.*)$/\U$1\E\t | $1/'
- "xform/([bpmfdtnljqx])n/$1iao/"
- "xform/(\\w)g/$1eng/"
- "xform/(\\w)q/$1iu/"
- "xform/(\\w)w/$1ei/"
- "xform/([dtnlgkhjqxyvuirzcs])r/$1uan/"
- "xform/(\\w)t/$1ve/"
- "xform/(\\w)y/$1un/"
- "xform/([dtnlgkhvuirzcs])o/$1uo/"
- "xform/(\\w)p/$1ie/"
- "xform/([jqx])s/$1iong/"
- "xform/(\\w)s/$1ong/"
- "xform/(\\w)d/$1ai/"
- "xform/(\\w)f/$1en/"
- "xform/(\\w)h/$1ang/"
- "xform/(\\w)j/$1an/"
- "xform/([gkhvuirzcs])k/$1uai/"
- "xform/(\\w)k/$1ing/"
- "xform/([jqxnl])l/$1iang/"
- "xform/(\\w)l/$1uang/"
- "xform/(\\w)z/$1ou/"
- "xform/([gkhvuirzcs])x/$1ua/"
- "xform/(\\w)x/$1ia/"
- "xform/(\\w)c/$1ao/"
- "xform/([dtgkhvuirzcs])v/$1ui/"
- "xform/(\\w)b/$1in/"
- "xform/(\\w)m/$1ian/"
- "xform/([aoe])\\1(\\w)/$1$2/"
- "xform/(^|[ '])v/$1zh/"
- "xform/(^|[ '])i/$1ch/"
- "xform/(^|[ '])u/$1sh/"
- "xform/([jqxy])v/$1u/"
- "xform/([nl])v/$1ü/"
- 'xform/([^|]*)/\L$1\E/'
prism: double_pinyin_flypy
明白了,修改配置如下,实现双拼在前,拼音在后,使用
|
分隔。
如果這樣改,我反而覺得雙拼輸入碼在後面比較好,和不構成拼音的輸入碼連在一起。
看錯了,代碼裏仍然用了 \t
分隔兩部分。可以。
被困扰很久,终于解决了。
能不能集成在默认配置里,非常有用。
按键显示大写还是有点奇怪,如果直接回车输入的还是小写,有什么办法让显示的按键显示小写吗?👀
我用的是小鹤双拼,在打字的时候,上面会显示拼音,下面显示选项。
例如当我敲出
pbyb
(”拼音“的双拼)时,上面会显示pin yin
,也就是双拼pbyb
对应的拼音。有没有办法让rime同时显示
pbyb
和pin yin
?因为如果不显示pbyb
的话一眼看不出按下了哪些键。