请选择 进入手机版 | 继续访问电脑版

北大中文论坛 www.pkucn.com

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 113916|回复: 222
打印 上一主题 下一主题

输入法编程漫谈(08-09-07更新)

[复制链接]
跳转到指定楼层
1
发表于 2008-6-9 15:26:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好!我是路路通。记得那是2007年,北京的第一场雪,比以往时候来的更晚一些,我在此发表了一篇题为《2007全方位、无障碍、奇妙无穷的输入方式闪亮登场》(注:帖子的标题管理员已在百忙中赐名为《路路通键盘和输入法》)的帖子,得到韦剑大版主的赞赏,并拿得了一份数量为1的订单,当时的心情是何等的激动呀!不久,还将这一广告帖置顶,人生最幸福的事莫过于此,如果老天让我遇见韦剑这个人的话,我会对他说:“爱辣味油!”,如果我的发明变成了产品的话,我希望送他——一套键盘。此后天天泡在北大论坛,静候Microsoft、IBM等公司的收购支票,可是等了3个月有余,也没半点音信,夜沉沉,路茫茫,革命一时转入了低潮。
   
        轻轻的我走了,点了点鼠标,带着我依依的不舍。

        今天我胡汉三又回来了!看到韦剑这个版主近来当得这么轻松,我就来气,因此决定出来搅搅局,让他少几分清闲,^_^

        还有,北大论坛、加加论坛、五笔爱好者论坛等等众多大师、高手、牛人,他们的码表呀,资料呀等等全免费奉送,让我几万大洋的输入法开发经费一分钱也没花出去,最后只好挪作它用;李振春老师的开源代码让我连当面拜师的机会都失去了,被迫自学成才,他们的行为已到了是可忍熟不可忍地步,今天我如果不出几招让他们瞧瞧,那也太不象话了。


《输入法编程漫谈》小学阶段示范程序



《输入法编程漫谈》初中阶段示范程序


输入法安装程序


拼音码表(供输入法程序测试用)



汉字生成工具源代码



微软DDKIME源代码


自由拼音3.0源代码



自由拼音3.0文档




