go五笔——基于Google在线五笔制作

go五笔 v0.0.2

  • 插手新世纪版
  • 86版收录几个不常用汉字,另外无更新

【题外话】

下载

86版64位密码: qe7k

86版32位密码: y25a

06版64位密码: d2ug

06版32位密码: bxxz

百度云下载


近些年实验室要自我修改C3D(The 3D Biomechanics Data
Standard)文件,尽管从网上找到了一个叫c3d4sharp的类库,这些类库单纯读取C3D文件的话仍是可以够,可是假如要实现修改或者成立C3D文件就对比麻烦了。同时c3d4sharp实现得相比简单,很多C3D文件里部分数据都不辅助。好在C3D文件总体不是很复杂,于是自己就起来重新写了一个C3D文件读写的库,现在在codeplex上创建了个体系叫C3D.NET

go五笔 v0.0.1

图片 1

  • 基于Google在线五笔整理制作
  • 专业86五笔(标准五笔字型WB-18030)
  • 全部的容错码补助
  • 拼音反查辅助(码表自Android开源拼音,Rime使用同一方法)
  • 机关造词

 

下载

百度云下载

64位 密码: cets
MD5:8f6f7fee90ef42bdce1db35ec6ab8c35

32位 密码: u9eu
MD5:956af2bf4efa094fce322ba9ca115ea2

链接失效烦请评论告知!

【著作索引】

五笔码表整理自Google在线五笔,拼音反查自Android拼音码表

整理码表是一个不易的经过,中间经历了成百上千时间,很多事。14年的某一天,无意间觉得Google在线五笔简单迅速,打得了绝大多数繁体字,平日使用充裕;没有那么多的重码,常用词语也收录得很好;最令人觉得很爽的是基于王码正统的正式86五笔(WB-18030标准五笔),关于专业86五笔,个人大约记得是为着优化录入GB18030字符集时的一部分重码问题与编码不规范的题材而做的一个修正版本(因为王码官网改版,无从考证了,反正知道的人就是知道,欢迎指正),也采取了王码公司提供的五笔里面的容错码;

所以,,你懂的。

Rime,一个着实的神级输入法,能很智能的想法通晓您的输入意图,所以把整治的码表放入小狼毫(Rime的Windows版本)里面使用,到前几日了却,一真认为很当然,她会掌握您打tdkuthp是在打知道,并且打完了还忙你记着,下次这般打也就出去了,当然也造成了我打五笔时会相比随意,平时不是四码的打一部分用语。
关于小狼毫客户端的局部兼容问题,有时也会令人认为很痛苦。可是目前大神在用Google Input Tools做新的输入客户端,试用了佛振大大
2015年十二月10号发布的散装版,稳定性与兼容性这是没得说,但是挂了协调的五笔码表之后无法自动造词,无法反查了,也没找到切实可行的解决办法;相信后续的本子应该很值得期待的。

于是先后试了累累的五笔,第一次见到协助“标准五笔”的是最好五笔,很简短的痛感,不过,自己试的这版没有错码(比如象字只可以qke,不能qje)。

用过众多生成过的五笔,很多都记不得名字,基本如故从前的老码表,极爽词库(的的确确是个好词库)之类。

再后来,用了可可五笔,实实在在很心动,开放码表,标准五笔,襄助容错,甚至帮助容错的用语,心里决定,就径直用这一个了,槽点是sss的敏捷命令,我想说的是,放在sss此间确确实实有益于啊?当下就给替换成了zss,心里也就实在了,想着未来假若拿着导出的码表,用的时候往里面一个轮换就好了,直到有一个瞬间,打到了字,用aai没打出去,再用王码五笔2012a这一个版本试了下,aai字,也是字的容错码,不知是何原因,自从这事后,也就从头认为不好词库有点大,之类的……

看似有部分地方有点抑郁症的自身,在无意识之间,就打开的DDImgen,就放进去了协调收拾的码表,就报错了,就闪退了,就百度了,就映入眼帘多多生成器的文档了,就改了码表格式,改码表为GB18030编码了,就那么生成了一个输入法,就那么安装了,就那么能用了,就那么用着的觉得与刚放进Rime时候的觉得是平等的,与在网页下面使用google五笔的痛感是一模一样的,不由自主地,就那么找来了何等肌肤编辑器,顺带着下载了多少个皮肤,就那么起首各种形式地抠图,调整,试着做起了与网页下面差不多一个规范的皮肤,虽然到末了,依然不完全平等,只是像那么一点点,也认了啊,毕竟,自己认为好才是真正好,即便没有一个人用这些华丽的go五笔,至少,还有我要好愿意。

  1. C3D文件格式的构造
  2. C3D文件头的协会
  3. C3D文件参数集合的结构
  4. C3D文件数量区域的构造
  5. 动用C3D.NET读写文件示例

