handleKeystroke method

void handleKeystroke(
  1. WindowKeyboardEvent event
)

Implementation

void handleKeystroke(WindowKeyboardEvent event) {
  if (event.keyEvent is KeyUpEvent) {
    sequence.clear();
    return;
  } else if (event.keyEvent is KeyRepeatEvent) {
    return;
  }
  if (sequence.isNotEmpty) {
    if (event.keyEvent.logicalKey == LogicalKeyboardKey.escape) {
      // handle aborts
      sequence.clear();
    } else if (sequence.length > 8) {
      // just in case we wrongly pick up normal text editing actions as key sequences
      sequence.clear();
    } else {
      sequence.add(event.keyEvent.logicalKey);
      final String signature = signatureOf(sequence);
      // dispatch the corresponding shortcut
      if (shortcuts.containsKey(signature)) {
        shortcuts[signature]!.call();
        sequence.clear();
      }
    }
  } else if ([
    LogicalKeyboardKey.metaLeft,
    LogicalKeyboardKey.metaRight,
    LogicalKeyboardKey.altLeft,
    LogicalKeyboardKey.altRight,
  ].contains(event.keyEvent.logicalKey)) {
    sequence.add(event.keyEvent.logicalKey);
  }
}