形码输入法平台简介在SCIM的平台上,作为形码输入的IME,大家首先会想到的就是scim-tables。然而scim-tables在自定义词组方面,却十分不便,同时也没有拼音的反查功能。 XingMa就是从以上出发,着眼于提高用户体验的目标开始的。 主要功能及优点快速的输入速度同scim-python的PinYin一样,XingMa使用了SQLite作为码表的数据库,并针对形码的特点进行了查询的优化,去除搜索上不必要的overhead,使得每次按键时得输入法的反应速度都非常快。同时,和一般用户的习惯相同,XingMa用Space键作为提交,在功能拓展的同时,用户的录入速度并不会受到降低。 方便用户的自定义词组scim-tables的情况在scim-tables下,当用户要加入自定义词组时,需要: - 先打完词组,
- 按<Control>+A进入词条添加模式
- 再把词组的编码输进去
然而,用户并不一定能准确地录入词组的编码,同时也太麻烦了。 XingMa的情况- 在正常的中文(实际上是XingMa模式下)输入一个字或词的编码,然后按左边的shift_L键(此时,你可以看到字或词出现在了输入法的框中),同时如果输入框中已经有了两个或两个以上的字,就会显示这个词的编码:
- 再输入一个字或词的编码,如果已经是你要的词了,直接按Space键把你输入的词组提交到编辑的文本中,此时XingMa会自动为你判断是否是词库中没有的新词,如果是新词的话就会为您加入到用户词库中。
- 如果你还没输完,不要按 Space,按Shift_L再重复2即可; 如果你想看看这个词组的编码,那输完后不要马上按Space,而是按左边的Shift_L,你就可以在输入法的框中看到这个词组的编码。方便吧:)
- 当你发现不小心输入了一个错的词组,没事,当下次你看到它的时候用Alt加1~9(其在候选框中的位置)就可以把它从你的自定义词库中去掉。
拼音反查相信用形码的朋友们一定会有这样的经验,哪一天突然有个字想不起来怎么写,或是想不起来怎么拆。此时如果输入法能让你用拼音输入这个字,同时又把编码提出来就爽了。 因此XingMa加入了这个功能来方便用户的学习和使用。 只要在"中文模式下"按 Shift_R 键就可以在形码和单字拼音模式间切换。 形码模式,显示绿色的球:
拼音模式,显示粉红色的问号:
如果你只是想用拼音输入你忘了的字,那么输完拼音后直接<Space>即可马上把字提交到编辑的文本中。如果你想知道这个字的编码,那就按<左Shift>键,此时你可以看到这个字被放到了输入法的框中,同时在输入法中也可看到这个字的编码,编码从最短的简码开始,一列排开. 使用说明- Space键: 把字词提交到编辑的文本中
- Shift_L : 在还没用输入法输入时为切换中英文模式; 在输入中为把第一个候选词提交到预编辑的文本中为。
- Shift_R : 在中文模式(非英文模式)下,切换形码/拼音模式;假如挂载的具体输入法不支持拼音反查,则相当于Shift_L。
- Arrow Left 和 Arrow Right: 在预编辑文本中挨个字移动光标。
- Backspace : 去掉一个输入的码键或去掉预编辑文本中光标前的一个字。
- Delete : 删除预编辑文本中光标后的一个字;
- Control + Arrow Left : 把光标移到预编辑文本中当前词的词首;
- Control + Arrow Right : 把光标移到预编辑文本中当前词的词末;
- Control + Backspace : 预编辑文本中,从光标位置开始删除到当前词的词首;
- Control + Delete : 预编辑文本中,从光标位置开始删除到当前词的词末;
- Arrow Down : 下一个候选词;
- Arrow Up : 上一个候选词;
- Return : 当没有向预编辑文本中提交字词时,把键入的字母以英文提交到应用程序的编辑文本中; 否则,就相当于重置输入法(比如你输错了词时);
- Esc : 重置输入法;
- Num 1 ~ Num 9 : 从候选字词中选择相应的,并提交到应用程序的编辑文本中(和别的输入法相当);
- Control + ( Num 1 ~ Num 9 ): 从候选字词中选择相应的,但不提交到应用程序,而是提交到预编辑文本中 (准备加入自定义词组或拼音反查时)
- Alt + ( Num1 ~ Num 9) : 把候选字词中相应的位置的自定义词组从用户词库中去掉,(用户自定义的词组是紫色的)。
- 减号 / 加号 : 如果不充当输入键时,对应于Page Up / Page Down
定制码表用户可以在scim-tables已有的码表中加入一些额外的参数,就可以用它生成XingMa用的数据库文件了。 码表的格式- 必须为UTF-8编码的txt文本,或该txt文本压缩的bz2文件(发布用的)。
- 注释为 ### 开头的行,这和scim-tables的格式相同。所有注释行和空白行都会被忽略。
- 输入法的属性设置行格式形如: ATTR = VAL, 其中ATTR为英文的属性名,VAL为其值,UTF-8字符(当然包括数字)。ATTR和VAL不区分大小写。
- 有效的属性如下:
| 'name' | 输入法的英文名称 | | 'name.zh_cn' | 输入法zh_CN下的名称 | | 'name.zh_hk' | 輸入法zh_HK下的名称 | | 'name.zh_tw' | 輸入法zh_TW下的名称 | | 'author' | 码表的作者 | | 'uuid' | 输入法的uuid值 | | 'serial_number' | 码表的编号 | | 'icon' | 输入法图标的路径 | | 'credit' | 码表的协议,如GPL | | 'languages' | 支持的语言 | | 'valid_input_chars' | 有效的按键,如'abcdefghijklmnopqrstuvwxyz'。 | | 'max_key_length' | 输入法的最大键长 | | 'status_prompt' | 和英文状态对应的形码状态的显示。 | | 'def_full_width_punct' | 是否默认为全角标点,默认为'TRUE'。 | | 'def_full_width_letter' | '是否默认为全角字符,默认为FALSE'。 | | 'user_can_define_phrase' | 支持用户自定义词组吗?默认为'TRUE',不过单字输入法应设为'False'。 | | 'pinyin_mode' | 支持拼音反查吗?默认为'TRUE'。 | | 'rules' | 构词的规则,如'ce2:p11+p12+p21+p22;ce3:p11+p21+p22+p31;ca4:p11+p21+p31+p41' |
ce2 意为词长等于2(ci equals 2),ca4为词长大于等于4的(ci aboves 4), 显然如果4个字以上的词有一个规则,那你必然要有词长为2和3的规则。
- 一般词条行的格式为: aaa\t字词\t词频 \n
- 如果输入法构词码和单字的全码不一致的话需要加入构词码,否则将会用单字的全码构词而出错,如郑码就是这种情况。构词码行的格式为: 字\taa\n
生成数据库文件当你准备好了码表后,你就可以用XingMa目录下的XMCreateDB.py来生成XingMa能使用的数据库文件了,假如我们要用当前目录下的码表 xingma-test.abc.txt来生成: python /usr/share/scim-python/engine/XingMa/XMCreateDB.py -s xingma-test.abc.txt 此时XMCreateDB.py就会读取你的码表,并生成文件名为xingma-test.db的数据库文件。 当然,你可以用命令行参数 -h 看看XMCreateDB.py能使用什么参数。 之后你只要把xingma-test.db复制到 /usr/share/scim-python/engine/XingMa/tables 下,重启scim(可能需要你退出X,关闭gdm/kdm/xdm,清空 /tmp/,重命名或删除~/.scim,再启动X)就可以看到你添加的输入法了。 如何反馈意见?- 在scim-python的讨论组发信讨论。
- 在issue列表里创建新的issue。
|
很不错的输入法,可惜我不用linux