protected bool ProcessSpeedSearchKey()

in src/common/details/console/gui/controls/SpeedSearchListBoxControl.cs [116:156]


        protected bool ProcessSpeedSearchKey(ConsoleKeyInfo key)
        {
            if (_speedSearchBox != null && key.Key == ConsoleKey.Escape)
            {
                _speedSearchBox.Close();
                _speedSearchBox = null;
                PaintWindow(Colors, $"{Border?.Substring(0, 4)}{(char)0}{Border?.Substring(5)}");
                return true;
            }

            var tab = key.Key == ConsoleKey.Tab;
            var f3 = key.Key == ConsoleKey.F3;
            if (_speedSearchBox != null && (tab || f3))
            {
                return key.IsShift()
                    ? SelectRowContaining(GetSpeedSearchText(), SelectedRow - 1, false, true, true, true, -1) || true
                    : SelectRowContaining(GetSpeedSearchText(), SelectedRow + 1, false, true, true, true, +1) || true;
            }

            var questionOpen = !IsSpeedSearchOpen() && key.KeyChar == '?';
            if (questionOpen) return OpenSpeedSearch();

            var ctrlF = !IsSpeedSearchOpen() && key.Key == ConsoleKey.F && key.IsCtrl();
            if (ctrlF) return OpenSpeedSearch();

            var processed = base.ProcessKey(key);
            if (processed) return processed;

            if (key.IsAscii())
            {
                OpenSpeedSearch();
                _speedSearchBox!.End();

                if (_speedSearchBox!.ProcessKey(key))
                {
                    return SelectRowContaining(GetSpeedSearchText(), SelectedRow, true, true, true, true, +1);
                }
            }

            return false;
        }