GB2312 顶尖常用字(3755字)固顶

看了当今的王码五笔,138元,才能真正自由的打五笔,真的是好小气好小气哦,也难怪,这东西自然就是住家的生命线,不是吧?
既然免费用户可以打出来GB2313里面的一级常用汉字,那么我就把就一级常用汉字固顶吧。

 

GB2312字符集里面 6763 字之外的单词加入排序置后

既然GB2312常用的6763个汉字占了人人常用汉字的99.7%,这就把不是这其间的字未来放放吧。

【一、C3D文件格式的社团】

码表里面的单字个数

共20979个字眼,个人整理,与GB18030双字节区的21003字
有出入,具体怎么样个意况,不知情。

先是说C3D文件全体不是很复杂,也从不过多繁杂的定义,C3D的文档格式可以从其官网下载或在线阅读。首先C3D文件是以Section为单位存储的,每一个Section固定为512字节。Section一定是按顺序存储的,不过有意思的是,Section的序号是从1从头的,而不是0。C3D文件分为三部分,分别是Section
ID = 1的C3D文件头(固定为一个Section,512字节),Section
ID一般等于2(在文书头内会交到)的C3D参数集合以及Section
ID不了解等于几(在文件头和参数集合中都会付出)的C3D数据部分。

关于默认皮肤字体

个人觉得再一次安装为编码为Georgia 18px,候选为微软雅黑 20px
的时候,用TSF传统样式,横版的时候,效果还足以。

皮肤嘛,分享出去,我们只要喜欢就用吧。 google在线五笔
皮肤

可是C3D也有很复杂的地方,一个是关于整型的利用,可以利用应用有号子的(Int16),也得以运用无符号的(UInt16),只然而后者能储存的数据量要多一些而已,既然这样,不知为啥当初还要采用有号子的整型。而且最着重的是,文档内并未另外标识能提出文档使用的是何种整型。官方给出的解决办法是,可以依据例如帧总数、帧索引等看清,假使读出负数,则接纳无符号的,否则接纳有记号的。

至于立异

想让这篇博文做为go五笔的绝无仅有发布平台,转载请表明出处:http://www.cnblogs.com/nimeiz/p/5290785.html

另一个是C3D文件能在不同品类的CPU上转变,这显示于不同CPU可能应用的字节序(Endian)和浮点数字不同,比如我们用的CPU都是行使Little-Endian以及IEEE754的浮点数标准。从网上查还发现有DEC
(VAX)以及IBM等CPU拔取不同的浮点数标准,详见我事先一篇小说:http://www.cnblogs.com/mayswind/p/3365594.html。而C3D则是支撑3类CPU,IntelCPU拔取Little-Endian以及IEEE754标准的浮点数,DEC
(VAX)拔取的Little-Endian以及故意的浮点数,MIPS
(SGI)采取的Big-Endian以及IEEE754标准的浮点数,所以在读取文档的时候恐怕需要额外开展处理,在第三节会详细表明。

 

【二、C3D文件头的协会】

先是来说第一片段,也就是C3D的文件头,C3D的文书头一定只占1个Section,即一定的512字节,所以一旦读取前512字节就足以把全体头数据拿到到了。固然各种Section有512字节之多,不过对于C3D的文书头只占了很少的一部分,在文件头中有雅量空荡荡的区域。其中第一有些是文本头参数部分,内容如下:

图片 2

字节 类型 说明
00H Byte 参数集合开始的Section ID(通常为0x02,但也不一定)
01H Byte 文件标识(固定为0x50)
02H-03H Int16 每帧里3D坐标点的个数
04H-05H Int16 每帧里模拟测量的个数
06H-07H Int16 第1帧的序号(最小为1)
08H-09H Int16 最后1帧的序号
0AH-0BH Int16 最大插值差距
0CH-0FH Single 比例因子(正数表示存储的帧为整数帧,负数为浮点帧)
10H-11H Int16  数据区域开始的Section ID
12H-13H Int16 每帧模拟采样个数
14H-17H Single 帧率

