wedgeKeyEventsFor function

List<KeyEvent> wedgeKeyEventsFor(
  1. String code, {
  2. Duration start = Duration.zero,
  3. Duration interval = const Duration(milliseconds: 5),
})

The key events a wedge scanner sends for code: one key down/up pair per character, interval apart, then Enter. Feed them to KeyboardWedgeSource.handleKeyEvent to simulate a scanner in demos and tests.

Implementation

List<KeyEvent> wedgeKeyEventsFor(
  String code, {
  Duration start = Duration.zero,
  Duration interval = const Duration(milliseconds: 5),
}) {
  final events = <KeyEvent>[];
  var time = start + const Duration(microseconds: 1);
  for (final unit in code.runes) {
    final character = String.fromCharCode(unit);
    final logical = LogicalKeyboardKey(unit);
    events
      ..add(
        KeyDownEvent(physicalKey: PhysicalKeyboardKey.keyA, logicalKey: logical, character: character, timeStamp: time),
      )
      ..add(KeyUpEvent(physicalKey: PhysicalKeyboardKey.keyA, logicalKey: logical, timeStamp: time));
    time += interval;
  }
  events
    ..add(
      KeyDownEvent(
        physicalKey: PhysicalKeyboardKey.enter,
        logicalKey: LogicalKeyboardKey.enter,
        character: '\n',
        timeStamp: time,
      ),
    )
    ..add(KeyUpEvent(physicalKey: PhysicalKeyboardKey.enter, logicalKey: LogicalKeyboardKey.enter, timeStamp: time));
  return events;
}