Repository: flutter
Issue: onPointerDown not triggered when a pointer is already down
Labels: framework,engine,a: desktop,a: mouse,has reproducible steps,P2,team-framework,triaged-framework,found in release: 3.22

### Steps to reproduce

I am writing an application which requires the state of mouse buttons. However, it seems flutter does not fire onPointerDown when another pointer is already down? This happens on windows, but I think it may also happen on other platforms.
1. Build and run the provided sample.
2. move mouse cursor to the blue region
3. Press mouse left button down
4. Press mouse right button down

### Expected results

The text region should be 'Both left and right buttons pressed'.

### Actual results

The text region is  'Left button pressed'.

### Code sample

<details open><summary>Code sample</summary>

```dart
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: MouseButtonTest(),
        ),
      ),
    );
  }
}

class MouseButtonTest extends StatefulWidget {
  @override
  _MouseButtonTestState createState() => _MouseButtonTestState();
}

class _MouseButtonTestState extends State<MouseButtonTest> {
  bool _leftButtonDown = false;
  bool _rightButtonDown = false;
  String _message = 'No button pressed';

  void _updateMessage() {
    if (_leftButtonDown && _rightButtonDown) {
      setState(() {
        _message = 'Both left and right buttons pressed';
      });
    } else if (_leftButtonDown) {
      setState(() {
        _message = 'Left button pressed';
      });
    } else if (_rightButtonDown) {
      setState(() {
        _message = 'Right button pressed';
      });
    } else {
      setState(() {
        _message = 'No button pressed';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Listener(
      onPointerDown: (event) {
        if ((event.buttons & kPrimaryMouseButton)!=0) {
          _leftButtonDown = true;
        }
        if ((event.buttons & kSecondaryMouseButton)!=0) {
          _rightButtonDown = true;
        } 
        _updateMessage();
      },
      onPointerUp: (event) {
        if ((event.buttons & kPrimaryMouseButton)==0) {
          _leftButtonDown = false;
        }
        if ((event.buttons & kSecondaryMouseButton)==0) {
          _rightButtonDown = false;
        }
        _updateMessage();
      },
      child: Container(
        color: Colors.blueAccent,
        width: 300,
        height: 200,
        child: Center(
          child: Text(
            _message,
            style: TextStyle(color: Colors.white, fontSize: 18),
          ),
        ),
      ),
    );
  }
}

```

</details>


### Screenshots or Video

<details open>
<summary>Screenshots / Video demonstration</summary>

[Upload media here]

</details>


### Logs

<details open><summary>Logs</summary>

```console
[Paste your logs here]
```

</details>


### Flutter Doctor output

<details open><summary>Doctor output</summary>

```console
[Paste your output here]
```

</details>