不外接ps/2鼠标,完全程序模拟鼠标 导致问题。
问题描述
程序中模拟鼠标 采用直接写i8042端口。外接ps/2鼠标时,程序可以正常模拟,不外接ps/2鼠标时,达不到模拟的效果。
原因应当是不外接ps/2鼠标时,i8042里和鼠标有关的信息没有正确配置。于是人为设置,但有错。
设置代码如下,
// 等待i8042输入缓冲器可用
void KBCWait4IBE()
{
DWORD dwVal;
do
{
GetPortVal(0x64, &dwVal, 1);
}while(dwVal & 0x2);
return;
}
// 向i8042控制寄存器写入0x47 ,允许鼠标。
KBCWait4IBE();
_asm mov al, 0x60
_asm out 0x64, al
KBCWait4IBE();
_asm mov al, 0x47
_asm out 0x60, al
i8042控制寄存器各位描述:
Bit7: 保留,应该为0
Bit6: 将第二套扫描码翻译为第一套
Bit5: 置1,禁止鼠标
Bit4: 置1,禁止键盘
Bit3: 置1,忽略状态寄存器中的 Bit4
Bit2: 设置状态寄存器中的 Bit2
Bit1: 置1,enable 鼠标中断
BitO: 置1,enable 键盘中断
有经验的同志,帮帮看看吧。很急用。