diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp b/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp index 868cd1266cd..41bdf863155 100644 --- a/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp +++ b/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp @@ -483,7 +483,7 @@ TouchpadMovement::_EdgeMotion(mouse_movement *movement, touch_event *event, Also, it sets the button state from movement->buttons. */ void -TouchpadMovement::_UpdateButtons(mouse_movement *movement) +TouchpadMovement::UpdateButtons(mouse_movement *movement) { // set click count correctly according to double click timeout if (movement->buttons != 0 && fButtonsState == 0) { @@ -549,7 +549,7 @@ TouchpadMovement::_NoTouchToMovement(touch_event *event, } movement->buttons = buttons; - _UpdateButtons(movement); + UpdateButtons(movement); } @@ -601,7 +601,7 @@ TouchpadMovement::_MoveToMovement(touch_event *event, mouse_movement *movement) fTapDeltaY = 0; } - _UpdateButtons(movement); + UpdateButtons(movement); } diff --git a/src/add-ons/kernel/bus_managers/ps2/movement_maker.h b/src/add-ons/kernel/bus_managers/ps2/movement_maker.h index 31692c02911..2c762b5574d 100644 --- a/src/add-ons/kernel/bus_managers/ps2/movement_maker.h +++ b/src/add-ons/kernel/bus_managers/ps2/movement_maker.h @@ -111,11 +111,12 @@ class TouchpadMovement : public MovementMaker { bool TapDragStarted() { return fTapdragStarted; } bool WasEdgeMotion() { return fValidEdgeMotion; } + void UpdateButtons(mouse_movement *movement); + bigtime_t click_speed; private: bool _EdgeMotion(mouse_movement *movement, touch_event *event, bool validStart); - inline void _UpdateButtons(mouse_movement *movement); inline void _NoTouchToMovement(touch_event *event, mouse_movement *movement); inline void _MoveToMovement(touch_event *event, diff --git a/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp b/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp index 16aded4c385..70625df8ddf 100644 --- a/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp +++ b/src/add-ons/kernel/bus_managers/ps2/ps2_alps.cpp @@ -215,7 +215,7 @@ get_alps_movment(alps_cookie *cookie, mouse_movement *movement) } event.buttons = event_buffer[3] & 7; - event.zPressure = event_buffer[5]; + event.zPressure = event_buffer[5]; // finger on touchpad if (event_buffer[2] & 0x2) { @@ -236,8 +236,8 @@ get_alps_movment(alps_cookie *cookie, mouse_movement *movement) cookie->previousZ = event.zPressure; - event.xPosition = event_buffer[1] | ((event_buffer[2] & 0x78) << 4); - event.yPosition = event_buffer[4] | ((event_buffer[3] & 0x70) << 3); + event.xPosition = event_buffer[1] | ((event_buffer[2] & 0x78) << 4); + event.yPosition = event_buffer[4] | ((event_buffer[3] & 0x70) << 3); // check for trackpoint even (z pressure 127) if (sFoundModel->flags & ALPS_DUALPOINT && event.zPressure == 127) { @@ -248,9 +248,11 @@ get_alps_movment(alps_cookie *cookie, mouse_movement *movement) movement->wheel_xdelta = 0; movement->wheel_ydelta = 0; movement->buttons = event.buttons; + movement->timestamp = system_time(); + cookie->movementMaker.UpdateButtons(movement); } else { event.yPosition = AREA_END_Y - (event.yPosition - AREA_START_Y); - status = cookie->movementMaker.EventToMovement(&event, movement); + status = cookie->movementMaker.EventToMovement(&event, movement); } if (cookie->movementMaker.WasEdgeMotion()