@@ -172,7 +172,7 @@ static double calcualte_velocity(struct input_event event1, struct input_event e
172
172
return distance / time_delta ;
173
173
}
174
174
175
- static void process_abs_event (struct input_event event , point_t offsets ) {
175
+ static void process_abs_event (struct input_event event , point_t offsets , bool invert_horz_scroll , bool invert_vert_scroll ) {
176
176
if (event .code == ABS_MT_SLOT ) {
177
177
// store the current mt_slot
178
178
mt_slots .active = event .value ;
@@ -186,7 +186,7 @@ static void process_abs_event(struct input_event event, point_t offsets) {
186
186
if (scroll .last_x_abs_event .type == EV_ABS && scroll .last_x_abs_event .code == ABS_MT_POSITION_X ) {
187
187
// invert the velocity to scroll to the correct direction as a positive x direction
188
188
// on the touchpad mean scroll left (negative scroll direction)
189
- scroll .x_velocity = - calcualte_velocity (scroll .last_x_abs_event , event );
189
+ scroll .x_velocity = calcualte_velocity (scroll .last_x_abs_event , event ) * ( invert_horz_scroll ? 1 : -1 );
190
190
}
191
191
scroll .last_x_abs_event = event ;
192
192
}
@@ -200,7 +200,7 @@ static void process_abs_event(struct input_event event, point_t offsets) {
200
200
if (mt_slots .active == 0 && finger_count == SCROLL_FINGER_COUNT ) {
201
201
// check wether a correct input event was set to scroll.last_y_abs_event
202
202
if (scroll .last_y_abs_event .type == EV_ABS && scroll .last_y_abs_event .code == ABS_MT_POSITION_Y ) {
203
- scroll .y_velocity = calcualte_velocity (scroll .last_y_abs_event , event );
203
+ scroll .y_velocity = calcualte_velocity (scroll .last_y_abs_event , event ) * ( invert_vert_scroll ? -1 : 1 ) ;
204
204
}
205
205
scroll .last_y_abs_event = event ;
206
206
}
@@ -518,7 +518,7 @@ void process_events(int fd, configuration_t config, void (*callback)(input_event
518
518
}
519
519
break ;
520
520
case EV_ABS :
521
- process_abs_event (ev [i ], offsets );
521
+ process_abs_event (ev [i ], offsets , config . scroll . invert_horz , config . scroll . invert_vert );
522
522
break ;
523
523
case EV_SYN : {
524
524
input_event_array_t * input_events = process_syn_event (ev [i ], config , thresholds );
0 commit comments