Windows中多指针输入技术的实现与应用(3 绪论)
Windows中多指针输入技术的实现与应用(3 绪论)
湖南大学 谢祁衡
Windows中多指针输入技术的实现与应用
1 绪论
1.1 课题背景
计算机科学的是目前发展最快的几个领域之一,人机交互的方式也经历着重大的变革。众所周知,输入设备是人机交互最主要的设备。最开始的计算机使用的输入设备是非常不方便的读卡器和磁带驱动器, 那时用户不直接与计算机系统交互,而是准备好一个作业(由程序、数据和一些控制信息(控制卡片)组成)并提交给计算机操作员。作业一般以穿孔卡片的形式提交。[1,3-4]目前键盘和指针设备是微机上最常用的输入设备,扫描仪和光电笔等输入设备的应用也越来越广泛。键盘主要用来输入文字,而我们可以方便快捷地用指针设备指定光标在屏幕上的位置。尤其是在Windows环境里,操作几乎离不开指针设备。指针设备主要包括最常用的鼠标, 以及触控板,触摸屏,轨迹球, 指点杆和光线枪。通常我们家用机使用的是鼠标,笔记本使用的是触控板,[2]而触摸屏在商业领域得到了很广泛的应用。一般来说使用单指针设备加键盘就能满足需求,其接口模型如图1.1。
图1.1 单用户输入的用户接口模型[3]
但是现在使用多个同时控制自己光标的指针设备的需求也越来越多。而微软的 Windows本身并不支持超过单个指针设备的操作,无论你接上多少指针设备,它也仅仅提供一个光标,多个指针设备只能通过这仅有的一个光标进行操作。于是让程序在Windows下支持多个指针设备,并且控制各自独立的光标就成了软件设计者问题。
1.2课题目的
多指针设备输入在很多情况下有很大的优势。比如当需要左右手同时操作指针设备时。也有可能是当需要利用不同的指针设备实现不同的功能时,比如当画Colored Petri Net[4]时,就有这种需求。在现代应用中,多人在大屏幕上共同协作完成同一个任务(特别在CAD等领域)的情况并不少见,这时也非常需要多指针技术。另外在游戏的设计上,多人同时操作自己的指针设备在同一台电脑上进行,也有着相当大的市场。而且,很多现代的人机交换技术,比如tool-glasses和floating patettes,至少需要两个指针设备,一个用来移动工具板,另一个用来选择工具。在文献[5]中微软的技术人员通过详细地进行了学生行为真实的对比试验分析,证明了此技术在发展中国家教育行业中的巨大潜力。另外,在[3]B. B. Bederson,J. Stewart, A.Druin开拓性的一文中第一次提出了SDG(Single Display Groupware)的概念,并详细介绍了此技术将来可能的应用范围。而实际上,在Windows中,SDG概念实现的主要部分就是实现多指针设备的输入。其模型示意图如图1.2所示。
图1.2 SDG输入的用户界面模型[3]
本文希望通过对此技术原理的详细介绍,各种实现方法的简单介绍,和对SDG Toolkit具体使用方法的简单介绍,可以让人了解并可以更多的在多指针输入技术有优势的相关软件中使用此技术。
1.3研究状况
自从E. A. Bier和S. Freeman 1991年在[6]中第一次真正实现了一个SDG系统,并由B. B. Bederson,J. Stewart, A.Druin在[3]中真正建立了SDG的完整理论体系后,国外独立的多指针设备输入实现已经有很多。包括为满足Colored Petri Net建模而设计的CPN Tools Project (daimi.au.dk/CPNTools),为多人同时协作完成任务而设计的WorkSPACE (daimi.au.dk/workspace),为游戏而设计的Mouse-Party (mouse-party.com/)和MAME:Analog+ (MAMEWorld.net),为节省教育成本投入而设计的MultiMice (MultiMice.cz)。以上的多种实现反映出多指针技术的巨大应用潜力。但是,每个想使用此技术的软件开发人员不得不自己独立实现一套完整的系统,非常大的增加了软件开发的成本,而且这些专门的开发技术难以维护,修改,也更难以被其他软件开发人员所利用。这些问题的解决都呼唤通用型的多指针技术出现,国外对通用的多指针技术的研究尚处于摸索阶段,但已经提出过很多解决方案。其中最成熟的应该是开源项目CPNmouse (cpnmouse.sourceforge.net)和加拿大calgary大学GroupLab开发的 Single Display Groupware Toolkit (grouplab.cpsc.ucalgary.ca/software/SDGT)。虽然还有很多兼容性及实现复杂的问题,但是已经进入了实际应用阶段。甚至还有两个专门研究相关技术的实验室GroupLab (grouplab.cpsc.ucalgary.ca)和EDGE lab (www.edgelab.ca),进行着很多相关的研究。另外在文献[7]我们可以看到,作者描述了通过改进 X window system,实现了在X window system很好的通用多指针设备输入的支持。虽然作者提出这个模型不仅在X Window system下可用,也适用于Windows 及MAC OS,可惜我们很难直接通过改进Windows 本身来利用这个模型。值得一提的是,最近,微软开发了一种叫MultiPoint的技术,以期可以让更多的发展中国家学生在电脑不足的情况下实际能操作电脑,并在
1.4 论文构成及研究内容
本文通过对多种可能的实现方案进行分析,对比,并详细介绍其中较好方案的实现和应用。因为各种指针设备在Windows下都当作鼠标来处理,这里以多鼠标输入为例,来分析多指针设备的输入,并且提到的支持平台仅为Windows。
本文第一部分主要介绍目前两种多鼠标输入的底层实现方案,分析其优劣,并详细介绍了一种较好的用户层利用RawInput实现的原理。第二部分介绍了三种目前主要的多鼠标输入框架软件,并对其进行了分析,对比,然后详细介绍了一种较好的框架类软件SDG Toolkit的实现原理。第三部分简单介绍了SDG Toolkit的使用方法。第四部分分析了目前方案的不足之处及其可能的改进。第五部分进行了延伸性的探讨,讨论了怎么利用MFC实现此技术,并提供了参考的例子。然后,总结本文的工作。
Posted By 九天雁翎 at 九天雁翎的博客 on 2008年04月23日