Improve/Simplify Mouse Wheel Scroll Behavior (#470)

* Improve/Simplify Mouse Wheel Scroll Behavior

* Update hid_mouse_absolute.go

Attempt to fix line reported as improperly formatted by lint.

* Update utils.go

Removed abs() function since lint states it is no longer used.
This commit is contained in:
rmschooley 2025-05-19 06:03:33 -05:00 committed by GitHub
parent fc3dbcd820
commit 0a4a1af80e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 33 deletions

View File

@ -107,24 +107,16 @@ func (u *UsbGadget) AbsMouseWheelReport(wheelY int8) error {
u.absMouseLock.Lock() u.absMouseLock.Lock()
defer u.absMouseLock.Unlock() defer u.absMouseLock.Unlock()
// Accumulate the wheelY value // Only send a report if the value is non-zero
u.absMouseAccumulatedWheelY += float64(wheelY) / 8.0 if wheelY == 0 {
// Only send a report if the accumulated value is significant
if abs(u.absMouseAccumulatedWheelY) < 1.0 {
return nil return nil
} }
scaledWheelY := int8(u.absMouseAccumulatedWheelY)
err := u.absMouseWriteHidFile([]byte{ err := u.absMouseWriteHidFile([]byte{
2, // Report ID 2 2, // Report ID 2
byte(scaledWheelY), // Scaled Wheel Y (signed) byte(wheelY), // Wheel Y (signed)
}) })
// Reset the accumulator, keeping any remainder
u.absMouseAccumulatedWheelY -= float64(scaledWheelY)
u.resetUserInputTime() u.resetUserInputTime()
return err return err
} }

View File

@ -7,14 +7,6 @@ import (
"path/filepath" "path/filepath"
) )
// Helper function to get absolute value of float64
func abs(x float64) float64 {
if x < 0 {
return -x
}
return x
}
func joinPath(basePath string, paths []string) string { func joinPath(basePath string, paths []string) string {
pathArr := append([]string{basePath}, paths...) pathArr := append([]string{basePath}, paths...)
return filepath.Join(pathArr...) return filepath.Join(pathArr...)

View File

@ -259,25 +259,25 @@ export default function WebRTCVideo() {
(e: WheelEvent) => { (e: WheelEvent) => {
if (blockWheelEvent) return; if (blockWheelEvent) return;
// Determine if the wheel event is from a trackpad or a mouse wheel // Determine if the wheel event is an accel scroll value
const isTrackpad = Math.abs(e.deltaY) < trackpadThreshold; const isAccel = Math.abs(e.deltaY) >= 100;
// Apply appropriate sensitivity based on input device // Calculate the accel scroll value
const scrollSensitivity = isTrackpad ? trackpadSensitivity : mouseSensitivity; const accelScrollValue = e.deltaY / 100;
// Calculate the scroll value // Calculate the no accel scroll value
const scroll = e.deltaY * scrollSensitivity; const noAccelScrollValue = e.deltaY > 0 ? 1 : (e.deltaY < 0 ? -1 : 0);
// Apply clamping // Get scroll value
const clampedScroll = Math.max(clampMin, Math.min(clampMax, scroll)); const scrollValue = isAccel ? accelScrollValue : noAccelScrollValue;
// Round to the nearest integer // Apply clamping (i.e. min and max mouse wheel hardware value)
const roundedScroll = Math.round(clampedScroll); const clampedScrollValue = Math.max(-127, Math.min(127, scrollValue));
// Invert the scroll value to match expected behavior // Invert the clamped scroll value to match expected behavior
const invertedScroll = -roundedScroll; const invertedScrollValue = -clampedScrollValue;
send("wheelReport", { wheelY: invertedScroll }); send("wheelReport", { wheelY : invertedScrollValue });
// Apply blocking delay // Apply blocking delay
setBlockWheelEvent(true); setBlockWheelEvent(true);