HRESULT _stdcall GetDeviceState(THIS_ DWORD a,LPVOID b) { //This needs to be modified to use b instead of bytes - it would save one copymemory BYTE bytes[256]; HRESULT hr=RealDevice->GetDeviceState(sizeof(bytes),bytes); //push escape to skip the intro if(SkipIntro) { if(SkipIntro2) { bytes[0x01]=0x80; SkipIntro2=false; } else { SkipIntro2=true; } } else if(FinishedFake) { FinishedFake=false; bytes[0x29]=0x80; } else if(UseFakeBuffer==0) { //Only want to respond to keypresses if the buffer is empty for(BYTE b=0;b<32;b++) { if(FakeKeys[b].KeyCode==0) break; if(KEYDOWN(bytes,FakeKeys[b].KeyCode)&&!KEYDOWN(LastBytes,FakeKeys[b].KeyCode)) { bytes[0x29]=0x80; bytes[FakeKeys[b].KeyCode]=0x00; FakeString(FakeKeys[b].chars,FakeKeys[b].data,FakeKeys[b].size); } } } ::CopyMemory(b,bytes,a); ::CopyMemory(LastBytes,bytes,a); return hr; }
HRESULT _stdcall GetDeviceState(DWORD a,LPVOID b) { if(DeviceType==DeviceType_KEYBOARD) { //If this is a keyboard BYTE bytes[256]; HRESULT hr=RealDevice->GetDeviceState(sizeof(bytes),bytes); if(KEYDOWN(bytes,0x30)) { AttackType=3; } else if(KEYDOWN(bytes,0x31)) { AttackType=2; } else if(KEYDOWN(bytes,0x32)) { AttackType=1; } else { AttackType=0; } if(AttackType) { //left 0x1e //right 0x20 //up 0x11 //down 0x1f bytes[0x1e]=bytes[0x20]=bytes[0x11]=bytes[0x1f]=0; bytes[0x4f]=bytes[0x50]=bytes[0x51]=0; switch(AttackType+(3*HammerMouse2)) { case 1:bytes[0x11]=0x80; break; case 2:bytes[0x1e]=0x80; break; case 3:bytes[0x11]=bytes[0x1e]=0x80; break; case 4:bytes[0x1f]=0x80; break; case 5:bytes[0x20]=0x80; break; case 6:bytes[0x1f]=bytes[0x20]=0x80; break; } } ::CopyMemory(b,bytes,a); return hr; } else { //This is the mouse if(AttackType) { DIMOUSESTATE2 di; HRESULT hr=RealDevice->GetDeviceState(sizeof(di),&di); di.rgbButtons[0]=0x80*(HammerMouse2=!HammerMouse2); *((DIMOUSESTATE2*)b)=di; return hr; } else { return RealDevice->GetDeviceState(a,b); } } }
HRESULT _stdcall GetDeviceState(DWORD a,LPVOID b) { //if(DeviceType==DeviceType_KEYBOARD) { //If this is a keyboard BYTE bytes[256]; HRESULT hr=RealDevice->GetDeviceState(sizeof(bytes),bytes); DWORD d=GetTickCount(); if(d > Ticks+120000) { Ticks=d; bytes[0x3f]=0x80; } ::CopyMemory(b,bytes,a); return hr; /*} else { //This is the mouse /*if(AttackType) { DIMOUSESTATE2 di; HRESULT hr=RealDevice->GetDeviceState(sizeof(di),&di); di.rgbButtons[0]=0x80*(HammerMouse2=!HammerMouse2); *((DIMOUSESTATE2*)b)=di; return hr; } else { return RealDevice->GetDeviceState(a,b); }*/ //} }