Repository: flutter
Issue: Trackpad scrolling is not the same between Flutter Web and Flutter Windows
Labels: framework,engine,platform-windows,a: desktop,has reproducible steps,P2,found in release: 2.0,found in release: 2.3,team-windows,triaged-windows

OLD ISSUE:
<details>
- Trackpad scrolling produces a delta of zero in a Windows Window, but not Flutter web on Windows.
- onPointerSignal in the Listener widget does NOT fire when any other key is pressed. This works in Flutter web, but not Windows. It fires extremely inconsistently on Windows.

Here's a dartpad replicating the behavior. It works in the dartpad website, but they won't fire properly on Windows.
https://dartpad.dev/0bba2bc60f5ea81322463f91a37c5053?null_safety=true

I need to add that I have a synaptics touchpad driver.
![chrome_2021-05-12_14-13-28](https://user-images.githubusercontent.com/7407478/117975210-1d3c5b00-b337-11eb-99d0-fa2dd89a37b6.png)
![chrome_2021-05-12_14-13-50](https://user-images.githubusercontent.com/7407478/117975214-1f061e80-b337-11eb-9f50-ae1edccc826b.png)

This functionality is crucial to my team's project for accessibility purposes for clients, and accessibility purposes for our team, as some of us use trackpads (like myself).

I was told to separate this issue from #23604 as they are not related.
</details>

Trackpad pointer signals are not the same between web and desktop.

https://dartpad.dev/d7bd59792da63c7dfc85f5697590e00d?null_safety=true

Here are my results:

WEB:
No keys held: (vertical then hortizontal scrolling)
![2021-05-13_14-55-44](https://user-images.githubusercontent.com/7407478/118122333-635af280-b3fb-11eb-85dd-994e55182b52.gif)
Output Sample:
<details>
PointerDeviceKind.mouse // Offset(-0.0, 68.3)
PointerDeviceKind.mouse // Offset(-0.0, 34.2)
PointerDeviceKind.mouse // Offset(-0.0, 69.2)
PointerDeviceKind.mouse // Offset(-0.0, 59.2)
PointerDeviceKind.mouse // Offset(-0.0, 25.8)
PointerDeviceKind.mouse // Offset(-0.0, 59.2)
PointerDeviceKind.mouse // Offset(-0.0, 27.5)
PointerDeviceKind.mouse // Offset(-0.0, 20.8)
PointerDeviceKind.mouse // Offset(-0.0, 2.5)
PointerDeviceKind.mouse // Offset(-0.0, 4.2)
PointerDeviceKind.mouse // Offset(-0.0, 0.8)
PointerDeviceKind.mouse // Offset(-0.0, 0.8)
PointerDeviceKind.mouse // Offset(-0.0, 0.8)
PointerDeviceKind.mouse // Offset(-0.0, 0.8)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(-0.0, -15.8)
PointerDeviceKind.mouse // Offset(-0.0, -42.5)
PointerDeviceKind.mouse // Offset(-0.0, -23.3)
PointerDeviceKind.mouse // Offset(-0.0, -44.2)
PointerDeviceKind.mouse // Offset(-0.0, -19.2)
PointerDeviceKind.mouse // Offset(-0.0, -18.3)
PointerDeviceKind.mouse // Offset(-0.0, -50.8)
PointerDeviceKind.mouse // Offset(-0.0, -30.8)
PointerDeviceKind.mouse // Offset(-0.0, -38.3)
PointerDeviceKind.mouse // Offset(-0.0, -8.3)
PointerDeviceKind.mouse // Offset(-0.0, -29.2)
PointerDeviceKind.mouse // Offset(-0.0, -5.8)
PointerDeviceKind.mouse // Offset(-0.0, -10.8)
PointerDeviceKind.mouse // Offset(-0.0, -9.2)
PointerDeviceKind.mouse // Offset(-0.0, -2.5)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(-0.0, 16.7)
PointerDeviceKind.mouse // Offset(-0.0, 19.2)
PointerDeviceKind.mouse // Offset(-0.0, 24.2)
PointerDeviceKind.mouse // Offset(-0.0, 51.7)
PointerDeviceKind.mouse // Offset(-0.0, 70.0)
PointerDeviceKind.mouse // Offset(-0.0, 20.0)
PointerDeviceKind.mouse // Offset(-0.0, 45.0)
PointerDeviceKind.mouse // Offset(-0.0, 7.5)
PointerDeviceKind.mouse // Offset(-0.0, 11.7)
PointerDeviceKind.mouse // Offset(-0.0, 1.7)
PointerDeviceKind.mouse // Offset(-0.0, 0.8)
PointerDeviceKind.mouse // Offset(0.8, -0.0)
PointerDeviceKind.mouse // Offset(6.7, -0.0)
PointerDeviceKind.mouse // Offset(11.7, -0.0)
PointerDeviceKind.mouse // Offset(15.0, -0.0)
PointerDeviceKind.mouse // Offset(33.3, -0.0)
PointerDeviceKind.mouse // Offset(31.7, -0.0)
PointerDeviceKind.mouse // Offset(30.8, -0.0)
PointerDeviceKind.mouse // Offset(29.2, -0.0)
PointerDeviceKind.mouse // Offset(25.0, -0.0)
PointerDeviceKind.mouse // Offset(19.2, -0.0)
PointerDeviceKind.mouse // Offset(13.3, -0.0)
PointerDeviceKind.mouse // Offset(8.3, -0.0)
PointerDeviceKind.mouse // Offset(0.8, -0.0)
PointerDeviceKind.mouse // Offset(0.8, -0.0)
PointerDeviceKind.mouse // Offset(-1.7, -0.0)
PointerDeviceKind.mouse // Offset(-7.5, -0.0)
PointerDeviceKind.mouse // Offset(-8.3, -0.0)
PointerDeviceKind.mouse // Offset(-10.8, -0.0)
PointerDeviceKind.mouse // Offset(-20.0, -0.0)
PointerDeviceKind.mouse // Offset(-19.2, -0.0)
PointerDeviceKind.mouse // Offset(-16.7, -0.0)
PointerDeviceKind.mouse // Offset(-13.3, -0.0)
PointerDeviceKind.mouse // Offset(-11.7, -0.0)
PointerDeviceKind.mouse // Offset(-2.5, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
</details>

With shift held down: (vertical then hortizontal scrolling)
![2021-05-13_14-56-44](https://user-images.githubusercontent.com/7407478/118122386-766dc280-b3fb-11eb-863f-871ded9e557c.gif)
Output sample:
<details>
PointerDeviceKind.mouse // Offset(-0.0, 36.7)
PointerDeviceKind.mouse // Offset(-0.0, 9.2)
PointerDeviceKind.mouse // Offset(-0.0, 5.0)
PointerDeviceKind.mouse // Offset(-0.0, 0.8)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(-0.0, -9.2)
PointerDeviceKind.mouse // Offset(-0.0, -19.2)
PointerDeviceKind.mouse // Offset(-0.0, -56.7)
PointerDeviceKind.mouse // Offset(-0.0, -36.7)
PointerDeviceKind.mouse // Offset(-0.0, -37.5)
PointerDeviceKind.mouse // Offset(-0.0, -67.5)
PointerDeviceKind.mouse // Offset(-0.0, -25.0)
PointerDeviceKind.mouse // Offset(-0.0, -33.3)
PointerDeviceKind.mouse // Offset(-0.0, -5.8)
PointerDeviceKind.mouse // Offset(-0.0, -1.7)
PointerDeviceKind.mouse // Offset(-0.0, 1.7)
PointerDeviceKind.mouse // Offset(-0.0, 10.0)
PointerDeviceKind.mouse // Offset(-0.0, 19.2)
PointerDeviceKind.mouse // Offset(-0.0, 57.5)
PointerDeviceKind.mouse // Offset(-0.0, 35.8)
PointerDeviceKind.mouse // Offset(-0.0, 72.5)
PointerDeviceKind.mouse // Offset(-0.0, 31.7)
PointerDeviceKind.mouse // Offset(-0.0, 43.3)
PointerDeviceKind.mouse // Offset(-0.0, 12.5)
PointerDeviceKind.mouse // Offset(-0.0, 4.2)
PointerDeviceKind.mouse // Offset(-0.0, 3.3)
PointerDeviceKind.mouse // Offset(-0.0, -0.8)
PointerDeviceKind.mouse // Offset(13.3, -0.0)
PointerDeviceKind.mouse // Offset(15.8, -0.0)
PointerDeviceKind.mouse // Offset(33.3, -0.0)
PointerDeviceKind.mouse // Offset(30.8, -0.0)
PointerDeviceKind.mouse // Offset(15.0, -0.0)
PointerDeviceKind.mouse // Offset(27.5, -0.0)
PointerDeviceKind.mouse // Offset(11.7, -0.0)
PointerDeviceKind.mouse // Offset(18.3, -0.0)
PointerDeviceKind.mouse // Offset(10.0, -0.0)
PointerDeviceKind.mouse // Offset(1.7, -0.0)
PointerDeviceKind.mouse // Offset(2.5, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(-7.5, -0.0)
PointerDeviceKind.mouse // Offset(-37.5, -0.0)
PointerDeviceKind.mouse // Offset(-13.3, -0.0)
PointerDeviceKind.mouse // Offset(-37.5, -0.0)
PointerDeviceKind.mouse // Offset(-19.2, -0.0)
PointerDeviceKind.mouse // Offset(-7.5, -0.0)
PointerDeviceKind.mouse // Offset(-6.7, -0.0)
PointerDeviceKind.mouse // Offset(-1.7, -0.0)
PointerDeviceKind.mouse // Offset(-0.8, -0.0)
PointerDeviceKind.mouse // Offset(1.7, -0.0)
PointerDeviceKind.mouse // Offset(9.2, -0.0)
PointerDeviceKind.mouse // Offset(27.5, -0.0)
PointerDeviceKind.mouse // Offset(15.0, -0.0)
PointerDeviceKind.mouse // Offset(15.8, -0.0)
PointerDeviceKind.mouse // Offset(29.2, -0.0)
PointerDeviceKind.mouse // Offset(25.0, -0.0)
PointerDeviceKind.mouse // Offset(10.0, -0.0)
PointerDeviceKind.mouse // Offset(7.5, -0.0)
PointerDeviceKind.mouse // Offset(5.8, -0.0)
PointerDeviceKind.mouse // Offset(1.7, -0.0)
PointerDeviceKind.mouse // Offset(-4.2, -0.0)
PointerDeviceKind.mouse // Offset(-10.0, -0.0)
PointerDeviceKind.mouse // Offset(-12.5, -0.0)
PointerDeviceKind.mouse // Offset(-11.7, -0.0)
PointerDeviceKind.mouse // Offset(-25.0, -0.0)
PointerDeviceKind.mouse // Offset(-10.8, -0.0)
PointerDeviceKind.mouse // Offset(-19.2, -0.0)
PointerDeviceKind.mouse // Offset(-7.5, -0.0)
PointerDeviceKind.mouse // Offset(-6.7, -0.0)
PointerDeviceKind.mouse // Offset(-4.2, -0.0)
PointerDeviceKind.mouse // Offset(-1.7, -0.0)
</details>

DESKTOP:
No keys held: (vertical then horizontal scrolling)
**HORIZONTAL scrolling does NOT work**
![2021-05-13_14-58-42](https://user-images.githubusercontent.com/7407478/118122601-bfbe1200-b3fb-11eb-8afa-d2852b71ea2f.gif)

Output Sample:
<details>
flutter: PointerDeviceKind.mouse // Offset(0.0, -28.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, -22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, -16.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, -16.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 19.2)
flutter: PointerDeviceKind.mouse // Offset(0.0, 19.2)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 19.2)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, -25.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, -25.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, -32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, -38.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, -28.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, -22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, -22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 16.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 44.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, 44.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, 44.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, 38.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 25.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, 25.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, -32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, -32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, -44.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, -48.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, -44.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, -41.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, -25.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, -19.2)
flutter: PointerDeviceKind.mouse // Offset(0.0, -16.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, 32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 32.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 25.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, 19.2)
flutter: PointerDeviceKind.mouse // Offset(0.0, 22.4)
</details>

Shift key held: (vertical then horizontal scrolling)
**HORIZONTAL scrolling does NOT work**
Also we notice that the values are significantly different, the event also fires almost once per scroll here, and that's very bad.
![2021-05-13_14-59-55](https://user-images.githubusercontent.com/7407478/118122730-ed0ac000-b3fb-11eb-97b8-cdc8e7deb26b.gif)
Output Sample:
<details>
flutter: PointerDeviceKind.mouse // Offset(0.0, 16.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, 16.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, -17.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, -16.0)
flutter: PointerDeviceKind.mouse // Offset(0.0, 16.8)
flutter: PointerDeviceKind.mouse // Offset(0.0, -17.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, 18.4)
flutter: PointerDeviceKind.mouse // Offset(0.0, -17.6)
flutter: PointerDeviceKind.mouse // Offset(0.0, 16.0)
</details>

We note very dramatic discrepencies between web and desktop based on the numbers.


flutter doctor -v
<details>
[√] Flutter (Channel beta, 2.2.0-10.1.pre, on Microsoft Windows [Version 10.0.19042.928], locale en-US)
    • Flutter version 2.2.0-10.1.pre at C:\flutter
    • Framework revision 0941968447 (4 weeks ago), 2021-04-15 12:01:02 -0700
    • Engine revision d2a2e93510
    • Dart version 2.13.0 (build 2.13.0-211.6.beta)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.1)
    • Android SDK at C:\Users\saad4\AppData\Local\Android\sdk
    • Platform android-30, build-tools 30.0.1
    • Java binary at: C:\Users\saad4\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\201.6858069\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    • All Android licenses accepted.

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.7.1)
    • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
    • Visual Studio Community 2019 version 16.7.30406.217
    • Windows 10 SDK version 10.0.18362.0

[√] Android Studio (version 4.1.0)
    • Android Studio at C:\Users\saad4\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\201.6858069
    • Flutter plugin can be installed from:
       https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
       https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)

[√] IntelliJ IDEA Community Edition (version 2020.2)
    • IntelliJ at C:\Users\saad4\AppData\Local\JetBrains\Toolbox\apps\IDEA-C\ch-0\202.8194.7
    • Flutter plugin version 56.0.2
    • Dart plugin version 202.8488

[√] IntelliJ IDEA Ultimate Edition (version 2020.2)
    • IntelliJ at C:\Users\saad4\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\202.7660.26
    • Flutter plugin version 53.1.5
    • Dart plugin version 203.6912

[√] IntelliJ IDEA Ultimate Edition (version 2020.3)
    • IntelliJ at C:\Users\saad4\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\203.7148.57
    • Flutter plugin installed
    • Dart plugin version 202.8346

[√] Connected device (3 available)
    • Windows (desktop) • windows • windows-x64    • Microsoft Windows [Version 10.0.19042.928]
    • Chrome (web)      • chrome  • web-javascript • Google Chrome 90.0.4430.93
    • Edge (web)        • edge    • web-javascript • Microsoft Edge 90.0.818.49

• No issues found!

</details>