call method

  1. @override
String? call(
  1. TerminalKeyboardEvent event
)
override

Implementation

@override
String? call(TerminalKeyboardEvent event) {
  if (event.type == TerminalKeyEventType.release) {
    return null;
  }
  if (!event.ctrl) {
    return null;
  }

  final key = event.key;
  if (!event.shift &&
      key.index >= TerminalKey.keyA.index &&
      key.index <= TerminalKey.keyZ.index) {
    final input = key.index - TerminalKey.keyA.index + 1;
    return _withAltPrefix(input, event.alt);
  }

  final textCodePoint = _singleCodePoint(event.text);
  final control = switch ((key, textCodePoint)) {
    (TerminalKey.space, _) || (_, 0x20) => 0x00,
    (TerminalKey.digit0, _) || (_, 0x30) => 0x30,
    (TerminalKey.digit1, _) || (_, 0x31) => 0x31,
    (TerminalKey.digit2, _) || (_, 0x32) || (_, 0x40) => 0x00,
    (TerminalKey.digit3, _) || (_, 0x33) => 0x1B,
    (TerminalKey.digit4, _) || (_, 0x34) => 0x1C,
    (TerminalKey.digit5, _) || (_, 0x35) => 0x1D,
    (TerminalKey.digit7, _) || (_, 0x37) => 0x1F,
    (TerminalKey.digit8, _) || (_, 0x38) || (_, 0x3F) => 0x7F,
    (TerminalKey.digit9, _) || (_, 0x39) => 0x39,
    (TerminalKey.bracketLeft, _) || (_, 0x5B) => 0x1B,
    (TerminalKey.backslash, _) || (TerminalKey.intlBackslash, _) => 0x1C,
    (_, 0x5C) => 0x1C,
    (TerminalKey.bracketRight, _) || (_, 0x5D) => 0x1D,
    (TerminalKey.digit6, _) || (_, 0x5E) => 0x1E,
    (_, 0x7E) => 0x1E,
    (TerminalKey.slash, _) ||
    (TerminalKey.minus, _) ||
    (_, 0x2F) ||
    (_, 0x5F) =>
      0x1F,
    _ => null,
  };
  if (control == null) return null;
  return _withAltPrefix(control, event.alt);
}