PS2鼠标接口程序设计总结

2019-08-30 15:12

第一章

1.1 PS/2鼠标接口简介

PS2鼠标接口程序设计总结

标准的PS/2鼠标,支持下面的输入X(左右)位移、Y(上下)位移、左键、中键和右键鼠标以一个固定的频率读取这些输入,并更新不同的计数器,然后标记出反映的移动和按键状态。 标准的鼠标有两个计数器,保持位移的跟踪,X位移计数器和Y位移计数器。可存放9位的2进制补码,并且每个计数器都有相关的溢出标志,它们的内容连同三个鼠标按钮的状态一起以三字节移动数据包的形式发送给主机。位移计数器表示从最后一次位移数据包被送往主机后,有位移量发生。

当鼠标读取它的输入的时候,它记录按键的当前状态,然后检查位移,如果位移发生它就增加(对正位移)或减少(对负位移)X和/或Y位移计数器的值。如果有一个计数器溢出了就设置相应的溢出标志。 1.1.1 输入分辨率和缩入比例

决定位移计数器增减数量的参数叫分辨率,缺省的分辨率为4个计数单位/毫米,主机可以用设置分辨率0xE8命令改变这个值。

有一个参数不影响位移计数器的值,但是影响这些计数器报告的值。这个参数就是缩放比 例,缺省情况下鼠标使用1:1比例。因此对报告的鼠标位移没有影响,但是主机可以用设置比例2:1(0xE7)命令选择2:1比例。如果启用了2:1比例,鼠标在发数据给主机前采用如表1.1的算法运算计数器内容。

表1.1 缩放比例算法运算表 位移增量值 0 1 2 3 4 5 N>5 报告值 0 1 1 3 6 9 2*N 1.1.2 位移数据包

标准的PS/2鼠标,发送位移和按键信息给主机采用如表1.2的3字节数据包格式。

Byte1 Byte2 Byte3 D7 D6 Y X overflow overflow 表1.2 3字节数据包格式 D5 D4 D3 Y X Always1 sign bit sign bit X Movement Y Movement D2 Middle Btn D1 Right Btn D0 Left Btn 位移计数器是一个9位2进制的补码整数。它的最高位作为符号位出现,在位移数据包的第一个字节里,这些计数器在鼠标读取输入发现有位移时被更新。这些值是自从最后一次发送位移数据包给主机后位移的累计量(即最后一次数据包发给主机后位移计数器被复位)。位移计数器可表示的值的范围是-255 到+255。如果超过了范围,相应的溢出位就被设置,并且在复位前计数器不会增减。一旦位移数据包成功地发送给主机,位移计数器就会复位,同样鼠标在收到主机不是“Resend” 0xFE命令外的其他命令计数器也会复位。 1.1.3 Intelimouse的扩展

对标准的PS/2 鼠标的一个流行的扩展是微软的Intellimouse。它包括支持五个鼠标按键和三个位移轴(左右上下和滚轮)。这些附加特征要求使用4字节的位移数据包,而不是标准3 字节包,因为标准PS/2 鼠标驱动不认识这个数据包的格式,因此微软的Intellimouse要求严格按

照标准PS/2 鼠标来操作。除非它知道驱动程序支持扩展数据包格式,如果微软的Intellimouse用于一台只支持标准PS/2 鼠标的计算机它依然是有功能的,只是滚轮和第4 5 个按键不起作用。

微软的Intellimouse工作起来象标准的PS/2 鼠标,(也就是使用3 字节位移数据包,和标准PS/2 鼠标一样回应所有命令报告设备ID 0x00)。

要进入滚轮模式,主机应该发送如下的命令序列: 设置采样速率 200 设置采样速率 100 设置采样速率 80

要进入滚轮+5键模式,主机应该发送如下的命令序列: 设置采样速率 200 设置采样速率 200 设置采样速率 80

主机然后应该发布“获得设备ID” 命令0xF2并等待回应,如果安装的是是标准PS/2 鼠标非Intellimouse,它回应设备ID0x00。在这种情况下主机会辨认出实际这个鼠标没有滚轮并继续把它当作是标准PS/2 鼠标。但是如果安装的是微软的Intellimouse它返回的ID是0x03。这就告诉主机挂接的定点设备有滚轮,并且主机认为鼠标使用4 字节的位移数据包,如表1.3所示: Byte1 Byte2 Byte3 Byte4 D7 Y overflow D6 X overflow 表1.3 4字节数据包格式 D5 D4 D3 Y sign bit X sign bit Always1 X Movement Y Movement Z Movement D2 Middle Btn D1 Right Btn D0 Left Btn Z 位移是2的补码,表示滚轮自上次数据报告以来的位移,有效值的范围在-8 到+7 这意味着数值实际只有低四位高四位仅用作符号扩展位。

