diff --git a/key_events.cpp b/key_events.cpp index 7e0e5e73..d8a1dbfe 100644 --- a/key_events.cpp +++ b/key_events.cpp @@ -40,11 +40,16 @@ void handle_synthetic_key_event(byte switchState, Key mappedKey) { || mappedKey.rawKey == KEY_MOUSE_BTN_M || mappedKey.rawKey == KEY_MOUSE_BTN_R) { if (key_toggled_on (switchState)) { - Mouse.press(mappedKey.rawKey); - end_warping(); - } else if (key_is_pressed(switchState)) { - } else if (Mouse.isPressed(mappedKey.rawKey) ) { - Mouse.release(mappedKey.rawKey); + press_button( + (mappedKey.rawKey == KEY_MOUSE_BTN_L ? MOUSE_BUTTON_LEFT : 0x00) | + (mappedKey.rawKey == KEY_MOUSE_BTN_M ? MOUSE_BUTTON_MIDDLE : 0x00) | + (mappedKey.rawKey == KEY_MOUSE_BTN_R ? MOUSE_BUTTON_RIGHT : 0x00) ); + + } else if (key_toggled_off(switchState)) { + release_button( + (mappedKey.rawKey == KEY_MOUSE_BTN_L ? MOUSE_BUTTON_LEFT : 0x00) | + (mappedKey.rawKey == KEY_MOUSE_BTN_M ? MOUSE_BUTTON_MIDDLE : 0x00) | + (mappedKey.rawKey == KEY_MOUSE_BTN_R ? MOUSE_BUTTON_RIGHT : 0x00) ); } } } diff --git a/mouse_movement.cpp b/mouse_movement.cpp index d64a14f4..f1fde2b7 100644 --- a/mouse_movement.cpp +++ b/mouse_movement.cpp @@ -20,6 +20,17 @@ static int section_left; static boolean is_warping = false; +void press_button(uint8_t button) { + Mouse.press(button); + end_warping(); + +} + +void release_button(uint8_t button) { + Mouse.release(button); +} + + void _warp_jump(long left, long top, long height, long width) { long x_center = left + width/2; long y_center = top + height/2; diff --git a/mouse_movement.h b/mouse_movement.h index aa2d79e5..d3c3fa17 100644 --- a/mouse_movement.h +++ b/mouse_movement.h @@ -12,6 +12,14 @@ void move_mouse( int8_t x, int8_t y); void begin_warping(); void end_warping(); void warp_mouse(uint8_t warp_cmd); +void press_button(uint8_t button); +void release_button(uint8_t button); + +// Buttons + +#define MOUSE_BUTTON_LEFT 0x01 +#define MOUSE_BUTTON_MIDDLE 0x02 +#define MOUSE_BUTTON_RIGHT 0x04 // Warping commands