小小输入法入门指南

yong lin 2.5.0

小小输入法入门指南

http://yong.dgod.net/

◆android版本使用说明

1 作者仅在有限环境下测试
2 支持在触摸屏和全键盘输入
3 发布的输入法只有程序部分,数据部分仅包括永码,自定义数据需要用户自己放到sd卡上,用户只要把pc版小小输入法的安装目录放到sd卡上,注意名字要是yong。同时用户数据目录.yong需要在yong目录下,如果是linux用户或者.yong目录不在安装目录下的用户需要手工补全。
4 由于小小输入法程序基本上和pc版是一样的,大家注意自己控制输入法占用的内存,尤其是android版运行在java虚拟机中。
5 按键模拟仅有限支持(不支持HOME,END等)。
6 长按中英文切换键可以唤出输入法菜单,可以设置全/半角,中英文标点,简繁转换,输入方案等。
7 全键盘手机,SHIFT_SPACE切换中英文,ALT_SPACE调用菜单。
8 编码中包含符号或数字编码的,可以按shift键之后在软键盘中找到符号编码,按下后会自动回到qwerty键盘,如果有连续多个符号,可能按123的符号键盘更合适。
9 长按qwerty这一行,可以输入数字;长按szxc可以移动光标。
10 命令直通车访问网址功能正常,所有其他和操作系统有关的部分无效需要重新定义,格式如下:

$GO(qq,com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity)
注:粉红色部分,只能反编译apk包,然后在AndroidManifest.xml里慢慢找。

其中默认了几个快捷方式
$GO(app,app) $GO(qq,qq) $GO(ime,ime) 


手机输入法皮肤说明

自带皮肤提取方法:用压缩软件打开输入法文件,assets/www目录下的文件就是软键盘皮肤了。
自定义皮肤位置:/sdcard/yong/.yong/android

只想改一下键盘布局的话,找到keyboard.html中Keyboards对象,看一下,就应该明白怎么改了。
只想改一下字体大小的话,找到Render对象中的draw方法,找到
    changeScale = window.innerWidth / 30
    changeScale = window.innerWidth / 72
这样的语句,修改一下30和72这两个数字就可以了。
以下内容,不是精通html,js,css的就不用看了。

皮肤使用html技术,可以在电脑上编辑,然后用
火狐浏览器预览。使用CTRL_SHIFT_M快捷键可以预览不同分辨率下的表现。

以下内容,不是精通html,js,css的就不用看了。

精通这方面技术的朋友可以自由实现你能实现的效果,不过你还是需要了解和输入法的接口。

与输入的接口定义如下

App对象
App.init
通知输入法,软键盘初始化完成
App.select(index)
通知输入法,用户选择了第index这个候选项,从0到9
App.key(key)
通知输入法,用户按了一个按键
App.text(text)
通知输入法,向应用程序输出字符串text
App.page
通知输入法,向下翻页

Render对象
Render.showCandidates(candidates,select,page)
显示候选项
candidates 候选数组
select 被选中的项,从0开始
page 是否显示翻页键
Render.setState(state)
设置软键盘上显示中英状态,0:中,1:英

英文输入法

小小输入法中的英语很初级,您可以当作是用来进行单词补全用的,但有些东西还是需要说一下。

空格是编码的一部分,上屏键是回车,也就是说码表中可以加短语,当然现在一个都没有。
如果你打的单词在码表中没有,就应该按下临时中英切换进英文模式继续打。
如果你打的单词在句首,首字母需要大写怎么办?嗯,还有一个上屏键,SHIFT_ENTER就是用来干这事的。

拼音输入法

小小自带了一个拼音输入法,提供了类似拼音的一种输入模式,任何其他的编码都可以在表头加一项pinyin=1以表明自己需要一个类拼音的模式。

pinyin=?,这里?可以设置为1
还有一个选项
split,设为'表示是全拼输入法,设为2-的数字,表示是定长单字的码表输入法,其他的请设成1

现在这个拼音模式分词
的时候是 使用改进的最长匹配方法来的,如果这个匹配不正确,那么可以按键缩短匹配长度,然后合适的时候选字词就行了。
编码中自动出现的空格就是输入法查找到的最长匹配所在的位置。

关于左右键的使用,就是调整光标的位置,从编码的开始到光标所在位置,就是候选字词的最大编码区间。

由于初始语料库不是很大,因此有时候会出现误判。

间接辅助码,就是把辅助码作为辅助码表挂接上去,就会默认启用了。输入编码后按tab键自动进入间接辅助码模式,接下去按的那个键就认为是当前的所有候选项的第一个汉字的辅助码了,然后会作一次筛选,减少候选的数量。