在此之后的第二片段,也就是储存的风波,听上去应该占很多字节,可是出于限制了轩然大波数量最多不可以超过18个,同时事件名称最长为4字节,所以事件部分也只占很少的半空中。由于C3D紧如若为着记录运动的多寡,可能在里面有这些比较紧要的地点,事件就是用来标记出那一个地点的。一个事变包括五个内容,分别是最长四字节的事件名称、一字节的风波是否应当出示的图景以及一个四字节的单精度浮点数表示事件出现的光阴。

字节 类型 说明
12AH-12BH Int16 事件名是否支持4字节(支持为0x3039,不支持为0)
12CH-12DH Int16 事件数量(最大为18)
130H-176H Single[] 按事件顺序存储的每个事件发生的时间(第1个帧为0.0s)
178H-188H Byte[] 按事件顺序存储的每个事件是否应该显示(1为显示,0为不显示)
18CH-1D2H Char[] 按事件顺序存储的每个事件的名称(每个事件占4字节)

 

【三、C3D文件参数集合的构造】 

C3D文件存储了汪洋的参数,其拔取了仿佛目录的点子存储了参数,不过还好唯有顶级。即参数部分惟有参数组和参数,并且每个参数组里只可以有参数不可能再包含参数组,每个参数必须在一个参数组内。参数集合起头于文件头中的首先个字节表示的Section
ID,平时为2,可是也不肯定,有的文件会在文书头后留出空白,然后参数集合起先的Section
ID就滞缓了。所以判断是否为C3D文件千万不要一起首读进去个Int16然后判断是不是0x5002,而早晚要看清第二个字节是不是0x50,确定参数集合的职位也决然要遵照文件的第一字节来。

而对于参数集合,先导的4字节定义如下:

字节 类型 说明
00H Byte 第一个参数所在的Section在整个参数集合中的位置(通常为0x01,说明开头4字节之后就是第一个参数)
01H Byte 参数集合部分标识(固定为0x50)
02H Byte 参数集合所占Section数量
03H Byte 生成文件的CPU类型(0x54为Intel,0x55为DEC (VAX, PDP-11),0x56为MIPS (SGI/MIPS))

中间前2个字节官方说一贯忽略就行,但是为了配合在写入的时候如故要写进去的。第3字节其实大家按顺序读到头也不需要以此数目。这多少个中首要的是CPU类型,由于不同CPU类型选用的字节序以及存储的浮点数字有所不同,所以大家还索要依照CPU类型举行相应的拍卖。

对此AMD和DEC生成的文档,都是运用Little-Endian字节序存储的文档,所以毫无疑问要运用Little-Endian来读取Int16、Single等品种;而MIPS则采纳的Big-Endian字节序存储文档,所以在读取的时候一定要一口咬定当前总括机默认的字节序以及文档采纳的字节序。

而对此英特尔和MIPS生成的文档,对于浮点数字的蕴藏都是使用标准的IEEE754浮点数字,对于.NET而言不需要开展此外处理;而DEC生成的文档则利用特有浮点数,需要将4个字节全体读取将来再开展出格的变换,转换方法见我事先的篇章:http://www.cnblogs.com/mayswind/p/3365594.html

在此之下就存储着拥有的参数了,参数分为两类,分别是参数组和参数。

对此参数组,要存储以下6个内容:

字节 类型 说明
00H SByte 参数组名称长度(如果为负数则表示该参数组锁定请不要修改,而长度为绝对值)
01H SByte 参数组ID的负数
02H – … Char[] 参数组名称(仅包含大写字母、0-9以及下划线_)
… + 1 – … + 2 Int16 下一参数组/参数的偏移(包含本内容的2字节)
… + 3 Byte 参数组描述长度
… + 4 –  Char[] 参数组描述内容(ASCII码)

C3D文件没有规定一个参数组前面跟另一个参数组仍然跟该参数组里的有着参数,所以读取的时候要专注下。而参数的情节则与参数组基本均等,只是在下一参数组/参数的撼动与参数组描述长度之间存放着该参数的实在多少罢了,由于地点描述起来太难为了,那里就不写了。