主机接着发布“获得设备ID” 命令(0xF2)并等待回应,微软的Intellimouse用0x04 这样设备ID 应答并且使用如下的4 字节位移数据包,如表1.4所示: Byte1 Byte2 Byte3 Byte1 D7 Y overflow D6 X overflow 表1.4 五键4字节数据包格式 D5 D4 D3 D2 Y sign bit X sign bit Always1 Middle Btn X Movement Y Movement 5th Btn 4th Btn Z3 Z2 D1 Right Btn D0 Left Btn Always0 Always0 Z1 Z0 Z0-Z3是2的补码,用于表示从上次数据报告以来滚轮的位移量,有效范围从-8 到+7。 第4键:1=第4键按下了;0=第4键没有按下。 第5键:1=第5键按下了;0=第5键没有按下。

1.2 操作模式

根据鼠标工作的模式来处理的数据报告有四种标准的工作模式。

●Reset——鼠标在上电或收到“Reset”(0xFF)命令后进入Reset 模式

●Stream——这是缺省模式在Reset执行完成后,也是多数软件使用鼠标的模式。如果主机先前把鼠标设置到了Remote模式,那它可以发送Set Stream Mode(0xEA)命令给鼠标,让鼠标重新进入Stream模式。

●Remote——在某些情况下Remote模式很有用可以通过发送Set Remote Mode(0xF0)命令进入。

●Wrap——除了为测试鼠标和它的主机之间的连接外这个模式不是特别地有用。Wrap模式可以通过发送Set Wrap Mode(0xEE)命令给鼠标来进入,要退出Wrap 模式主机必须发

布Reset(0xFF)命令或Reset Wrap Mode(0xEC)命令。如果Reset(0xFF)命令收到了,鼠标将进入Reset 模式。如果收到的是Reset Wrap Mode(0xEC)命令鼠标将进入Wrap 模式前的那个模式。

(注意鼠标同样可以进入extended操作模式,正如本文后面所述但是这不是标准PS/2 鼠标的 特征。) 1.2.1、Reset模式

鼠标在上电后或应答“Reset”(0xFF)命令就进入reset模式。进入这个模式后鼠标执行象前面提到的BAT (基本保证测试)一样的自检并设置如下的缺省值:

●采样速率100 采样点/秒 ●分辨率4 个计数值/毫米 ●缩放比例1:1 ●数据报告被禁止

然后发送BAT完成代码,这个代码不是0xAA(BAT 成功)就是0xFC(错误)如果主机收到了不是0xAA的回应,它可能重新给鼠标供电,这样来引起鼠标复位并重新执行BAT。接着BAT完成代码(0xAA 或0xFC)的后面鼠标发送它的设备ID 0x00。 这个ID 用来区别设备是键盘还是处于扩展模式中的鼠标(从发复位命令到鼠标发送它的设备ID时间大概为360mS)。在一些文件中说主机在没收到设备ID 前不会假定发送任何数据。但有些BIOS 在上电复位并收到0xAA 后立刻发送“Reset”(0xFF) 命令。鼠标发送自己的设备ID 给主机后它就进入了Stream 模式。注意鼠标设置的一个缺省值之一是数据报告被禁止,这就意味着鼠标在没收到“使能数据报告”(0xF4)命令之前不会发送任何位移数据包给主机。 1.2.2、Stream模式

在Stream 模式中,一旦鼠标检测到位移或发现一个或多个鼠标键的状态改变了就发送位移数据包。数据报告的最大速率被认为是采样速率。参数的范围从10 采样点/秒到200 采样点/秒,这个参数的缺省值是100采样点/秒。主机可以用设置采样速率(0xF3)命令来改变它。Stream 模式是操作的缺省模式。 1.23、Remote模式

在这个模式下鼠标以当前的采样速率读取输入,并更新它的计数器和标志。但是它只在主机请求数据的时候才报告给主机位移和按键状态。主机通过“读数据”(0xEB)命令来获得数据,在收到命令后鼠标发送位移数据包并复位它的位移计数器 1.24、Wrap模式

这是一个回声模式,鼠标收到的每个字节都会被发回主机,甚至收到的是一个有效的命令鼠标都不会应答这条命令,它只把这个字节回送给主机。但是有两个例外“Reset”(0xff)命令和“Reset Wrap Mode” (0xEC)命令鼠标认为这两条命令是一有效的命令,并且不会回送它们到主机。

1.3 初始化

下面是在计算机运行Win98SE 和鼠标之间的通讯。启动的时候插有一个PS/2 鼠标,PS/2 鼠标的初始化过程相当的典型。如果你要仿真一个PS/2 鼠标必须至少能支持如下的命令序列:

