|
|
@ -53,6 +53,7 @@ void ps2_mouse_init(void) { |
|
|
|
ps2_mouse_set_remote_mode(); |
|
|
|
ps2_mouse_set_remote_mode(); |
|
|
|
#else |
|
|
|
#else |
|
|
|
ps2_mouse_enable_data_reporting(); |
|
|
|
ps2_mouse_enable_data_reporting(); |
|
|
|
|
|
|
|
ps2_mouse_set_stream_mode(); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
#ifdef PS2_MOUSE_ENABLE_SCROLLING |
|
|
|
#ifdef PS2_MOUSE_ENABLE_SCROLLING |
|
|
@ -75,19 +76,33 @@ void ps2_mouse_task(void) { |
|
|
|
extern int tp_buttons; |
|
|
|
extern int tp_buttons; |
|
|
|
|
|
|
|
|
|
|
|
/* receives packet from mouse */ |
|
|
|
/* receives packet from mouse */ |
|
|
|
|
|
|
|
#ifdef PS2_MOUSE_USE_REMOTE_MODE |
|
|
|
uint8_t rcv; |
|
|
|
uint8_t rcv; |
|
|
|
rcv = ps2_host_send(PS2_MOUSE_READ_DATA); |
|
|
|
rcv = ps2_host_send(PS2_MOUSE_READ_DATA); |
|
|
|
if (rcv == PS2_ACK) { |
|
|
|
if (rcv == PS2_ACK) { |
|
|
|
mouse_report.buttons = ps2_host_recv_response() | tp_buttons; |
|
|
|
mouse_report.buttons = ps2_host_recv_response() | tp_buttons; |
|
|
|
mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER; |
|
|
|
mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER; |
|
|
|
mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER; |
|
|
|
mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER; |
|
|
|
#ifdef PS2_MOUSE_ENABLE_SCROLLING |
|
|
|
# ifdef PS2_MOUSE_ENABLE_SCROLLING |
|
|
|
mouse_report.v = -(ps2_host_recv_response() & PS2_MOUSE_SCROLL_MASK) * PS2_MOUSE_V_MULTIPLIER; |
|
|
|
mouse_report.v = -(ps2_host_recv_response() & PS2_MOUSE_SCROLL_MASK) * PS2_MOUSE_V_MULTIPLIER; |
|
|
|
#endif |
|
|
|
# endif |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n"); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
if (pbuf_has_data()) { |
|
|
|
|
|
|
|
mouse_report.buttons = ps2_host_recv_response() | tp_buttons; |
|
|
|
|
|
|
|
mouse_report.x = ps2_host_recv_response() * PS2_MOUSE_X_MULTIPLIER; |
|
|
|
|
|
|
|
mouse_report.y = ps2_host_recv_response() * PS2_MOUSE_Y_MULTIPLIER; |
|
|
|
|
|
|
|
# ifdef PS2_MOUSE_ENABLE_SCROLLING |
|
|
|
|
|
|
|
mouse_report.v = -(ps2_host_recv_response() & PS2_MOUSE_SCROLL_MASK) * PS2_MOUSE_V_MULTIPLIER; |
|
|
|
|
|
|
|
# endif |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n"); |
|
|
|
if (debug_mouse) print("ps2_mouse: fail to get mouse packet\n"); |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/* if mouse moves or buttons state changes */ |
|
|
|
/* if mouse moves or buttons state changes */ |
|
|
|
if (mouse_report.x || mouse_report.y || mouse_report.v || ((mouse_report.buttons ^ buttons_prev) & PS2_MOUSE_BTN_MASK)) { |
|
|
|
if (mouse_report.x || mouse_report.y || mouse_report.v || ((mouse_report.buttons ^ buttons_prev) & PS2_MOUSE_BTN_MASK)) { |
|
|
|