字节

类型

说明

事先的情节

 

Int16

下一参数组/参数的舞狮(包含本内容的2字节)

 

Byte

参数存放内容的品类(-1 Char,1 Byte,2
Int16,4 Single),绝对值即为长度

 

Byte

参数内容维数(0-3)

 

Byte[]

参数每一维大小(假设维数为0,就不曾此部分)

 

Byte[] 

参数实际内容

 

Byte

参数组描述长度

随后的始末

那边需要证实的就是,由于参数能够存放数组,所以扩展了维数的标识,即当维数为0时,存放的始末为Char、Byte、Int16、Single等转移出的字节数组;而当维数为1时,存放的为Char[]、Byte[]、Int16[]、Single[]等转移出的字节数组,以此类推。而对数组的存储,其实就是数组每个元素依次举行仓储,而对于多维数组,则是按行优先开展仓储的,比如三维数组,先存储Data[0,0,1]再存储Data[0,0,2],依次类推。

但是需要表达的是,对于Char[]以及Char[,]这二种,如若表示的话实际应该相应的是String以及String[]。

 

【四、C3D文件数量区域的结构】

C3D数据区域以帧为单位寄放的,其实一定于这么些区域就是一个帧的成团。而C3D帧其实分为两种,一种是整数帧,而另一种是浮点帧。这两边的区别在于,前者存储的所有内容都是Int16,而后者则为Single,除此之外,前者的3D坐标点(X、Y、Z)还索要倍加比(Gaby)例因子才得以,而后人存储的内容相当于已经乘以了百分比因子了。

数码区域先河于参数集合中的”POINT”参数组中的”DATA_START”参数,其代表数据区域开头的Section
ID,除此之外,在文书头中也有一份副本。可是依据合法的传教,假使文件头和参数集合中都有些内容,优先读取参数集合中的数据。

对于每个帧,又包含五个部分,第一部分为3D坐标点部分,第二有些为模拟采样部分。

  • 对于每帧的3D坐标点部分,存储着该帧所有3D坐标点的多少,每个3D坐标点包括4个Int16或Single数据,分别是X坐标、Y坐标、Z坐标以及Residual和Camera
    Mask,其中Residual和Camera
    Mask共占一个Int16。相比有趣的是,对于浮点帧,Residual和Camera
    Mask仍然也依旧一个Int16,只可是存储的时候要将相应的数值转换为Single再举办仓储。

    • 对于浮点帧,存储的X、Y、Z坐标就是其实的坐标;而对于整数帧,存储的X、Y、Z的坐标还索要倍加比例因子才方可,比例因子存储于参数集合中的”POINT”参数组中的”SCALE”参数。
    • Residual和Camera
      Mask共占一个Int16,将其更换为字节数组之后,高位字节(第1个字节)的最高位代表Residual的号子,即意味着该坐标点是否可行,假若为0则代表有效,即便为1则意味着无效,而剩余的7个字节则为Camera
      Mask,每一位表示一个壁画机,从没有到高位分别代表7个视频机是否拔取(为1为利用,为0为未利用)。而Residual的忠实数据则为字节数组的第0字节乘以比例因子(浮点帧则为比例因子的相对值)。
  • 而仿照采样部分,则存储着该帧所有的模拟采样的数量,可是每个帧可能带有多少个模拟采样,同时每个模仿采样可能又含有多少个channel,存储的数码即为该channel下记录的数额。可是存储的数额与实际的数额还亟需基于下述公式举办折算,其中data
    value为存储的多寡,real world value为实际的多寡。

    • zero
      offset可以从”ANALOG”参数组中的”OFFSET”中拿到,该数量为Int16的数组,第i位指的就是第i个channel的zero
      offset。
    • channel
      scale可以从”ANALOG”参数组中的”SCALE”中取得,该数额为Single的数组,第i位指的就是dii个channel的scale。
    • general
      scale是有着模拟采样都需要倍加的比例,该数额足以从”ANALOG”参数组中的”GEN_SCALE”中获取,为Single。

    real world value = (data value – zero offset) channel scale general scale

 

【五、使用C3D.NET读写文件示例】

眼前说了如此多,其实倘使用C3D.NET来分析的话实际是非常简单的。我们能够从https://c3d.codeplex.com/下载C3D.NET的二进制文件或者源码,引用后第一的类都在C3D这么些命名空间下。

对于遍历所有的3D坐标可以接纳以下的格局,首先可以从文件或者从流中创造C3D文件,然后从文件头中读取存储的第1帧的序号,然后读取采样点的数据就可以了,当然也可以不从参数组中读取,直接利用file.AllFrames[i].Point3Ds.Length也可以:

 1 C3DFile file = C3DFile.LoadFromFile("文件路径");
 2 Int16 firstFrameIndex = file.Header.FirstFrameIndex;
 3 Int16 pointCount = file.Parameters["POINT:USED"].GetData<Int16>();
 4 
 5 for (Int16 i = 0; i < file.AllFrames.Count; i++)
 6 {
 7     for (Int16 j = 0; j < pointCount; j++)
 8     {
 9         Console.WriteLine("Frame {0} : X = {1}, Y = {2}, Z = {3}",
10             firstFrameIndex + i,
11             file.AllFrames[i].Point3Ds[j].X,
12             file.AllFrames[i].Point3Ds[j].Y ,
13             file.AllFrames[i].Point3Ds[j].Z);
14     }
15 }

而读取模拟采样的话,采纳的章程也相近:

 1 Single frameRate = file.Parameters["POINT", "RATE"].GetData<Single>();
 2 Int16 analogChannelCount = file.Parameters["ANALOG", "USED"].GetData<Int16>();
 3 Int16 analogSamplesPerFrame = (Int16)(file.Parameters["ANALOG", "RATE"].GetData<Int16>() / frameRate);
 4 
 5 for (Int16 i = 0; i < file.AllFrames.Count; i++)
 6 {
 7     for (Int16 j = 0; j < analogChannelCount; j++)
 8     {
 9         for (Int16 k = 0; k < analogSamplesPerFrame; k++)
10         {
11             Console.WriteLine("Frame {0}, Sample {1} : {2}",
12                 firstFrameIndex + i, j + 1,
13                 file.AllFrames[i].AnalogSamples[j][k]);
14         }
15     }
16 }

除却三回性将C3D文件内容总体读取出来的这种艺术以外,还足以行使C3DReader来一帧一帧的读取。

 1 using (FileStream fs = new FileStream("文件路径", FileMode.Open, FileAccess.Read))
 2 {
 3     C3DReader reader = new C3DReader(fs);
 4     C3DHeader header = reader.ReadHeader();
 5     C3DParameterDictionary dictionary = reader.ReadParameters();
 6     Int32 index = header.FirstFrameIndex;
 7 
 8     while (true)
 9     {
10         C3DFrame frame = reader.ReadNextFrame(dictionary);
11 
12         if (frame == null)
13         {
14             break;
15         }
16 
17         for (Int16 j = 0; j < frame.Point3Ds.Length; j++)
18         {
19             Console.WriteLine("Frame {0} : X = {1}, Y = {2}, Z = {3}",
20                 index++,
21                 frame.Point3Ds[j].X,
22                 frame.Point3Ds[j].Y,
23                 frame.Point3Ds[j].Z);
24         }
25     }
26 }

对于开创一个C3D文件,只需要采用C3DFile.Create()就可以创立一个空的C3D文件的,不分包其他的参数集合。而保存C3D文件则直接选择file.SaveTo(“文件路径”)就足以了。

对于增长参数集合能够接纳以下的代码:

1 //首先需要添加参数集合,ID为正数
2 file.Parameters.AddGroup(1, "POINT", "");
3 //然后往指定ID的参数集合中添加参数即可
4 file.Parameters[1].Add("USED", "").SetData<Int16>(5);

添加帧可以应用如下的代码:

1 file.AllFrames.Add(new C3DFrame(new C3DPoint3DData[] {
2     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
3     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
4     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
5     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask},
6     new C3DPoint3DData() { X = x, Y = y, Z = z, Residual = residual, CameraMask = cameraMask} }));

理所当然,也可以将C3DPoint3DData数组换成C3DAnalog萨姆(Sam)ples数组,或者双方同时加上也得以。

 

【相关链接】

  1. C3D.ORG:http://www.c3d.org/
  2. c3d4sharp – C3D File reading/writing tools written in
    C#:http://code.google.com/p/c3d4sharp/
  3. C3D.NET:https://c3d.codeplex.com/