上电复位

Mouse: AA 自我测检通过 Mouse: 00 鼠标ID

Host: FF 主机发送复位命令 Mouse: FA 鼠标应答 Mouse: AA 自我测检通过 Mouse: 00 鼠标ID

Host: FF 主机发送复位命令 Mouse: FA 鼠标应答 Mouse: AA 自我测检通过 Mouse: 00 鼠标ID

Host: FF 主机发送复位命令 Mouse: FA 鼠标应答 Mouse: AA 自我测检通过 Mouse: 00 鼠标ID

Host: F3 设置采样速率,识别鼠标是否带滚轮 Mouse: FA 鼠标应答

Host: C8 采样速率 200点/秒 Mouse: FA 鼠标应答

Host: F3 设置采样速率 Mouse: FA 鼠标应答

Host:64 采样速率 100点/秒 Mouse: FA 鼠标应答

Host: F3 设置采样速率 Mouse: FA 鼠标应答

Host:50 采样速率 80点/秒 Host: F2 获取设备ID Mouse: FA 鼠标应答

Mouse: 00 鼠标ID,如果回应的是03带滚轮的三键鼠标

//-------------------------------此段不知有何作用------------- Mouse: FA 鼠标应答

Host: F3 设置采样速率 Mouse: FA 鼠标应答

Host:0A 采样速率 10点/秒 Mouse: FA 鼠标应答

Host: F2 获取设备ID Mouse: FA 鼠标应答 Mouse: 00 鼠标ID

//---------------------------------------------------------------------

Host: E8 设置分辨率 Mouse: FA 鼠标应答

Host: 03 8个计数值/毫米

Mouse: FA 鼠标应答

Host: E6 缩放比例1:1 Mouse: FA 鼠标应答

Host: F3 设置采样速率 Mouse: FA 鼠标应答

Host28 采样速率 40点/秒 Mouse: FA 鼠标应答

Host: F4 使能数据报告 Mouse: FA 鼠标应答

初始化完成

1.4 命令集

下面列出的是仅可发送给鼠标的命令,如果鼠标工作在Stream模式,主机在发送任何其他命令之前,要先禁止数据报告(命令0xF5)。

● 0xFF (Reset)——鼠标用应答0xFA,回应这条命令并进入Reset模式 ● 0xFE (Resend)——只要从鼠标收到无效数据,主机就发送这条命令,鼠标的回应是重新发送它最后发

给主机的数据包。如果鼠标用了另外一个非法的包来回应主机,要么发布另一条Resend 命令,要么发布Error命令要么让鼠标重新上电来复位它,或者禁止通讯把时钟线拉低,采取什么样的动作取决于主机。

● 0xF6 (Set Defaults)——鼠标用应答0xFA来回应,然后载入如下的值:采样率=100,分

辨率 = 4个值/毫米、比例1 :1禁止数据报告,接着鼠标清空它所有的位移计数器,并进入stream 模式。

● 0xF5 (Disable Data Reporting)——鼠标用应答0xFA回应命令,然后禁止数据报告,并复位它的位移计数器。这仅对Stream模式下的数据报告有效。并且它不能禁止采样。禁止的stream模式功能与remote 模式相同。

● 0xF4 (Enable Data Reporting)——鼠标用应答0xFA回应命令,然后使能数据报告,并复位它的位移计数器。这条命令可以对在Remote模式或Stream模式下的鼠标发布。但只对Stream模式下的数据报告有效。

● 0xF3 (Set Sample Rate)——鼠标用应答0xFA 回应命令,然后从主机读入一个或更多字节。鼠标保留这个字节作为新的采样速率在收到采样速率后,鼠标再次用应答0xFA 回应,并复位它的位移计数器。有效的采样速率是10、20、40 、60、80、100和200 采样点/秒。

● 0xF2 (Get Device ID)——鼠标用应答0xFA 回应命令,后面跟着它的设备ID,对标准PS/2 鼠标来说是0x00;鼠标同样会复位它的位移计数器。

● 0xF0(Set Remote Mode)——鼠标用应答0xFA回应,然后复位它的位移计数器并进入盘Remote模式。

● 0xEE(Set Wrap Mode)——鼠标用应答0xFA回应,然后复位它的位移计数器并进入wrap模式。

● 0xEC(Reset Wrap Mode)——鼠标用应答0xFA回应,然后复位它的位移计数器并进入wrap模式之前的那个模式(stream模式或remote模式)。

● 0xEB(Read Data)——鼠标用应答0xFA 回应,然后发送位移数据包。这是在remote模式中读数据的唯一方法,在数据包成功地被发送后,鼠标将复位它的位移计数器。


PS2鼠标接口程序设计总结.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四年级上册按要求写句子

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: