标准的PS/2鼠标支持下面的输入X左右位移,Y上下位移,左键、中键和右键。鼠标以一个固定的频率读取这些输入并更新不同的计数器然后标记出反映的移动和按键状态,而Microsoft的Intellimouse它既支持标准输入也支持滚轮和两个附加的按键。
微软的Intellimouse工作起来象标准的PS/2鼠标(也就是使用3字节位移数据包,和标准PS/2鼠标一样回应所有命令,报告设备ID0x00)。要进入滚轮模式,主机应该发送如下的命令序列: 0xf3 0xc8
Set sample rate 200 Set sample rate 100 Set sample rate 80
命令集具体介绍详见《PS2技术参考》一文:
0XFF //复位命令 回应0XFA
#define RESEND 0XFE //再次发送
#define SET_DEFAULT 0XF6 //使用默认设置 回应0XFA
#define DIS_DATA_REPORT 0XF5 //禁用数据报告 回应0XFA
#define EN_DATA_REPORT 0XF4 //使能数据报告 回应0XFA
#define SET_SAMPLE_RATE 0XF3 //设置采样速率 回应0XFA
#define GET_DEVICE_ID 0XF2 //得到设备ID 回应0XFA+ID
#define SET_REMOTE_MODE 0XF0 //设置到REMOTE模式 回应OXFA
#define SET_WRAP_MODE 0XEE //设置到WRAP模式 回应0XFA
#define RST_WRAP_MODE 0XEC //回到WRAP之前的模式 回应0XFA
#define READ_DATA 0XEB //读取数据 回应0XFA+位移数据包
#define SET_STREAM_MODE 0XEA //设置到STREAM模式 回应0XFA
#define STATUS_REQUEST 0XE9 //请求得到状态 回应0XFA+3个字节
#define SET_RESOLUTION 0XE8 //设置分辨率 回应OXFA+读取1个字节+再回应0XFA
#define SET_SCALING21 0XE7 //设置缩放比率为2:1 回应0XFA
#define SET_SCALING11 0XE6 //设置缩放比率为1:1 回应0XFA