simulateKeyRepeatEvent static method

Future<bool> simulateKeyRepeatEvent(
  1. LogicalKeyboardKey key, {
  2. String? platform,
  3. PhysicalKeyboardKey? physicalKey,
  4. String? character,
})

Simulates sending a hardware key repeat event through the system channel.

This only simulates key presses coming from a physical keyboard, not from a soft keyboard.

Specify platform as one of the platforms allowed in Platform.operatingSystem to make the event appear to be from that type of system. Defaults to "web" on web, and the operating system name based on defaultTargetPlatform everywhere else.

Returns true if the key event was handled by the framework.

See also:

Implementation

static Future<bool> simulateKeyRepeatEvent(
  LogicalKeyboardKey key, {
  String? platform,
  PhysicalKeyboardKey? physicalKey,
  String? character,
}) async {
  Future<bool> simulateByRawEvent() {
    return _simulateKeyEventByRawEvent(() {
      platform ??= _defaultPlatform;
      return getKeyData(key, platform: platform!, physicalKey: physicalKey, character: character);
    });
  }
  switch (_transitMode) {
    case KeyDataTransitMode.rawKeyData:
      return simulateByRawEvent();
    case KeyDataTransitMode.keyDataThenRawKeyData:
      final LogicalKeyboardKey logicalKey = _getKeySynonym(key);
      final bool resultByKeyEvent = ServicesBinding.instance.keyEventManager.handleKeyData(
        ui.KeyData(
          type: ui.KeyEventType.repeat,
          physical: (physicalKey ?? _findPhysicalKey(logicalKey)).usbHidUsage,
          logical: logicalKey.keyId,
          timeStamp: Duration.zero,
          character: character ?? _keyLabel(key),
          synthesized: false,
        ),
      );
      return (await simulateByRawEvent()) || resultByKeyEvent;
  }
}