1+ #include < Mouse.h>
2+ #include < Keyboard.h>
3+
4+ unsigned long timer1 = 0 ;
5+ unsigned long timer2 = 0 ;
6+ unsigned long timer3 = 0 ;
7+ unsigned long timer4 = 0 ;
8+ constexpr double tick64ms = 15.6 ;
9+
10+ bool isTimerElapsed (unsigned long & timer, unsigned long interval)
11+ {
12+ if (millis () - timer >= interval)
13+ {
14+ timer = millis ();
15+ return true ;
16+ }
17+
18+ return false ;
19+ }
20+
21+ void setup ()
22+ {
23+ Mouse.begin ();
24+ Keyboard.begin ();
25+ Serial.begin (9600 );
26+ }
27+
28+ void loop ()
29+ {
30+ if (Serial.available () > 0 )
31+ {
32+ String message = Serial.readStringUntil (' \0 ' );
33+
34+ if (message == " MOUSE_MIDDLE_HOLDED" && isTimerElapsed (timer1, 100 ))
35+ {
36+ Serial.println (" ARDUINO_INITIATED\n " );
37+ Mouse.click (MOUSE_LEFT);
38+ }
39+ else if (message == " SPACE_BUTTON_HOLDED" )
40+ {
41+ if (isTimerElapsed (timer2, tick64ms * 39 ))
42+ {
43+ Mouse.move (0 , 0 , -1 );
44+ }
45+ if (isTimerElapsed (timer3, tick64ms * 8 ))
46+ {
47+ Keyboard.press (KEY_LEFT_CTRL);
48+ Keyboard.release (KEY_LEFT_CTRL);
49+ }
50+ if (isTimerElapsed (timer4, tick64ms * 2 ))
51+ {
52+ Mouse.move (0 , 0 , -1 );
53+ }
54+ }
55+ else if (message.startsWith (" MOUSE_LEFT_HOLDED:" ))
56+ {
57+ message = message.substring (18 );
58+ int index1 = message.indexOf (' ,' );
59+ int index2 = message.indexOf (' ,' , index1 + 1 );
60+
61+ double x = message.substring (0 , index1).toDouble ();
62+ double y = message.substring (index1 + 1 , index2).toDouble ();
63+
64+ Mouse.move (x, y);
65+ }
66+ else if (message == " MOUSE_LEFT_CLICK" )
67+ {
68+ Mouse.click (MOUSE_LEFT);
69+ }
70+ }
71+ }
0 commit comments