call method
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);
}