查看文章
 
基于Synaptics的触摸板手写输入的实现
2009-12-27 22:18

触摸板也能手写输入?没错!而且写的时候不需要像鼠标那样,一直按着左键。完全符合咱人类写字的习惯。
受前些日子Synaptics打鼓软件的影响,我发现此触摸板不但可以得到手指在板上的X、Y坐标的Delta值,还能够得到接触点面积和坐标。这些数据很不错嘛,和手写板提供的数据一致,因此完全有可能把这触摸板当手写板用。
说到手写板和触摸板,还真有些不同。手写板返回的是您碰触传感器的绝对坐标,而触摸板一般只给出你手指向某方向移动的距离(如鼠标一样)。假如一般的鼠标给的是桌子位置的绝对坐标,用户可就惨了!比如您的光标在屏幕左下方,您需要把光标移到右上方,那么可能一个动作只能把光标移到屏幕的中央。如果鼠标给的是绝对坐标,那么剩下的一半路程需要您伸长胳膊完成。然而事实是您可以抬起胳膊把鼠标弄到近些的地方,再走完下一半路程,因为第二次移动鼠标时,坐标原点已经移到了第一次路程的终点。触摸板最初得到的也是绝对坐标,可是因为日常操作需要,送给OS的信息一般只是每次移动的方向和距离。不过,Synaptics比较厚道,给出了原始数据的API,使我们有可能完成下面的实验。
为避免重复性劳动,先Google一下,发现之前有个TCL做了个软件叫魔法手指,就是做这个事情的。只不过它是个收费软件。现在Windows7和微软拼音都提供了手写识别的功能,而且Windows 7里的那手写识别做的还真不错,可以一气呵成写好多东西,识别率也很高。于是催生了我的恶搞精神——利用Synaptics的API,把触摸板得到的坐标映射到手写识别软件上,就可以实现期望的功能了。
Synaptics的API示例在下面链接可以找到。(Synaptics SDK V1.0 (382KB),from http://www.synaptics.com/developers/manuals
由于VC++6的代码比较烦,虽然写过,但也不想碰。于是拿起VB6的代码改,这样大家也容易读懂。修改后的代码主要做这些:
1.自动打开Windows7 的手写识别程序。打开后要把它拖到屏幕左上角。
2.在程序菜单中打开触摸转手写的功能(或用手指轻触触摸板右上角区域)。
3.打开记事本写吧(记事本不要挡住手写识别程序的区域)……程序会把触摸板得到的X,Y坐标映射到屏幕左上角区域中,所以你在触摸板上可以自然书写。(触摸板的原点坐标是在坐下方的,而屏幕原点在做上方)
4.想要退出手写模式,步骤如2,可用键盘打开菜单或轻触触摸板右上角区域
5.想要移动映射区域光标,可以分别点击触摸板右侧中间部分和下面部分。


程序和源代码被我打成压缩包,可以在这里找到:
http://cid-eaeea257e15e65c6.skydrive.live.com/self.aspx/Public/Software/Touch/SynDraw.rar
这程序在Windows7,Acer Aspire 4736Z上测试通过。希望有牛人继续搞下去,可以弄出个产品(免费的也不拒绝)。或者,能够让M$他们重视一下这需求(呵呵,做梦呢……)。

1月6日更新:

需要注意的是,并不是所有S公司的手写板都可以支持。此外,给出的程序是个演示程序,并不能在日常中使用。写这东西的目的是利用尽可能少的时间来实现想法而已,希望起到抛砖引玉的作用,

今日在小众软件上看到 scrybe-gesture ,很欣喜。如果这玩法推广开来,就成我们本友的福音了。

我手头没有运行在XP下好的手写识别软件。如果有,那么将这Demo稍加修改,也是能够在XP下跑起来的。我认为,这个技术需要和手写识别结合起来才会有前途。
--------------------------------------------------------
另外,Synaptics还提供了一个非常好玩的东东,可以用手指制造诡异气氛。地址在:
http://www.synaptics.com/sites/default/files/SynThZip2.zip


类别:电脑相关||添加到搜藏 |分享到i贴吧|浏览(8309)|评论 (0)
 
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu