fcitx5 中的小鹤双拼是否没有考虑零声母三字母韵母的情况?

#1

之前一直用 rime 中的小鹤双拼,刚刚升级到 fcitx5,因为还没迁移配置就试着用了下 app-i18n/fcitx5-chinese-addons 中的,发现无法输入 “昂” 字 。

小鹤双拼的零声母方案为 :

以韵母首字母为零声母,即把韵母的首字母当作声母

  • 单字母韵母,零声母 + 韵母所在键,如: 啊=aa 哦=oo 额=ee

  • 双字母韵母,零声母 + 韵母末字母(表现形式同全拼),如: 爱=ai 恩=en 欧=ou

  • 三字母韵母,零声母 + 韵母所在键,如: 昂=ah

示例:
fcitx5-chinese-addons:

rime:

(流浪猫) #2

我还没用过 fcitx5 呢,问题报到 GitLab 上试试。

(xzhao) #3

我想知道楼主的fcitx5主题是什么……阴影是怎么做的?

(marguerite) #4

这是 kimpanel,KDE 默认的输入法面板 widget

(marguerite) #5

@OwenJia fcitx5-chinese-addons 没有小鹤拼音的吧?你的意思是说那里的拼音应该是小鹤?

#6

@wsxy162 暂时注册不了 gitlab,不过还是谢谢。

@xzhao 是 KDE 的 Kimpanel。

@marguerite 是小鹤双拼,不是小鹤拼音,不好意思没讲清楚。

虽然对 cpp 不熟,但还是看了眼源码,
尝试在 fcitx5-chinese-addons 搜索关键字 xiaohe,得到:

        libime::ShuangpinBuiltinProfile profile;
#define TRANS_SP_PROFILE(PROFILE)                                              \
    case ShuangpinProfileEnum::PROFILE:                                        \
        profile = libime::ShuangpinBuiltinProfile::PROFILE;                    \
        break;
        switch (*config_.shuangpinProfile) {
            TRANS_SP_PROFILE(Ziranma)
            TRANS_SP_PROFILE(MS)
            TRANS_SP_PROFILE(Ziguang)
            TRANS_SP_PROFILE(ABC)
            TRANS_SP_PROFILE(Zhongwenzhixing)
            TRANS_SP_PROFILE(PinyinJiajia)
            TRANS_SP_PROFILE(Xiaohe)
        default:
            profile = libime::ShuangpinBuiltinProfile::Ziranma;
            break;
        }
        ime_->setShuangpinProfile(
            std::make_shared<libime::ShuangpinProfile>(profile));

所以 fcitx5-chinese-addons 中是有小鹤双拼的。

去 libime 中搜索 xiaohe 关键字,找到 src/libime/pinyin/shuangpinprofile.cpp 文件似乎是具体实现,刚刚粗略看了眼,似乎没看到专门对这种情况的处理(无 cpp 项目背景,错了请纠正)。
目前状态就是这样。

(marguerite) #7

你看下这里的 SPMap_C_XIAOHE[]:

我看到了 ang -> h 的 map,但我不知道什么意思

#8

IMHO, 这里应该是码表,把韵母映射到 qwerty 键位上。
主要的问题(猜测)应该是出在零声母的处理上,搜索 zeroS_ 能看得到相关的内容,
不过这几天事情有点多,加上 rime 中的可以正常使用,具体实现就还没有仔细去看……

(marguerite) #9

@OwenJia 我是用全拼的,刚才我试验了一下双拼,输入 “hh” 出来的是“昂”。

#10

那应该就是实现有误了吧?按照小鹤的规则, hh => hang 才对……

(marguerite) #11

感觉是吧,fcitx5/libime 特意设置了一下 Xiaohe 的 ZeroS_ 为 *,然后一堆处理 * 的东西,你去问问老 K 吧,gitlab 报 issue 也行,telegram 也行,感觉这里 @csslayer 不一定能看见了

(hillwood) #12

可能是 oh=ang。

(M) #13
(system) 于关闭 #14

本主题在最后一个回复创建后60分钟后自动锁定。不再允许添加新回复。