阅读:15742回复:0

码表格式和设置

楼主#
更多 发布于:2011-06-24 13:29
 
码表文件应该保存为gb18030的,编码长度最大63,词最长255字节,单行最长4094字节
#号是码表的注释符号,如果#被用作编码,则码表和分词库中不能再使用注释
码表由码表头和数据部分组成,码表头定义了码表在输入法中的行为表现,数据部分定义了真正的内容
数据部分的格式由行组成,每一行是“编码+空格+字词+...”
在设置码表过程中,用不到的功能不用设,会自己采用默认设置,只有当你觉得默认设置不够用时,再进行改变
候选在输入法中按编码顺序显示,编码相同非指定位置的的按前后顺序显示。
 
示例
 
    name=码表
    key=abcdefghijklmnopqrstuvwxyz;
    len=4
    dicts=mb/1.txt mb/2.txt
    wildcard=z
    [data]
    a 工
    aa 式
    aaa 工
    aaaa 工 允许多个
    aaaa 允许多行
    ……
 
表头项说明
 
    name        码表的名字
    key        定义码表用到的按键,最多60个。如果在此处定义了空格作为编码且非英语码表,则编码处用_表示空格
    len        定义编码的长度,也就是最大码长
    key0        码表只在第一个编码用到的按键,除非有按键冲突,否则不要设置该项。(当前只是在空码时把按键交给输入法处理)
    push        停止键,碰到此键如果候选项唯一且无后续编码则自动上屏,最多九个

    pull        引导键,以此键引导的编码在候选唯一且无后续编码时自动上屏,最多9个,如果要所有编码都起作用,可设置*键
    suffix      尾缀顶键,在非首码按此键时,令s为该键,如果此时编码长度为n,则先顶(n-1)码长的首选项上屏,然后码表中寻找1+s对应的项(如果找不到则找1对应的首选项)上屏
    match        设为1则表示精确匹配
    wildcard        万能键设置
    dwf               disable wildcard at first的缩写,设为1在第一码不应用万能键
    english        设为1表示码表是英语码表,具体格式可参考自带的英语输入法
    simple        设为1表示使用出简不出全功能,设为2表示重码时有简码字隐藏,设为3表示重码时简码字后置
    compact     压缩显示模式,设为1表示一级只显示一简和一级带标点简码的字词,字不重复显示简码,只在空码或全码显示词。
                      设为2表示只提示下一级词,其他和设为1一样。
                      注意,这个设置下,以某编码开始的编码,该编码必须存在一级简码,否则会打空,应该是bug,不过不理它了
                     compact和simple=1,2实现上有冲突,不能同时用。
    yong        设为1表示是永码输入法
    pinyin        设为1表示是类拼音的输入法,具体行为可参考自带的拼音输入法
    split        2-7,在作为拼音输入法时,表明基本长度单位,可不设,全拼应该设置为'
    hint        设为0表示,这个码表不需要编码提示的功能而不管配置文件中的设置如何
    auto_clear    设为1表示空码的时候自动清空输入,>1表示到这个码长的时候才自动清空,如果auto_clear==len+1,则用最后一个编码继续输入

    auto_move    设为1表示启用调频功能,配置文件中的设置优先
    nomove    指定不参与自动调频的编码开始部分,例如nomove=iz,则iz开始编码的词不参与自动调频
    nsort        设为1表示不对码表进行排序,用于王林快码
    sloop        设为n则自动对前n个候选进行简码处理,用于王林快码
    assist        指定辅助码表,格式是“引导键+空格+辅助码表+仅0位置生效” ,最后一个配置为1表示仅0位生效,只在永码中部分起作用,其他输入法不需要设
                     指定辅助码,格式是\'辅助码表+空格+编码中辅助码起始位置\'
    dicts        指定分词库,词库间用空格隔开,参见示例中的设置,现在最多支持10个分词库
    user        指定码表对应的用户码表,不设则使用默认的user.txt,如果设置为"user.txt 4"这种格式,则表示不造超过4(>4)字的词
    commit        上屏设置:全码不自动上屏 空码自动上屏码长 空码时上屏的码长
    skip        造词时取编码,跳过这里指定编码开始的编码字词,如果首字母设为*则跳过包含指定编码的项
    bihua        指定笔画输入法中对横竖撇点折的对应编码
    code_        指定造词时的规则
    update      设为1表示这个码表会从服务器自动更新,如果你修改了码表,不要设置它
 
造词设置
  code_几字词规则=造词码+...
   和其他的输入法类似,e表示等于,a表示大于等于,如e2表示二字词的规则
  造词码设置,和其他输入法相同的,p表示顺着数的编码,n表示倒着数的编码
  如p11表示第一个字的第一个编码,n11表示最后一个字的第一个编码
  和其他输入法不一样的造词码可以单独指定一个字符作为编码的一部分,例如
  code_e3=p11+p21+p31+'
  则'作为第四个编码强制指定给三字词了,这样类似自然码风格的三字词就也能造了
  还有一个特殊的.号,表示所有的意思,例如

  p..表示所有字的所有编码全部参与造词,比如拼音输入法,就进行了这样的设置
  code_hint=0 造词编码提示,指是否使用用户输入的编码对输入法自动造词进行启发,默认是0,设置为0禁用,1启用
 
特殊编码
  $$                        $
  $_                        空格
  $ENGLISH        进入英文输入状态(无重且无后续编码时有效,仅码表输入法有效)
  $YYYY0              年,如二〇〇八
  $YYYY                年,如二零零八
  $yyyy                  年,如2008
  $yy0                  年,如08
  $MON                月,汉字
  $mon0                  月,数字,如02
  $mon                  月,数字,如2
  $DAY                  日,汉字
  $day0              日,数字,如02
  $day                    日,数字,如2
  $HOUR              小时,汉字
  $hour                  小时,数字,如2
  $hour0               小时,数字,如02
  $MIN                  分钟,汉字
  $min                    分钟,数字
  $SEC                  秒,汉字
  $sec                    秒,数字
  $WEEK                星期几,汉字
  $RIQI                   农历日期
  $|                          光标定位
  $LAST                 上一次的输出
 
发送文件
  $FILE(file.ext)
  支持发送文本文件和图片,文本文件必须是gb18030格式,且大小小于4KB。
 
调整显示
  $[显示的内容]输出的内容
 
码表能模拟的按键(需要系统和应用支持)
  ENTER,BACKSPACE,DEL,HOME,LEFT,UP,DOWN,RIGHT,PAGEUP,PAGEDOWN,END
按键的重复输出举例如下
 $[左移两位]$LEFT(2)

 $[删除上次输出]$BACKSPACE(LAST)
发送连续的按键
$SENDKEYS(格式参考vbs)

模拟给输入法自己用的按键,可以把某些输入法通过快捷键才能用的功能用命令直通车的方式使用
$IMKEY(CTRL_INSERT)

如果要输入多个的话,用逗号分开即可。
也可以根据配置文件中的[key]->xxxx进行输入,比如$IMKEY(speed),仅在配置文件中有对应项且非有效时有效。

$SPACE特殊用法
 在只有一个字词的编码项中,在字词最后加入$SPACE,可以打到这个字词时,直接让字词自动上屏,同时支持码表和拼音类输入法。

常用字翻转功能
  输入法中,默认的,分为常用字非常用字(见帮助《非常用字过滤》)如果默认常用字不能满足需求的时候,那么常用字翻转功能可能就对你有用了。这里我们引入了一个特殊的符号~,举例
  a ~啊
原来“啊”是常用字,这样一设置,进行了翻转,就不是常用字了
 jiong ~囧
囧字,现在很常见,你又是一个紧跟潮流的人,那么翻转一下,这个gbk汉字也成了常用字了
 
造词码设置
  造词的时候,码表中一个字可能有多个编码,而其中可能只有一个可以用来造词,或者说比较适合造词,这时候你就要设置一下告诉输入法哪个编码更可见人。比如拼音中“的”字有de,di的音,在码表中加一行
  ^de 的
   则以后造词,就都会选取de这个编码了。
 
配置文件
  配置文件的段可有限的对码表的行为进行调整,没有指明段或tabl段的设置在table下。

  [IM]->auto_move      设置后优先于码表中的设置
  [IM]->auto_move_len   开始调频的码长,auto_move=1时有效,对拼音类输入法无效。设为2,4则表示只有在编码长度为2-4之间时才调频。  [tabl]->adict                  设为1则把辅助码表也作为分词库加载
  [tabl]->wildcard           该设置会优先于码表中的wildcard的设置
  [tabl]->zi_mode           1就是纯的单字模式,无法和正常模式切换
                             2是默认正常模式,能和单字模式互相切换
                             3 是默认单字模式,能和正常模式切换
  [tabl]->edit                    设置修改码表的编辑器,修改之后输入法会立刻重新加载码表
  [xxxx]->auto_clear       设置后优先于码表中的设置
  [xxxx]->auto_english   设为1则在当前码长<=len空码时自动变成英语模式,设为2则总是在空码时进入英语模式
  [xxxx]->dicts      该设置会优先于码表中的dicts的设置
  [xxxx]->quick     另外一个辅助码表,不会显示编码提示,格式同辅助码表设置。其中文件部分允许设置用逗号隔开的多个文件或者文件夹。
  [xxxx]->pin         固顶词库,格式同用户词库,里面的词不能删除,不能移动
  [xxxx]->tip_exist 连续单字输入时,如果碰到能成词的,就提示。
  [xxxx]->tip_simple 在直接输入单字时,如果碰到简码码存在,就提示,这个值的大小代表识别前几个候选作为简码。
  [xxxx]->auto_phrase 自动造词设置,只对普通码表输入法有效,码表中必须有造词规则,仅当连续输入单字时有效。格式为auto_phrase=2,4,0。前两个参数表示只自动造2-4字的词,最大允许9字。第三个参数表示在用户以正确编码输入这个词以后,是否保存到用户词库。
  [xxxx]->thread 设置以单独的一个线程加载码表,避免加载码表堵塞界面
  [xxxx]->auto_sentence 自动造句设置,只对普通码表输入法有效,码表中必须有造词规则,格式为auto_sentence=2 9 sentence.txt 1000。前两个参数表示只自动造2-4字的句,最大20字。第三个参数表示要保存到的文件,第四个参数表示最多保存多少句。如果只有前两个参数,则造出的句保存到用户码表,会依赖auto_phrase的设置。
  [xxxx]->switch 设置输入法切换快捷键
  [xxxx]->assist 同码表头的辅助码表设置
  [xxxx]->block 屏蔽容易误按的编码,格式如下 block=容易误按的编码(最多5个) 容易误按的位置(最多四个)

  [key]->backspace 在有编码时当作退格键使用
  [key]->esc 在有编码时当作ESC键用
单字模式切换快捷键设置是[key]->zi_switch=',设置成单字母时仅在输入编码之后再输入这个键才能生效,设置成组合键时总能生效。zi_mode=0时,可以临时切换单字显示。
 
其他的字符编码的支持
主码表支持utf8,在码表的第一行加入encode=UTF-8
 

用户词库格式
只能为gb18030,一行一条,格式如{0}aaaa 你好
其中0表示位置在第一个,其他类比。{-}表示删除这个词
用户词库应该是程序自动生成的,以上说明仅供确实有特殊用途的人参考。


在线表头设置工具
http://yong.dgod.net/edit/mb.html

返回顶部