[ 本帖最后由 路路通 于 2008-12-8 10:34 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2
2
 楼主| 发表于 2008-6-9 15:31:24 | 只看该作者

输入法编程难学吗?

不难,一点都不难。你这是忽悠人吧,不是,咱们IT界的人什么素质,会干本山大叔的那些勾当?只要你有点C语言基础,了解一点windows的运行机制,不出1个月,准能精通。如果这两样都不会,还能学吗?能!如果你能做到妻离子散、父子反目,丢官下岗你都不管了,哪绝对没有问题!比如我,当初买电脑不过是想赶赶时髦,从来也没有想过编程呀啥的,一开始鼠标摆弄得都不利索,双击永远都是两次单击,系统每周得摆上好酒好菜请人重装一次。就这个水平因练五笔练烦了,也想自己编一个输入法。记得当时我宣布这一伟大的决定时候,话音刚落,众人已是满地找牙!我可不管这些,去买了本谭浩强《C程序设计》,整天什么活都不干,不分日夜的啃了起来,时间一长,老婆大人不干了,下了最后通谍:“要电脑还是要我”,我说两样都要,老婆说不可能,最后我就一句话:“电脑是要定了,你爱怎的怎的!”。臭娘们敢威胁我,从小吓大的,还怕你不成,等学会了输入法编程,就是IT界的人了,IT界的人还愁没老婆,说实话如果不是法律的限制还不是要多少就有多少。经过半年的奋斗,辛勤的汗水终于有了回报,独立的写出了一个有模有样又实用的程序——路路通输入法1.0。

        所以说:“入门既不难,深造也是办得到的”。
3
 楼主| 发表于 2008-6-9 15:33:02 | 只看该作者

输入法程序是什么东东?

输入法是一个小小的动态链接库程序。

        动态链接库又是什么呢?

        我们知道电脑有很多文件,大体上可分为数据文件和可执行文件两类,数据文件如文本文档、音视频文件等;可执行文件如记事本、Word和Excel等,它们的扩展名一般是exe,com,Dll,eml等。动态链接库的扩展名是Dll,输入法程序的扩展名是将Dll改成了ime。

        动态链接库一般不能单独运行,需要借助宿主程序才能执行相关操作,打个比方,动态链接库(输入法)就是保姆,宿主程序(记事本)就是雇主。

        动态链接库又有动态加载和静态加载两种方式,它们的区别就像保姆和小时工,保姆要包吃包住——静态加载,费用稍高;小时工只需预约——动态加载,费用较低。那种方式更好呢?看你的需要,比如你家有小宝宝,24小时都需要有人伺候,保姆比较合适;如果只是搞搞室内卫生,擦擦玻璃什么的,小时工就比较合算。当然啦,如果保姆长的美若天仙,又有大学文凭,又聪明能干,你想将她转正(集成到你的程序去)也行,但做这个决定之前可要想好啦,以后感情不和想离婚可就没那么容易了。和平分手,民政局你得跑N个来回,强行分手,法院你得去N次,而且还要分大半家产,可不像保姆、小时工那么好打发的。

        输入法程序不太可能静态加载,因为雇主来自五湖四海。它的加载方式一般是手工动态加载,当然也可以做到自动加载,但这样做一般会让人骂流氓。
4
 楼主| 发表于 2008-6-9 15:35:51 | 只看该作者

输入法编程从那入手

一般人学输入法编程都是从研究源代码开始的,网上开源的有《自由拼音》、微软的DDK,其它还有一些都是根据这两个改写的。从源代码入手是个不错的法子,但很遗憾,这两个代码不是带你入门的,与国内的计算机书籍一样都是给计算机的本科生、研究生、博士之类作参考用的。网上还有一些关于输入法编程的文章,但也只是碰碰嘴唇,并没有把舌头伸进去狂搅一番,初学者看了也是不得要领。研究源代码难,又无相关的书籍,想入门还真的是不容易。造成这种局面,说白了就是输入法这种小程序,低手不会,高手不屑。

       实际上输入法很简单,它实际上就是一个查表操作。不相信的朋友,可将你的码表导入到Excel。假设你的码表是基于拼音的,码表分两列,一列是拼音,一列是汉字串,那么用鼠标点击编辑->查找,在查找内容框中敲入shishi,点击查找下一个按钮,黑色矩形框立即就跳到A列的shishi的行上面,对应的B列就是“试试、事事、实施、时世、史实……”等等这些汉字串,输入法的原理就是这样。

        既然输入法这么简单,可是做起来却不是那么容易呢?这还得从那晕到死的消息机制谈起。消息机制是什么?打个比方,两个人面对面有话不能直说,要这样子:你的话->老盖手下->老盖->老盖手下->对方,对方也是如此。由于老盖事多,还得排队,就像你去银行取款,先在营业厅门口的机子上拿一个号比如是A911,然后到一边去等候,当营业员用喇叭喊:“请A911到XX窗口……”时,你方可去柜台取款,如果这时你还在对刚才路上碰见的美眉想入非非而没有听见,对不起,重新再去拿一个号排队。

        这还不算完,你电脑的所有的东西都得经他批准才能使用,再打个比方:你两口子久别重逢,正准备上演儿童不宜的画面,这时老盖说:“哥们,别急,给我手下打个报告等我批了先”。如果你不听,那会死得很难看。没办法,在他的统治之下,咱们就得按他的旨意办事。
   
        所以学输入法编程,先得对消息机制、硬件访问机制有所了解。
5
 楼主| 发表于 2008-6-9 15:37:29 | 只看该作者

你的《输入法编程漫谈》分个阶段?

分两个阶段:小学阶段、初中阶段。每个阶段都有示范程序。
   
                    小学阶段
                   
    Win32对话框的创建
    组合窗体、候选窗体的创建和操作
    码表的操作
   
                    初中阶段
   
    状态窗体的创建和操作
    输入法消息处理
    输入法程序与IME的接口处理
6
 楼主| 发表于 2008-6-9 15:43:05 | 只看该作者
注:文章可转载须经本人同意,不得用于商业用途,而且必须注明:

转:中华人民共和国->北大中文论坛->中文信息处理->输入法讨论专区->路路通网友教授的《输入法编程漫谈》。

        这个有点长,为了节约网络资源,可用缩写

转:北大路教授《输入法编程漫谈》。

        在此告诉大家一个消息:路路通键盘经过一年多的改进,如今是要多小就有多小,按键的数量要多大就有多大,操作要多简单就有多简单,以后形码基本上就不用拆了。

       为了帖子的完整,一般的网友如果有问题可在另一帖子《输入法编程漫谈问答》发表,当然能指出错误的回帖除外。

[ 本帖最后由 路路通 于 2008-6-9 15:44 编辑 ]
7
 楼主| 发表于 2008-6-9 15:48:50 | 只看该作者

《输入法编程漫谈》小学阶段示范程序

本程序在Win2k、WinXP下、VC6编译通过。

        编译时,请进入:Project->settings->Preprocessor definitions,将_MBCS去掉,加上_UNICODE,UNICODE
        再进入:Build->set Active Configuration,选中:srf-Win32 Release 点击OK。
        
        码表是基于拼音的,含有声调,没有按字频排序。网友可以换上自己的码表,将目录下srf\Release\BHFile下的py.txt替换掉即可。
       程序默认只支持打开UNICODE的文本,有能力的网友可自行修改增加它的兼容性。

     “学习输入法编程,要带着问题学,活学活用,学用结合,急用先学,立杆见影,在“用”字上狠下功夫。为了把输入法编程的精髓真正学到手,要反复学习输入法编程的结构和算法,有些概念、算法最好要背熟,反复学习,反复运用。”

         声明:程序可以任意修改使用,无任何限制。因本程序获利的,别忘了给我一份;造成系统崩溃、艳照资料丢失和其它任何损失的,本人一概不负责任。

[ 本帖最后由 路路通 于 2008-6-11 19:55 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8
发表于 2008-6-9 17:41:45 | 只看该作者
在这里有幸读到楼主写的文章。
本人在研究编程,真的希望能够得到你的帮助。
本人的QQ:77217568
9
发表于 2008-6-9 18:25:35 | 只看该作者
向楼主这样能把看似高深的理论将的通俗易懂的,才是真正的高手
国内编书的人要学习这个精神
10
 楼主| 发表于 2008-6-9 18:57:36 | 只看该作者

回复 9楼 的帖子

高手不敢当,由于读书不多,因此只能用些土掉渣的语言乱说一通。
11
发表于 2008-6-9 22:32:02 | 只看该作者
樓主近來好嗎,原來樓主還是一樣的好學啊,真是令人佩服!
您的好學精神小弟真的得跟您多多來學習學習,
看來凡事還得多靠靠自己的學習力來做支撐
該是自己再多讀書的時候了。

[ 本帖最后由 kilin 于 2008-6-10 07:25 编辑 ]
12
 楼主| 发表于 2008-6-10 07:23:54 | 只看该作者
估计你问候的是我,先谢过。但兄弟你这是在害我呀!我几时成了“版主”了?这肯定是“楼主”的键误对不?你赶紧给改过来,篡党夺权的罪名可大了。
13
发表于 2008-6-10 07:29:20 | 只看该作者
哈!可能打太急了,給誤打了!趕快修正一下。
謝謝提醒。

樓主,好久不見囉!

[ 本帖最后由 kilin 于 2008-6-10 07:30 编辑 ]
14
发表于 2008-6-10 10:53:20 | 只看该作者
如果我的发明变成了产品的话,我希望送他——一套键盘。此后天天泡在北大论坛,静候Microsoft、IBM等公司的收购支票,可是等了3个月有余,也没半点音信,夜沉沉,路茫茫,革命一时转入了低潮。
======================================
一项发明要等公司来收购,看来是很不可能的,一般情况,你的发明必须你自己开发出产品,哪怕先低档一点的也好.
如果你的发明要投入很多资金才能开发出产品,或者要投入几年的时间才能开发出来,那么最好放弃,人生苦短嘛!

[ 本帖最后由 aabm 于 2008-6-10 10:55 编辑 ]
15
 楼主| 发表于 2008-6-10 11:22:43 | 只看该作者

回复 14楼 的帖子

这是玩笑话。样品已开发了几种,效果特好,还有一个超牛的,也快结束了。过一阵子再谈这个吧,谢谢你的关心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大中文系 ( 京ICP备12040209号

GMT+8, 2016-10-18 22:29 , Processed in 0.142885 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表