int MouseProgram(int scaling, int interrupts, int reporting) { BYTE response; unsigned int count, b; DbgPrintf("_09"); //Disable Keyboard MouseOut(MOUSE_CONTROL, CTRL_DEACTIVATE); for(count=0;count<2;count++) { DbgPrintf("_10"); // Send reset command MouseOut(MOUSE_CONTROL, CTRL_CMD); MouseOut(MOUSE_DATA, CMD_RESET); response=MouseIn(); if (response != MOUSE_ACK) goto exit; DbgPrintf("_11"); // Should be 'self test passed' 0xAA response=MouseIn(); if (response != 0xAA) goto exit; DbgPrintf("_12"); // Get the device ID. 0x00 for normal PS/2 mouse response=MouseIn(); if (response != 0) goto exit; DbgPrintf("_13"); } //Set scaling MouseOut(MOUSE_CONTROL, CTRL_CMD); MouseOut(MOUSE_DATA, scaling==2?CMD_SCALING2:CMD_SCALING1); response=MouseIn(); if (response != MOUSE_ACK) goto exit; DbgPrintf("_14"); MouseOut(MOUSE_CONTROL, CTRL_CMD); MouseOut(MOUSE_DATA, reporting?CMD_REPORTINGON:CMD_REPORTINGOFF); response = MouseIn(); if (response != MOUSE_ACK) goto exit; DbgPrintf("_16"); exit: //Enable Keyboard //DbgPrintf("_19%X", response); MouseOut(MOUSE_CONTROL, CTRL_ACTIVATE); DbgPrintf("_17"); return 0; }
int ReadMouseID() { unsigned char id; MouseOut(MOUSE_CONTROL, CTRL_ENABLEMOUSE); MouseOutIn(MOUSE_DATA, CMD_GETID); id = MouseIn(); return id; }
void UpdateButton(Button *button) { Uint8 *keys; keys = SDL_GetKeyState(NULL); if((MouseIn(button->rect.x,button->rect.y,button->rect.w,button->rect.h))&&(Mouse.buttons)) { button->State++; }else if(keys[button->Hotkey]) { button->State++; } else button->State = 0; }
unsigned char MouseOutIn(UINT16 port, BYTE data) { unsigned int retval; MouseOut( port, data ); retval = MouseIn(); if ( retval != MOUSE_ACK ) { return retval; } return 0; }
void Welcome() { Mouse m; setbkcolor(WHITE); setviewport(40, 40, 600, 440, 1); setfillstyle(SOLID_FILL, LIGHTCYAN); setcolor(YELLOW); rectangle(0, 0, 560, 400); floodfill(50, 50, 14); setviewport(40, 40, 580, 420, 1); rectangle(20, 20, 540, 380); setfillstyle(SOLID_FILL, LIGHTMAGENTA); floodfill(21, 300, YELLOW); setcolor(BLACK); settextstyle(TRIPLEX_FONT, HORIZ_DIR, 8); outtextxy(110, 55, "Welcome"); DisChinese("今天你是设计师",170,165,2,2,10,10); setcolor(BLUE); setfillstyle(SOLID_FILL, YELLOW); ellipse(450,335,0,360,60,20); floodfill(450, 335, BLUE); DisChinese("开始",430,328,1,1,20,DARKGRAY); setcolor(WHITE); setfillstyle(SOLID_FILL, WHITE); arc(260,818,85,130,470); arc(270,820,85,130,470); arc(285,822,85,130,470); line(61,227,74,400); line(61,227,164,211); line(164,211,174,360); line(184,277,254,265); line(184,277,190,355); line(254,265,260,355); bar(85,245,108,270); bar(131,245,155,270); bar(85,300,108,330); bar(131,300,155,330); bar(199,287,215,302); bar(230,282,246,298); bar(199,320,215,335); bar(230,320,246,335); while (1) { ShowMouse(); m=ReadMouse(); if (m.b == 1) { if (MouseIn(430,305,500,395)) { HideMouse(); cleardevice(); closegraph(); break; } } } }
void MouseMouse() { unsigned char byte1 = 0, byte2 = 0, byte3 = 0; int xChange, yChange, lButton, mButton, rButton; // Disable keyboard output here, because our data reads are not atomic MouseOut(MOUSE_CONTROL, CTRL_DEACTIVATE); byte1 = MouseIn(); if(byte1==-1) { MouseOut(MOUSE_CONTROL, CTRL_CMD); MouseOut(MOUSE_DATA, CMD_RESEND); MouseOut(MOUSE_CONTROL, CTRL_DEACTIVATE); return; } byte2 = MouseIn(); byte3 = MouseIn(); // Re-enable keyboard output MouseOut(MOUSE_CONTROL, CTRL_DEACTIVATE); lButton = ((byte1 & BYTE1_LEFT) == BYTE1_LEFT); mButton = ((byte1 & BYTE1_MIDDLE) == BYTE1_MIDDLE); rButton = ((byte1 & BYTE1_RIGHT) == BYTE1_RIGHT); if(byte1 & BYTE1_SIGNX) xChange = (int)(((unsigned int)~0xFF)|(byte2 & 0xFF)); else xChange = (int)byte2; if(byte1 & BYTE1_SIGNY) yChange = (int)(((unsigned int)~0xFF)|(byte3 & 0xFF)); else yChange = (int)byte3; MouseX += xChange; MouseY -= yChange; if(MouseX < 0) MouseX = 0; if(MouseY < 0) MouseY = 0; if(MouseX >= LoaderInfo->VideoMode.ModeWidth) MouseX = LoaderInfo->VideoMode.ModeWidth - 1; if(MouseY >= LoaderInfo->VideoMode.ModeHeight) MouseY = LoaderInfo->VideoMode.ModeHeight - 1; MouseMove(MouseX, MouseY); if(lButton ^ ButtonL) if(lButton) MouseDown(0); else MouseUp(0); if(mButton ^ ButtonM) if(mButton) MouseDown(1); else MouseUp(1); if(rButton ^ ButtonR) if(rButton) MouseDown(2); else MouseUp(2); ButtonL = lButton; ButtonM = mButton; ButtonR = rButton; }