19 static struct mouseinfo {
20 struct mousebutton buttons[MOUSE_MAX_BUTTONS];
21 //added on 10/17/98 by Hans de Goede for mouse functionality
26 //end this section addition - Hans
29 void mouse_handler (int button, int dx, int dy, int dz, int drx, int dry, int drz)
32 for (i = 0; i < 8; i++)
34 if (button & (1 << i))
36 Mouse.buttons[i].pressed = 1;
37 Mouse.buttons[i].time_went_down = timer_get_fixed_seconds();
38 Mouse.buttons[i].num_downs++;
42 Mouse.buttons[i].pressed = 0;
43 Mouse.buttons[i].time_held_down += timer_get_fixed_seconds() - Mouse.buttons[i].time_went_down;
44 Mouse.buttons[i].num_ups++;
51 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
52 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
53 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
54 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
57 void d_mouse_close(void)
60 vga_setmousesupport(0);
64 void d_mouse_init(void)
66 memset(&Mouse,0,sizeof(Mouse));
67 vga_setmousesupport(1);
69 atexit(d_mouse_close);
73 int mouse_set_limits( int x1, int y1, int x2, int y2 )
83 void mouse_flush() // clears all mice events...
90 current_time = timer_get_fixed_seconds();
91 for (i=0; i<MOUSE_MAX_BUTTONS; i++)
93 Mouse.buttons[i].pressed=0;
94 Mouse.buttons[i].time_went_down=current_time;
95 Mouse.buttons[i].time_held_down=0;
96 Mouse.buttons[i].num_ups=0;
97 Mouse.buttons[i].num_downs=0;
99 //added on 10/17/98 by Hans de Goede for mouse functionality
104 //end this section addition - Hans
107 //========================================================================
108 void mouse_get_pos( int *x, int *y)
115 void mouse_get_delta( int *dx, int *dy )
132 for (i=0; i<MOUSE_MAX_BUTTONS; i++ )
134 if (Mouse.buttons[i].pressed)
141 void mouse_set_pos( int x, int y)
146 if (Mouse.x > Mouse.max_x) Mouse.x = Mouse.max_x;
147 else if (Mouse.x < Mouse.min_x) Mouse.x = Mouse.min_x;
148 if (Mouse.y > Mouse.max_y) Mouse.y = Mouse.max_y;
149 else if (Mouse.y < Mouse.min_y) Mouse.y = Mouse.min_y;
150 //end this section change - Hans
153 void mouse_get_cyberman_pos( int *x, int *y )
159 // Returns how long this button has been down since last call.
160 fix mouse_button_down_time(int button)
166 if (!Mouse.buttons[button].pressed) {
167 time_down = Mouse.buttons[button].time_held_down;
168 Mouse.buttons[button].time_held_down = 0;
170 time = timer_get_fixed_seconds();
171 time_down = time - Mouse.buttons[button].time_held_down;
172 Mouse.buttons[button].time_held_down = time;
177 // Returns how many times this button has went down since last call
178 int mouse_button_down_count(int button)
184 count = Mouse.buttons[button].num_downs;
185 Mouse.buttons[button].num_downs = 0;
190 // Returns 1 if this button is currently down
191 int mouse_button_state(int button)
194 return Mouse.buttons[button].pressed;