f32761849f
Adds support for `win32-input-mode` to conhost, conpty, and the Windows Terminal. * The shared `terminalInput` class supports sending these sequences when a VT client application requests this mode. * ConPTY supports synthesizing `INPUT_RECORD`s from the input sent to it from a terminal * ConPTY requests this mode immediately on startup (if started with a new flag, `PSEUDOCONSOLE_WIN32_INPUT_MODE`) * The Terminal now supports sending this input as well, when conpty asks for it. Also adds a new ConPTY flag `PSEUDOCONSOLE_WIN32_INPUT_MODE` which requests this functionality from conpty, and the Terminal requests this by default. Also adds `experimental.input.forceVT` as a global setting to let a user opt-out of this behavior, if they don't want it / this ends up breaking horribly. ## Validation Steps Performed * played with this mode in vtpipeterm * played with this mode in Terminal * checked a bunch of scenarios, as outlined in a [comment] on #4999 [comment]: https://github.com/microsoft/terminal/issues/4999#issuecomment-628718631 References #4999: The megathread References #5887: The spec Closes #879 Closes #2865 Closes #530 Closes #3079 Closes #1119 Closes #1694 Closes #3608 Closes #4334 Closes #4446
30 lines
898 B
C
30 lines
898 B
C
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
// This header prototypes the Pseudoconsole symbols from conpty.lib with their original names.
|
|
// This is required because we cannot import __imp_CreatePseudoConsole from a static library
|
|
// as it doesn't produce an import lib.
|
|
// We can't use an /ALTERNATENAME trick because it seems that that name is only resolved when the
|
|
// linker cannot otherwise find the symbol.
|
|
|
|
#pragma once
|
|
|
|
#include <consoleapi.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define PSEUDOCONSOLE_RESIZE_QUIRK (2u)
|
|
#define PSEUDOCONSOLE_WIN32_INPUT_MODE (4u)
|
|
|
|
HRESULT WINAPI ConptyCreatePseudoConsole(COORD size, HANDLE hInput, HANDLE hOutput, DWORD dwFlags, HPCON* phPC);
|
|
|
|
HRESULT WINAPI ConptyResizePseudoConsole(HPCON hPC, COORD size);
|
|
|
|
VOID WINAPI ConptyClosePseudoConsole(HPCON hPC);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|