Пример #1
0
        public OutputService(
            ITerminalContainer terminalContainer,
            IKernel32Api kernel32Api,
            ILogger logger)
        {
            _terminalContainer = terminalContainer ?? throw new ArgumentNullException(nameof(terminalContainer));
            _kernel32Api       = kernel32Api ?? throw new ArgumentNullException(nameof(kernel32Api));
            _logger            = logger ?? throw new ArgumentNullException(nameof(logger));

            _tasks           = new Dictionary <ITerminal, Task>();
            _previousBuffers = new ConcurrentDictionary <ITerminal, CharInfo[]>();

            terminalContainer.ActiveTerminalChanged += TerminalContainer_ActiveTerminalChanged;
        }
Пример #2
0
        public InputService(
            ITerminalContainer terminalContainer,
            IKernel32Api kernel32Api,
            IWinTerMulConfiguration configuration,
            ITerminalFactory terminalFactory)
        {
            _terminalContainer = terminalContainer ?? throw new ArgumentNullException(nameof(terminalContainer));
            _kernel32Api       = kernel32Api ?? throw new ArgumentNullException(nameof(kernel32Api));
            _configuration     = configuration ?? throw new ArgumentNullException(nameof(configuration));
            _terminalFactory   = terminalFactory ?? throw new ArgumentNullException(nameof(terminalFactory));

            _prefixKeyWithoutCtrl             = _configuration.PrefixKey[2];
            _prefixKey                        = _prefixKeyWithoutCtrl - 'a' + 1;
            _charactersToIgnoreAfterPrefixKey = new[] { _prefixKey, _prefixKeyWithoutCtrl, 0 };

            _kernel32Api.TreatControlCAsInput();
        }