Improved mouse movement
This commit is contained in:
parent
5ab2312201
commit
8666c30a52
@ -136,8 +136,8 @@ Keypad kp_keypad = Keypad(makeKeymap(kp_keys), kp_rowPins, kp_colPins, KP_ROWS,
|
|||||||
Button buttons[NBR_OF_BUTTONS] =
|
Button buttons[NBR_OF_BUTTONS] =
|
||||||
{
|
{
|
||||||
{1, KEY_FN2, KEY_TAB, NO_KEY, NO_KEY, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
{1, KEY_FN2, KEY_TAB, NO_KEY, NO_KEY, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
||||||
{2, KEY_Q, NO_KEY, KEY_F1, KEY_F12, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
{2, KEY_ML, NO_KEY, KEY_F1, KEY_F12, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
||||||
{3, KEY_W, NO_KEY, KEY_F2, KEY_F13, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
{3, KEY_MR, NO_KEY, KEY_F2, KEY_F13, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
||||||
{4, KEY_E, NO_KEY, KEY_F3, KEY_F14, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
{4, KEY_E, NO_KEY, KEY_F3, KEY_F14, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
||||||
{5, KEY_R, NO_KEY, KEY_F4, KEY_F15, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
{5, KEY_R, NO_KEY, KEY_F4, KEY_F15, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
||||||
{6, KEY_T, NO_KEY, KEY_F5, KEY_F16, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
{6, KEY_T, NO_KEY, KEY_F5, KEY_F16, NO_KEY, true, {NO_KEY, NO_KEY, NO_KEY}, IDLE, false, 0, false, false, 0, 0, false},
|
||||||
@ -242,6 +242,10 @@ unsigned long button_timestamp = 0;
|
|||||||
unsigned long mouse_wheel_timestamp = 0;
|
unsigned long mouse_wheel_timestamp = 0;
|
||||||
unsigned long indicator_timestamp = 0;
|
unsigned long indicator_timestamp = 0;
|
||||||
|
|
||||||
|
bool mouse_l = false;
|
||||||
|
bool mouse_r = false;
|
||||||
|
bool mouse_u = false;
|
||||||
|
bool mouse_d = false;
|
||||||
int mouse_x = 0;
|
int mouse_x = 0;
|
||||||
int mouse_y = 0;
|
int mouse_y = 0;
|
||||||
int mouse_wheel = 0;
|
int mouse_wheel = 0;
|
||||||
@ -302,26 +306,40 @@ bool set_key(uint16_t keycode, uint8_t kstate)
|
|||||||
{
|
{
|
||||||
if (kstate == RELEASED)
|
if (kstate == RELEASED)
|
||||||
{
|
{
|
||||||
mouse_x = 0;
|
if (keycode == KEY_ML)
|
||||||
mouse_y = 0;
|
{
|
||||||
|
mouse_l = false;
|
||||||
|
}
|
||||||
|
if (keycode == KEY_MR)
|
||||||
|
{
|
||||||
|
mouse_r = false;
|
||||||
|
}
|
||||||
|
if (keycode == KEY_MU)
|
||||||
|
{
|
||||||
|
mouse_u = false;
|
||||||
|
}
|
||||||
|
if (keycode == KEY_MD)
|
||||||
|
{
|
||||||
|
mouse_d = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (kstate == PRESSED)
|
else if (kstate == PRESSED)
|
||||||
{
|
{
|
||||||
if (keycode == KEY_MU)
|
if (keycode == KEY_MU)
|
||||||
{
|
{
|
||||||
mouse_y = -10;
|
mouse_u = true;
|
||||||
}
|
}
|
||||||
else if (keycode == KEY_MD)
|
else if (keycode == KEY_MD)
|
||||||
{
|
{
|
||||||
mouse_y = 10;
|
mouse_d = true;
|
||||||
}
|
}
|
||||||
else if (keycode == KEY_MR)
|
else if (keycode == KEY_MR)
|
||||||
{
|
{
|
||||||
mouse_x = 10;
|
mouse_r = true;
|
||||||
}
|
}
|
||||||
else if (keycode == KEY_ML)
|
else if (keycode == KEY_ML)
|
||||||
{
|
{
|
||||||
mouse_x = -10;
|
mouse_l = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -719,9 +737,49 @@ void loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Update mouse 20ms */
|
/* Update mouse 20ms */
|
||||||
if (current_timestamp >= mouse_wheel_timestamp && mouse_wheel != 0)
|
if (current_timestamp >= mouse_wheel_timestamp && (mouse_wheel != 0 || mouse_x != 0 || mouse_y != 0 || mouse_d == true || mouse_l == true || mouse_r == true || mouse_u == true))
|
||||||
{
|
{
|
||||||
|
/* Stop movement when no buttons are pressed */
|
||||||
|
if (mouse_d == false && mouse_u == false)
|
||||||
|
{
|
||||||
|
mouse_y = 0;
|
||||||
|
}
|
||||||
|
if (mouse_l == false && mouse_r == false)
|
||||||
|
{
|
||||||
|
mouse_x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stop movement when both up/down or left/right are pressed */
|
||||||
|
if (mouse_d == true && mouse_u == true)
|
||||||
|
{
|
||||||
|
mouse_y = 0;
|
||||||
|
}
|
||||||
|
if (mouse_l == true && mouse_r == true)
|
||||||
|
{
|
||||||
|
mouse_x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Move mouse cursor/wheel */
|
||||||
Mouse.move(mouse_x, mouse_y, mouse_wheel);
|
Mouse.move(mouse_x, mouse_y, mouse_wheel);
|
||||||
|
|
||||||
|
/* Add mouse acceleration for next movement */
|
||||||
|
if (mouse_r == true && mouse_x < 50)
|
||||||
|
{
|
||||||
|
mouse_x++;
|
||||||
|
}
|
||||||
|
if (mouse_l == true && mouse_x > -50)
|
||||||
|
{
|
||||||
|
mouse_x--;
|
||||||
|
}
|
||||||
|
if (mouse_d == true && mouse_y < 50)
|
||||||
|
{
|
||||||
|
mouse_y++;
|
||||||
|
}
|
||||||
|
if (mouse_u == true && mouse_y > -50)
|
||||||
|
{
|
||||||
|
mouse_y--;
|
||||||
|
}
|
||||||
|
|
||||||
mouse_wheel_timestamp = current_timestamp + 20;
|
mouse_wheel_timestamp = current_timestamp + 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user