/** * Mouse interrupt Handler * * Receive and process Mouse IKBD packets. */ void Mouse_Handler(char * ikbd_packet) { /* The relative mouse position record is a three byte record of the form (regardless of keyboard mode): %111110xy ; mouse position record flag ; where y is the right button state ; and x is the left button state X ; delta x as twos complement integer Y ; delta y as twos complement integer */ s_mouse_x += (int)ikbd_packet[1]; s_mouse_y += (int)ikbd_packet[2]; if(s_mouse_x < s_mouse_x_min) { s_mouse_x = s_mouse_x_min; } else if(s_mouse_x > s_mouse_x_max) { s_mouse_x = s_mouse_x_max; } if(s_mouse_y < s_mouse_y_min) { s_mouse_y = s_mouse_y_min; } else if(s_mouse_y > s_mouse_y_max) { s_mouse_y = s_mouse_y_max; } #if 0 Mouse_EventHandler(s_mouse_x, s_mouse_y, ikbd_packet[0]&2 /*left*/, ikbd_packet[0]&1 /*right*/); #endif s_mouse_left_btn = ikbd_packet[0]&2; s_mouse_right_btn = ikbd_packet[0]&1; s_mouse_state_changed = true; }
/** * Callback wrapper for mouse actions. */ static void Video_Mouse_Callback() { Mouse_EventHandler(s_mousePosX / SCREEN_MAGNIFICATION, s_mousePosY / SCREEN_MAGNIFICATION, s_mouseButtonLeft, s_mouseButtonRight); }