Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

系统字体配置、中文显示和输入法问题
回复
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#1

帖子 Ping-Wu » 2019-12-30 2:24

:em11
ibus-rime.jpg
上次由 Ping-Wu 在 2020-01-01 1:25,总共编辑 2 次。
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#2

帖子 yq-ysy » 2019-12-31 9:43

半年前,有网友做了这个,可惜只支持1-5,没有0-9……
https://github.com/omichaelo/rime_numpad_stroke
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#3

帖子 yq-ysy » 2020-01-02 18:57

上面网页里的两个链接还是很有用的,研究了一下Rime的《用户资料夹位置官方说明书》"輸入法引擎與功能組件"部分:
( Rime的文档相当详细,如果 ibus-pinyin 的文档数量有Rime的三分之一就好了……)
https://github.com/rime/home/wiki/RimeW ... 4%E4%BB%B6
然后在 https://rime.im/code/ 找到 La rime - the core library - https://github.com/rime/librime 翻查了许久,终于发现:
拼寫處理器,接受字符按鍵,編輯輸入碼——是这个程序:
https://github.com/rime/librime/blob/ma ... speller.cc
選字處理器,處理數字選字鍵、上、下候選定位、換頁鍵——是这个程序:
https://github.com/rime/librime/blob/ma ... elector.cc

接下来,就是要找出哪些代码是表示“数字小键盘”的,加入到 speller.cc 这个程序里,实现数字作为代码输入。
然后,在selector.cc 这个程序里,剔除数字选字的功能,改为用Num Lock键控制模式切换,
小键盘的灯灭时为选字状态,即可用小键盘的Home键等来选字(反正我的XX输入法几乎无重码,不用翻页)。
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#4

帖子 yq-ysy » 2020-01-03 22:06

yq-ysy 写了: 2020-01-02 18:57 拼寫處理器,接受字符按鍵,編輯輸入碼——是这个程序:
https://github.com/rime/librime/blob/ma ... speller.cc
是不是修改这一句,加上0~9和用于分隔词组的小数点“.”就行了?

代码: 全选

static const char kRimeAlphabet[] = "zyxwvutsrqponmlkjihgfedcba";
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#5

帖子 yq-ysy » 2020-01-04 22:07

yq-ysy 写了: 2020-01-03 22:06
yq-ysy 写了: 2020-01-02 18:57 拼寫處理器,接受字符按鍵,編輯輸入碼——是这个程序:
https://github.com/rime/librime/blob/ma ... speller.cc
是不是修改这一句,加上0~9和用于分隔词组的小数点“.”就行了?

代码: 全选

static const char kRimeAlphabet[] = "zyxwvutsrqponmlkjihgfedcba";
把这个问题,在github发Issues向开发者问询,得到的回答,再次让人失望。
算了。算了。
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#6

帖子 yq-ysy » 2020-01-09 22:01

调试了两天,终于能用字母大键盘的数字键打出我的XX输入法了。Rime的文档相当庞大、复杂,细节很多,错一点点都会造成各种不成功。
不可否认,Rime的开发者技术上很强,但是,在编写文档,如何指引初学者一步一步顺利掌握必要的技术,这方面的很多步骤和细节的叙述方式有待改进。
首先,看见那么长的一篇文档,没有事先列出能让读者一目了然的步骤(目录),就已经吓跑一半的人了。(原文档很多细节都有提到,但放置的顺序和位置不佳。)
然后,各个步骤,初学者有很大可能出错的地方,也应该按步骤详细说明……任何一个小细节被遗漏,所造成的错误后果,都会让初学者灰心丧气,放弃。
当然,如何才能写好教程,这也是个很费体力和脑力的活,有好手艺的师傅不一定是会教徒弟的好师父,世事两难全啊!

我只是简单的想实现字母大键盘的数字输入,然后根据码表输出基本的字词,都花了那么长的时间,感觉比十几年前摆弄自定义的FVWM窗口管理器还难,这过程遇到好几个难处:
一是先看文档,然后安装Rime,依葫芦画瓢写配置文件,复制到相关目录,然后摸索如何试验并调试的方法(这个网上没有教程)。第一步先实现了如何成功调用我的XX输入法。但还不能用数字打字。
rime-dsbs-0.jpg
二是在配置文件里设定使用012345789作为输入代码,然后schema.yaml配置文件名的前缀、需要和配置语句的名称相对应,且不能用大写字母。试验了许多次,才总结出来规律。这一步实现了在浮动栏里显示出输入的数字,但是没能显示出码表字典里相对应的字词。

