Repository: flutter
Issue: Make shortcuts portable across different keyboard layouts
Labels: a: text input,c: new feature,engine,c: proposal,P3,team-engine,triaged-engine

Flutter shortcuts defined with `SingleActivator` or `LogicalKeySet` are not keyboard layout agnostic. For example, the classic zoom-in shortcut `Control`+`+` only works with such keyboard layouts (e.g. Finnish) that do not require the `Shift` modifier to be pressed to access `+`. If the system has e.g. US English keyboard layout in use, the shortcut has to be defined as `Control`+`Shift`+`+` instead. A single shortcut definition does not work with both keyboard layouts.

The "logical" shortcut is `Control`+`+` and what is typically presented in GUIs. Application developers should not need to know that in some keyboard layouts, the "physical" key combination to activate the shortcut includes an "extra" `Shift` modifier.

## Steps to Reproduce

<!-- Please include full steps to reproduce so that we can reproduce the problem. -->

1. Switch to Finnish keyboard layout
2. Execute `flutter run` on the code sample <!-- (see "Code sample" section below) -->
2. Try pressing `Control`+`+` and `Control`+`-`
3. Observe "zoom in" and "zoom out" in the debug output
4. Switch to US English keyboard layout
5. Try pressing `Control`+`+` and `Control`+`-`
6. Observe the debug output. "zoom in" doesn't get activated

**Expected results:** <!-- what did you want to see? -->

`Control`+`+` should work regardless of the keyboard layout.

**Actual results:** <!-- what did you see? -->

- `Control`+`+` works with the Finnish keyboard layout:
  ```dart
  SingleActivator(LogicalKeyboardKey.add, control: true)
  ```
vs.

- `Control`+`Shift`+`+` works with the US English keyboard layout:
  ```dart
  SingleActivator(LogicalKeyboardKey.add, control: true, shift: true)
  ```

<details>
<summary>Code sample</summary>

```dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

const zoomIn = SingleActivator(LogicalKeyboardKey.add, control: true);
const zoomOut = SingleActivator(LogicalKeyboardKey.minus, control: true);

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        body: CallbackShortcuts(
          bindings: {
            zoomIn: () => print('zoom in'),
            zoomOut: () => print('zoom out'),
          },
          child: const Focus(autofocus: true, child: SizedBox.shrink()),
        ),
      ),
    ),
  );
}
```
</details>

<details>
  <summary>Logs</summary>

```
[✓] Flutter (Channel main, 3.7.0-3.0.pre.57, on Ubuntu 22.10 5.19.0-23-generic, locale en_DK.UTF-8)
    • Flutter version 3.7.0-3.0.pre.57 on channel main at /home/jpnurmi/Flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision ef6ead4401 (10 hours ago), 2022-12-06 23:15:24 -0500
    • Engine revision 67254d6e4b
    • Dart version 2.19.0 (build 2.19.0-467.0.dev)
    • DevTools version 2.20.0

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.


[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 15.0.2-1
    • cmake version 3.24.2
    • ninja version 1.11.0
    • pkg-config version 0.29.2

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[✓] VS Code
    • VS Code at /snap/code/current
    • Flutter extension version 3.54.0

[✓] Connected device (2 available)
    • Linux (desktop) • linux  • linux-x64      • Ubuntu 22.10 5.19.0-23-generic
    • Chrome (web)    • chrome • web-javascript • Google Chrome 108.0.5359.94

[✓] HTTP Host Availability
    • All required HTTP hosts are available

! Doctor found issues in 2 categories.
```
</details>