临时笔画,用u键引导


拼音输入法默认设置
v键进入临时英文模式,临时英文模式的各个功能都可以用。如 :
v2009.4.4 可以输出: 二〇〇九年四月四日
v3b5s6 可以输出:
叁佰伍拾陆
简单的
计算器功能,如输入3+4则在候选项中可得到结果7,现在支持加减乘除括号。(详见高级功能→强大的临时英文模式)

双拼支持
[xxxx]->sp=zrm
设置自然码双拼,如果是其他方案,那么请自定义双拼

定义方法见安装裁减→添加输入法→双拼的自定义

配置文件中一些拼音输入法的特定设置
[key]->py_switch=\ 可以用来调整第一个词的编码长度
[xxxx]->py_switch_save=0 设置是否在只调整了第一个词编码长度的情况下把上屏的词组保存到用户文件当中
[xxxx]->assist_series=0 设置是否连续间接辅助码
[pinyin]->predict=mb/pypre.bin 设置拼音输入法使用的语料库
[pinyin]->simple=1 设置是否启用简拼功能

◆单字模糊编码功能

配置文件中设置

[xxxx]->fuzzy=fuzzy.txt,内容如下:
^=b c d f g h j k l m n p q r s t v w x y z ch sh zh
$=a o e i u v ai ei er ui ao ou iu ie ve an en in un ang eng ing ong ian iao uai uan iang iong uang
ch*=c*
sh*=s*
zh*=z*
*en=*eng
*ai=*an
*in=*ing

r*=y*
bu>b
ci>c
de>d
fei>f
ge>g
he>h
ji>j
ke>k
le>l
mei>m
ni>n
pian>p
qi>q
ren>r
shi>s
shi>sh
wo>w
xiao>x
yi>y
zai>z
给出的例子是全拼的,大家参照着就能明白了。

语料库使用说明

在配置文件中加入一项
[pinyin]
predict=mb/pypre.bin

注意把文件名换成你自己的语料库

现在主流拼音输入法都是二元模型的,搜狗云输入法用了三元模型,一般来说可以认为模型越高,输入的准确性越好。当然也和具体输入法的实现有很大关系,比如 :sunpinyin,也是三元的,但不说云输入法,连其他的二元模型的输入法都比不上。

小小拼音更简陋,细节就不说了,提供一个制作语料库的命令,工具在群共享里面有。
learn -mb mb/pinyin.txt -dict dict.txt -o mb/pypre.bin -adjust adjust.txt

-mb 指定制作语料库所对应的码表。
-dict 指定语料,可以是一个目录或者单独大文件,必须是文本的,gb编码的。
-o 指定生成的语料库文件。
-adjust 指定对语料库的调整文件。
-play 对指定文件进行试打。
-parse 分析出指定文件中不能正常处理的语句。

adjust.txt
格式如下,一行一个,在编码部分,词与词之间用_分隔 。
优先级 编码 词组
1 nihao_ma 你好吗

优先级取1-255,现在设为1即可

辅助码功能介绍

设置方法见《码表设置》

辅助码的作用是在正常编码之外输入的额外编码,以达到筛选候选项,减少重码的目的。

辅助码分为
1 直接辅助码,在正常编码之后直接输入辅助码。
好处是比间接辅助码按键少,坏处是容易把正常编码和辅助码搞乱。
2 间接辅助码,在正常编码之后输入一个引导键(小小输入法中是TAB键),然后输入辅助码。
坏处是要多按一个键,好处是总是能按到。

对于码表类输入法来说,小小输入法对辅助码并没有太多额外支持,输入法作者如果需要辅助码,那么只能在码表中自己编入直接辅助码,不支持间接辅助码。永码超级字词模式中词辅助码可以自动计算得出。

在拼音输入法中,默认支持间接辅助码。在双拼或者定长形码连打中在正常单字码长之后的第一位,支持字的直接辅助码;在词长编码之后的一位,支持词的直接辅助码;在句长编码之后的一位,支持句的直接辅助码。

拼音输入法中,现在基本只能支持输入一位辅助码。例外的是双拼(类双拼的形码),允许输入双拼双形,然后按TAB键,能得到一个单字候选。

间接辅助码,设置方法是[xxxx]->assist_series=1。不设置该项时,一个TAB键之后,只能按一次间接辅助码,设置后,不再能输入编码,而只能输入间接辅助码。

同步功能使用说明

小小输入法最近加入了同步功能。

使用前需要获得用户名和密钥,用户名用论坛用户名即可,密钥访问http://yong.dgod.net/sync/reg.html进行申请。