三是配置文件添加dict.yaml字典的地方,一开始我把它放在了一个错误的段落里,这个错误的段落名称和正确的段落名称只差别末尾的一个字母s!真是晕……白白浪费了很多时间反复测试查找原因。还有就是dict.yaml字典文件名的前缀,需要和配置语句的名称相对应,且不能用大写字母。dict.yaml字典文件里指定每一列属性的语句,前缀 - 后面漏了少打一个空格,部署时总是报错,又一次白白浪费了很多时间,又反复测试了许久,最后才发现问题所在方得解决。
rime-dsbs-1.jpg
现在虽然可以用映射转换键盘按键的方法来实现使用小键盘数字键输入,但我还想找找有没有办法直接使用 KP_1 这样的代码实现小键盘直接输入?
后面等着要解决的问题还有很多,例如:定义选字的按键、制定候选字排序的规则、如何支持模糊输入、显示更多的提示信息、如何打标点符号等等……
后续待解决的问题,也不可能都写信去问开发者,他也没时间回答,基本上都只能靠自己慢慢摸索了。
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#7

帖子 yq-ysy » 2020-01-10 18:02

今天已经解决了数字小键盘的数字编码输入,用小键盘的回车键可以把默认的字词上屏(这是我用Ibus-table无法解决的难题,Rime解决了)。
还实现了用小键盘的减号作为BackSpace退格删除键,方便用修改错误的输入码,以及大键盘的标点符号可以输出中文标点符号,不影响且英文字母的输入。
但是如何选择候选字、如何输入逗号句号、如何输入纯数字、如何模糊查询匹配,这些问题还没解决。
已经写email问弓辰了……
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#8

帖子 yq-ysy » 2020-01-10 21:24

yq-ysy 写了: 2020-01-10 18:02 今天已经解决了数字小键盘的数字编码输入,用小键盘的回车键可以把默认的字词上屏(这是我用Ibus-table无法解决的难题,Rime解决了)。
还实现了用小键盘的减号作为BackSpace退格删除键,方便用修改错误的输入码,以及大键盘的标点符号可以输出中文标点符号,不影响且英文字母的输入。
但是如何选择候选字、如何输入逗号句号、如何输入纯数字、如何模糊查询匹配,这些问题还没解决。
已经写email问弓辰了……
得到的回答简单、快速、明了。
在 2020-01-10 18:27:47,"弓辰" <chen.sst@gmail.com> 写道:

不支持數字鍵盤。

一些功能是基於對字符、字符串的處理。數字鍵盤的按鍵沒有不同於主鍵盤數字的字符,因此無法區分。
YQ-YSY <yq-ysy@163.com> 於 2020年1月10日 週五 下午5:56寫道:

我使用您的Rime来配置我的单手笔顺输入法,已经能打出汉字和词汇了,现在正在做进一步的优化,遇到一些问题不知如何解决。
附件是我的这个输入法的配置文件,以及用于测试的只有几行的字库词库码表,我已经屏蔽了错误的语句,可以正常运行。
配置文件里标注有(——————————————不知道如何写)的部分就是我的问题所在。
有劳您百忙之中,抽空看看,解答一下,我应该如何解决这些问题?

(1)我这个输入法是使用数字小键盘输入的,现在已经成功实现,小键盘打数字根据码表输出汉字。
但如果想输入纯数字时,我希望实现的是,以小键盘的乘号(星号)开头,后面跟着的数字就直接输出数字,不用转换为汉字。
例如:小键盘输入 1234 是汉字“木”;小键盘输入*1234 则是输出数字 1234。这样数字编码就不会影响打数字了。
现在我的(错误、无效)写法是:
preedit_format:
- "xform/^[KP_Multiply](.*)$/[$1]/"

(2)我还想实现编码模糊查询匹配,例如某人不知道“木”字的笔顺数字编码,
他可以使用小键盘的乘号(星号)作为模糊查询的代码,即输入 1*4 可以列出以 1 开头,以 4 结尾的所有候选汉字。
词组也是,记不全“汉武帝”这三个字的六全码 44.11.61 或笔顺码 441.11.414,他只记得第一个和其中两个编码:
可以输入4*.*4.6*,或者4*.*.*5就可以在候选字列表中找到“汉武帝”这个词组,所记得的编码越多,查询越准确。
现在我的(错误、无效)写法是:
algebra: # 拼写运算规则
- 'abbrev/^([0-9])(.*)+$/$1/'

