@@ -19,6 +19,7 @@ typedef struct {
19
19
bool connected ;
20
20
bool running ;
21
21
int rate ;
22
+ enum HidMouseButtons btn ;
22
23
} HidMouseClickerModel ;
23
24
24
25
static void hid_mouse_clicker_start_or_restart_timer (void * context ) {
@@ -61,6 +62,26 @@ static void hid_mouse_clicker_draw_callback(Canvas* canvas, void* context) {
61
62
// Ok
62
63
canvas_draw_icon (canvas , 58 , 25 , & I_Space_65x18 );
63
64
65
+ canvas_draw_icon (canvas , 61 , 50 , & I_ButtonLeft_4x7 );
66
+ canvas_draw_icon (canvas , 117 , 50 , & I_ButtonRight_4x7 );
67
+
68
+ const char * btn_label ;
69
+ switch (model -> btn ) {
70
+ case HID_MOUSE_BTN_LEFT :
71
+ btn_label = "Left" ;
72
+ break ;
73
+ case HID_MOUSE_BTN_WHEEL :
74
+ btn_label = "Middle" ;
75
+ break ;
76
+ case HID_MOUSE_BTN_RIGHT :
77
+ btn_label = "Right" ;
78
+ break ;
79
+ default :
80
+ furi_crash ();
81
+ }
82
+
83
+ elements_multiline_text_aligned (canvas , 89 , 57 , AlignCenter , AlignBottom , btn_label );
84
+
64
85
if (model -> running ) {
65
86
elements_slightly_rounded_box (canvas , 61 , 27 , 60 , 13 );
66
87
canvas_set_color (canvas , ColorWhite );
@@ -100,8 +121,8 @@ static void hid_mouse_clicker_timer_callback(void* context) {
100
121
HidMouseClickerModel * model ,
101
122
{
102
123
if (model -> running ) {
103
- hid_hal_mouse_press (hid_mouse_clicker -> hid , HID_MOUSE_BTN_LEFT );
104
- hid_hal_mouse_release (hid_mouse_clicker -> hid , HID_MOUSE_BTN_LEFT );
124
+ hid_hal_mouse_press (hid_mouse_clicker -> hid , model -> btn );
125
+ hid_hal_mouse_release (hid_mouse_clicker -> hid , model -> btn );
105
126
}
106
127
},
107
128
false);
@@ -154,6 +175,34 @@ static bool hid_mouse_clicker_input_callback(InputEvent* event, void* context) {
154
175
case InputKeyBack :
155
176
model -> running = false;
156
177
break ;
178
+ case InputKeyLeft :
179
+ switch (model -> btn ) {
180
+ case HID_MOUSE_BTN_LEFT :
181
+ model -> btn = HID_MOUSE_BTN_RIGHT ;
182
+ break ;
183
+ case HID_MOUSE_BTN_WHEEL :
184
+ model -> btn = HID_MOUSE_BTN_LEFT ;
185
+ break ;
186
+ case HID_MOUSE_BTN_RIGHT :
187
+ model -> btn = HID_MOUSE_BTN_WHEEL ;
188
+ break ;
189
+ }
190
+ consumed = true;
191
+ break ;
192
+ case InputKeyRight :
193
+ switch (model -> btn ) {
194
+ case HID_MOUSE_BTN_LEFT :
195
+ model -> btn = HID_MOUSE_BTN_WHEEL ;
196
+ break ;
197
+ case HID_MOUSE_BTN_WHEEL :
198
+ model -> btn = HID_MOUSE_BTN_RIGHT ;
199
+ break ;
200
+ case HID_MOUSE_BTN_RIGHT :
201
+ model -> btn = HID_MOUSE_BTN_LEFT ;
202
+ break ;
203
+ }
204
+ consumed = true;
205
+ break ;
157
206
default :
158
207
consumed = true;
159
208
break ;
@@ -188,7 +237,10 @@ HidMouseClicker* hid_mouse_clicker_alloc(Hid* hid) {
188
237
with_view_model (
189
238
hid_mouse_clicker -> view ,
190
239
HidMouseClickerModel * model ,
191
- { model -> rate = DEFAULT_CLICK_RATE ; },
240
+ {
241
+ model -> rate = DEFAULT_CLICK_RATE ;
242
+ model -> btn = HID_MOUSE_BTN_LEFT ;
243
+ },
192
244
true);
193
245
194
246
return hid_mouse_clicker ;
0 commit comments