由于服务器空间有限,所以现在限制每用户
64个文件,2MB的空间。考虑到服务器空间的可靠性,以及同步程序的稳定性未经过充分考验,建议大家不要依赖于同步功能来保存你的关键数据。将来空间不够时,可能会删除一些长时间不用的同步数据。

同步功能保存的是输入法的用户数据,详细点说就是
.yong目录下的相关文件,不包括.old.bak等备份文件临时文件。

同步功能可以
加密保存你的文件,加密操作在电脑本地进行,加密算法的可靠性是比较高的,基本上不可破解,也就是你数据的安全性依赖于你使用的密码的安全性。加密所使用的密码在你进行同步时进行手工设置,不保存在服务端或者本地文件。在同步进行时,如果不输入密码,那么就是在服务器上保存明文文件,否则就是保存加密后的文件。

小小输入法的使用技巧

1、关于造词的问题。
自动造词,是在字库中找到第一个匹配的汉字,然后以这个汉字的编码进行自动编码,当出现多音字的时侯,就会有问题。
这时可以用个技巧,在码表中添加^开始的项目可以作为默认的组词编码,如,拼音“的”有de di等音则可以这样表示:
^de
这时则de作为默认的组词编码。

2、批量加词最简单的办法,就是把你的词一行一个放到用户词库中,然后启动输入法,进行一下码表归并即可。

3、取每字的前两码造词(造长词),其造词规则该如何写?

主码表单字全是2码,分词库可以全码。

code_a2=p..

字库如:1.txt中是单字一、二级……全码字。
自动造词依主码表的。

如果全码超过两码,你就只能规定到9字词了。
code_e5=
code_e6=
code_e7=

如果取每字的第一码造词
code_a2=p.1

4、语句输入。
表头加入
pinyin=1

5、要指定路径的话,用\\代替一个\,或者用/代替\。

6、小小支持分词库,在码表头加一项 :
dicts=mb/1.txt mb/2.txt
这些文件里的东西也会被自动加载。

7、临时GBK切换,要打GBK,先打个编码,然后再按下切换键。

8、通过命令直通车功能打开小小的目录(可用相对路径来快速访问到小小的目录),在码表中加入:zdir $GO(小小目录,.),然后输入编码zdir即可打开小小的安装目录了!
9、打开码表目录:在码表中加入zmb $GO(码表目录,mb),输入编码zmb即可快捷地打开码表目录了!
10、
mail blog 进入 网址模式的方法,在码表中加入:

blog $ENGLISH
mail $ENGLISH

11、编码简短提示。格式:$[提示信息]……  如在码表中加入:zmp $[名片]$(file.txt) ,输入编码zmp在输入法候选框中只显示“名片”。

12、通过命令直通车功能打开光驱打开光驱6秒后自动关闭)
在码表中加入编码open $GO(打开①光驱,.yong\command\open1.vbe) $GO(打开②光驱,.yong\command\open2.vbe) $GO(打开全部光驱,.yong\command\openall.vbe)
然后
在.yong目录下建立另一目录(如:command),在此目录下加入VBS脚本命令,即可方便地用编码来打开光驱了。

open1.vbe的代码:

Set wmp = CreateObject("WMPlayer.OCX.7")
Set cdrom = wmp.cdromCollection
If cdrom.Count > 0 then
cdrom.Item(0).eject
wscript.sleep 6000
cdrom.Item(0).Eject
else
wscript.echo "警告:您的电脑没有光驱!"
end if
set ws=createobject("wscript.shell")
ws.run"taskkill /f /im WScript.exe",0

open2.vbe的代码:

Set wmp = CreateObject("WMPlayer.OCX.7")
Set cdrom = wmp.cdromCollection
If cdrom.Count >= 2 then
cdrom.Item(1).eject
wscript.sleep 6000
cdrom.Item(1).Eject
else
if cdrom.Count > 0 then
wscript.echo "注意:您的电脑只有一个光驱,打开它吧!"
cdrom.Item(0).eject
wscript.sleep 6000
cdrom.Item(0).Eject
else
wscript.echo "警告:您的电脑没有光驱!"
End If
End If
set ws=createobject("wscript.shell")
ws.run"taskkill /f /im WScript.exe",0

openall.vbe的代码:

ON ERROR RESUME NEXT
Set wmp = CreateObject("WMPlayer.OCX.7")
Set cdrom = wmp.cdromCollection
If cdrom.Count >= 1 then
For z = 0 to cdrom.Count - 1
cdrom.Item(z).eject
Next
For z = 0 to cdrom.Count - 1
wscript.sleep 6000
cdrom.Item(z).eject
Next
else
wscript.echo "警告:您的电脑没有光驱!"
End If
set ws=createobject("wscript.shell")
ws.run"taskkill /f /im WScript.exe",0