call method

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

Implementation

@override
String? call(TerminalKeyboardEvent event) {
  final mode = event.state.kittyKeyboardMode;
  final kittySequenceEnabled = mode &
          (_disambiguateEscapeCodes |
              _reportEventTypes |
              _reportAllKeysAsEscapeCodes) !=
      0;
  if (!kittySequenceEnabled) {
    return null;
  }

  final specialCode = _specialKeyCode(event.key);
  if (specialCode != null) {
    return _sequence(specialCode, event);
  }

  final numpadCode = _numpadKeyCode(event.key);
  if (numpadCode != null) {
    return _sequence(numpadCode, event);
  }

  final functionalSequence = _functionalSequence(event, mode);
  if (functionalSequence != null) {
    return functionalSequence;
  }

  if (_shouldEncodeControlKey(event, mode)) {
    final controlCode = _controlKeyCode(event.key);
    if (controlCode != null) {
      return _sequence(controlCode, event);
    }
  }

  final characterCode = _characterKeyCode(event);
  if (characterCode == null) {
    return null;
  }
  if (!_shouldEncodeCharacter(event, mode)) {
    return null;
  }

  var payload = characterCode.toString();
  final reportsAlternateKeys = mode & _reportAlternateKeys != 0;
  final alternateCode = _alternateCharacterCode(event, characterCode);
  if (reportsAlternateKeys && alternateCode != null) {
    payload = '$payload:$alternateCode';
  }

  return _sequence(payload, event);
}