(3)我已经在 key_binder 的 bindings 里使用 {accept: KP_1, send: 1, when: always} 这样的句子,实现里数字编码的输入,
但是候选字,默认也是用数字来选择的,这就有冲突了。
由于我希望用数字输入汉字时,不影响大键盘英文的输入,也不希望用 F1~F12 会影响其它软件的使用,大键盘的标点符号也已经设置为中文用了,
总之,为了方便用户选择候选字,我希望依然使用小键盘来解决这个问题,按小键盘的 + 加号跟着数字键,就能选择相应的候选字。
现在我的(错误、无效)写法是:
{accept: KP_Add+KP_1, send: 1, when: has_menu}

(4)汉字输入时,最常用的标点符号是逗号和句号,所以我希望:
使用小键盘的 /“除号”映射为中文“逗号”,可以用在数字代码后面,输出逗号的同时,把前面的汉字也一起输出。
小键盘的 .“小数点”映射为中文“句号”。由于词组也是用小数点来分割,所以只能是它单独输入时(开头),就转换输出为句号。
现在我的(错误、无效)写法是:
punctuator:
half_shape: &symtable
KP_Divide : , # 小键盘的“除号”映射为中文“逗号”。
KP_Decimal : 。 # 小键盘的“小数点”映射为中文“句号”。
full_shape: *symtable

麻烦您了!谢谢!
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#9

帖子 Ping-Wu » 2020-01-11 0:59

yq-ysy 写了: 2020-01-10 21:24
在 2020-01-10 18:27:47,"弓辰" <chen.sst@gmail.com> 写道:

不支持數字鍵盤。

一些功能是基於對字符、字符串的處理。數字鍵盤的按鍵沒有不同於主鍵盤數字的字符,因此無法區分。
新一代的电脑,尤其是笔记本电脑,都没有单独的數字鍵盤*,因此基本上不会有任何影响。有单独數字鍵盤的硬体,都会有一个 "Num Lock“ 键,应该可以另外加码,让數字鍵盤的按鍵不同於主鍵盤數字的字符。

* 对于这些现代的小儿美电脑键盘,其实可以遵照类似 vi/vim 的做法,当这个特别的中文输入法启动后,就把 u,i,o,p,h,j,k,b,n,m 等10键分别转成 0~9 键。也算单手笔顺方式但不需要单独數字鍵盤。

我们也非常感谢 lotem 的回函。支持我们这个论坛任何一位会员,就是支持整个论坛,有机会请代为致谢!最少我个人也会全力支持 ibus-rime。
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#10

帖子 yq-ysy » 2020-01-11 10:18

Ping-Wu 写了: 2020-01-11 0:59
yq-ysy 写了: 2020-01-10 21:24
在 2020-01-10 18:27:47,"弓辰" <chen.sst@gmail.com> 写道:

不支持數字鍵盤。
一些功能是基於對字符、字符串的處理。數字鍵盤的按鍵沒有不同於主鍵盤數字的字符,因此無法區分。
(3)
由于我希望用数字输入汉字时,不影响大键盘英文的输入,也不希望用 F1~F12 会影响其它软件的使用,大键盘的标点符号也已经设置为中文用了,
总之,为了方便用户选择候选字,我希望依然使用小键盘来解决这个问题,按小键盘的 + 加号跟着数字键,就能选择相应的候选字。
新一代的电脑,尤其是笔记本电脑,都没有单独的數字鍵盤*,因此基本上不会有任何影响。有单独數字鍵盤的硬体,都会有一个 "Num Lock“ 键,应该可以另外加码,让數字鍵盤的按鍵不同於主鍵盤數字的字符。

* 对于这些现代的小儿美电脑键盘,其实可以遵照类似 vi/vim 的做法,当这个特别的中文输入法启动后,就把 u,i,o,p,h,j,k,b,n,m 等10键分别转成 0~9 键。也算单手笔顺方式但不需要单独數字鍵盤。

我们也非常感谢 lotem 的回函。支持我们这个论坛任何一位会员,就是支持整个论坛,有机会请代为致谢!最少我个人也会全力支持 ibus-rime。
你这个字母替换的方法两年半以前就已经有好几个人向我建议过了,我也已经解释过很多次了……
我不想采用字母替换、字母选字的方法,原因有三:
(1)中英同步:数字小键盘输入汉字,另一边字母大键盘依然可以输入英文(不需要按shift键切换),多方便啊!
(2)笔顺拼音同步:数字小键盘输入汉字,另一边字母大键盘依然可以输入拼音(不需要按Ctrl+shift键切换),多快捷啊!
(3)残疾人、平板电脑、特殊环境使用:

只有一只手的残疾人、甚至连一支手指都难以动弹的瘫痪病人,只用小键盘就能打字,需要移动的范围很小,多省力啊!
职场美女用平板电脑想打一篇报告,就要多带一个大键盘?不如带个数字小键盘吧!还有,用手机作为数字小键盘也行,多轻巧啊!
在一些特殊的工作场景下,例如坦克里,管道里,转个身都困难,想打字还要配一个大键盘?头都低不下来,看不见字母啊!用数字小键盘,不用看啊!
我的码表里,还可以用数字打出英文、俄文、希腊文、韩语、日语,不需要记忆很多编码,只需记得一个编码然后翻页就行。

什么ibus\rime\fcitx两年前都问过了,都说不行无法实现,两年后再问,答案依然如是。
(下图是已经被关闭的issues,没关闭的issues还有15个)
这就是为什么我希望能有人写出一个全新的支持数字键盘输入的输入法,可惜没人相信这种输入法的便利性、好处、以及潜在的市场优势。
输入法求助记录.png
算了,既然选择了一条与众不同的路,就已经注定了将会是孤身一人。
选择这条路对不对?要么一鸣惊人,要么死得比别人更早。
走不走?哈哈!
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#11

帖子 Ping-Wu » 2020-01-11 11:02

yq-ysy 写了: 2020-01-11 10:18 (1)中英同步:数字小键盘输入汉字,另一边字母大键盘依然可以输入英文(不需要按shift键切换),多方便啊!
原来你讲的是独立的数字小键盘!搞错了。

我建议用 u,i,o,p,h,j,k,b,n,m 等10键分别当成 0~9 键,只是作为模拟,方便开发。一般人不可能有独立的数字小键盘的。

我使用 vi 时,一直到最近还是用 i,j,k,l 键来移动鼠标。习惯用两手触摸打字,对我来讲,这也可以说是另类的笔顺吧。 :Stop
这就是为什么我希望能有人写出一个全新的支持数字键盘输入的输入法,

Unicode 键盘(一般键盘则使用 ctrl + shift + u)也可以打出万国字,不过需要16个键。 :Haha
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#12

帖子 yq-ysy » 2020-01-11 18:45

yq-ysy 写了: 2020-01-10 18:02 但是如何选择候选字、如何输入逗号句号、如何输入纯数字、如何模糊查询匹配,这些问题还没解决。
哈哈,今天解决了如何输入纯数字的问题——按拼音的做法,空格是上汉字,回车是上字母。所以我的数字小键盘回车键映射为空格,小键盘的除号键映射为回车,这就行了,简单!
输入逗号句号的问题,我原本的码表字典也可以解决。只是我不会写程序,所以做不出快捷效果:“小键盘的除号键单独首先输入时,变换为逗号,小键盘的小数点键单独首先输入时,变换为句号。”可惜了。
选择候选字的问题,可以使用小键盘的“+”号键逐个向下选择,因为笔顺码的重码极少,常用字基本不用选,所以也够用了。
字频默认是升序,数值越大越优先,和我的词库码表字频规则刚好相反,找不到可以反向设置的地方,也没关系,我可以重排词库码表。
模糊查询匹配的问题,暂时无法实现,因为按Rime开发者的说法,只能处理字母按键,不能处理小键盘按键。这最可惜,因为模糊查询可以大大简化词组的输入。(之前的ibus-table试验版模糊查询匹配挺好的,还是那句话,世事两难全……)

已尽力。
头像
yq-ysy
论坛版主
帖子: 4467
注册时间: 2008-07-19 12:44
来自: 广西(桂)南宁(邕)

Re: Ubuntu 19.10/20.04 + Ibus-Rime + yq-ysy 词库

#13

帖子 yq-ysy » 2020-01-12 22:19

又传捷报!哈哈,逗号和句号的问题,不用改码表,而是移花接木、曲线救国成功!
现在可以用数字小键盘直接输入逗号和句号,也可以跟在数字编码后面,打出字的同时跟着逗号或句号。
+号改为映射回车键。用来直接输入输出纯数字。
候选字的选择,可以按数字小键盘的 NumLock(关闭数字小键盘的灯),即可使用数字小键盘作为方向键和翻页键,因为笔顺重码少,这样也够用了。

OK,现在功能基本齐全了,差一个“模糊匹配”功能了,不是程序员做不了。
接下来,整理字库词库,生成 Rime 专用的码表。
回复