Listing 4. Mouse Code
vga_setmousesupport(1);
int mouse;
union REGS regs;
regs.x.ax = 0;
int86(0x33, ®s, ®s);
mouse_on = regs.x.ax;
if (!mouse_on) {
printf(
"\nMouse initialization failed!\n");
exit(1);
}
int mouse_x, mouse_y;
while(1) {
mouse_update();
mouse_x = mouse_getx();
mouse_y = mouse_gety();
printf("\nCurrent mouse X: %d",
mouse_x);
printf("\nCurrent mouse Y: %d",
mouse_y);
if ((mouse_getbutton()) == 0)
..... ;
/* neither mouse button is down */
if (((mouse_getbutton() &
MOUSE_LEFTBUTTON)) &&
((mouse_getbutton() &
MOUSE_RIGHTBUTTON)))
..... ;
/* both mouse buttons are down */
if ((mouse_getbutton()) &
MOUSE_LEFTBUTTON &&
!(mouse_getbutton()) &
MOUSE_RIGHTBUTTON))
..... ;
/* left mouse button is down */
if ((mouse_getbutton()) & MOUSE_RIGHTBUTTON &
!(mouse_getbutton()) & MOUSE_LEFTBUTTON))
..... ;
/* right mouse button is down */
}
int mouse_x, mouse_y;
while(1) {
get_mouse_status (&mouse_x, &mouse_y);
printf("\nCurrent mouse X: %d", mouse_x);
printf("\nCurrent mouse Y: %d", mouse_y);
if ((get_buttons_mouse_status()) == 0)
..... ;
/* neither mouse button is down */
if (get_buttons_mouse_status() == 3)
..... ;
/* both mouse buttons are down */
if ((get_buttons_mouse_status()) == 1)
..... ;
/* left mouse button is down */
if ((get_buttons_mouse_status()) == 2)
..... ;
/* right mouse button is down */
}
void get_mouse_status (int *x, int *y)
{
regs.x.ax = 3;
int86(0x33, ®s, ®s);
*x = regs.x.cx;
*y = regs.x.dx;
}
int get_buttons_mouse_status(void)
{
regs.x.ax=3;
int86(0x33, ®s, ®s);
return regs.x.bx;
}