X-Git-Url: https://git.friedersdorff.com/?a=blobdiff_plain;f=usb_mouse.c;h=319b65a1cb3b8dfa82254158c743633820025cef;hb=7ad93f7850cd3d20260628b10a8b123d97736e4e;hp=dd5d0b0ac36bff64425b83b7b82d41d64a0b59d6;hpb=461e0d3d8c82cc78d29d3115af3c417bb51bb50f;p=max%2Ftmk_keyboard.git diff --git a/usb_mouse.c b/usb_mouse.c index dd5d0b0a..319b65a1 100644 --- a/usb_mouse.c +++ b/usb_mouse.c @@ -5,40 +5,18 @@ #include "debug.h" -static bool is_sent = false; +uint8_t usb_mouse_protocol=1; -// which buttons are currently pressed -uint8_t mouse_buttons=0; -// protocol setting from the host. We use exactly the same report -// either way, so this variable only stores the setting since we -// are required to be able to report which setting is in use. -uint8_t mouse_protocol=1; - - -// Set the mouse buttons. To create a "click", 2 calls are needed, -// one to push the button down and the second to release it -int8_t usb_mouse_buttons(uint8_t left, uint8_t middle, uint8_t right) -{ - uint8_t mask=0; - - if (left) mask |= 1; - if (middle) mask |= 4; - if (right) mask |= 2; - mouse_buttons = mask; - return usb_mouse_move(0, 0, 0, 0); -} - -// Move the mouse. x, y and wheel are -127 to 127. Use 0 for no movement. -int8_t usb_mouse_move(int8_t x, int8_t y, int8_t wheel, int8_t hwheel) +int8_t usb_mouse_send(int8_t x, int8_t y, int8_t wheel_v, int8_t wheel_h, uint8_t buttons) { uint8_t intr_state, timeout; if (!usb_configured()) return -1; if (x == -128) x = -127; if (y == -128) y = -127; - if (wheel == -128) wheel = -127; - if (hwheel == -128) hwheel = -127; + if (wheel_v == -128) wheel_v = -127; + if (wheel_h == -128) wheel_h = -127; intr_state = SREG; cli(); UENUM = MOUSE_ENDPOINT; @@ -56,32 +34,25 @@ int8_t usb_mouse_move(int8_t x, int8_t y, int8_t wheel, int8_t hwheel) cli(); UENUM = MOUSE_ENDPOINT; } - UEDATX = mouse_buttons; + UEDATX = buttons; UEDATX = x; UEDATX = y; - UEDATX = wheel; - UEDATX = hwheel; + if (usb_mouse_protocol) { + UEDATX = wheel_v; + UEDATX = wheel_h; + } UEINTX = 0x3A; SREG = intr_state; - is_sent = true; return 0; } -void usb_mouse_clear(void) { - is_sent = false; -} - -bool usb_mouse_is_sent(void) { - return is_sent; -} - -void usb_mouse_print(int8_t mouse_x, int8_t mouse_y, int8_t wheel_v, int8_t wheel_h) { +void usb_mouse_print(int8_t x, int8_t y, int8_t wheel_v, int8_t wheel_h, uint8_t buttons) { if (!debug_mouse) return; - print("mouse btn|x y v h: "); - phex(mouse_buttons); print("|"); - phex(mouse_x); print(" "); - phex(mouse_y); print(" "); + print("usb_mouse[btn|x y v h]: "); + phex(buttons); print("|"); + phex(x); print(" "); + phex(y); print(" "); phex(wheel_v); print(" "); phex(wheel_h); print("\n"); }