## Summary of the Pull Request Make TerminalControl synthesize mouse events and Terminal send them to the TerminalInput's MouseInput module. The implementation here takes significant inspiration from how we handle KeyEvents. ## References Closes #545 - VT Mouse Mode (Terminal) References #376 - VT Mouse Mode (ConPty) ### TerminalControl - `_TrySendMouseEvent` attempts to send a mouse event via TermInput. Similar to `_TrySendKeyEvent` - Use the above function to try and send the mouse event _before_ deciding to modify the selection ### TerminalApi - Hookup (re)setting the various modes to handle VT Input - Terminal is _always_ in VT Input mode (important for #4856) ### TerminalDispatch - Hookup (re)setting the various modes to handle VT Input ### TerminalInput - Convert the mouse input position from viewport position to buffer position - Then send it over to the MouseInput in TerminalInput to actually do it (#4848) ## Validation Steps Performed Tests should still pass.
63 lines
3 KiB
C++
63 lines
3 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
#pragma once
|
|
|
|
#include "../../terminal/adapter/DispatchTypes.hpp"
|
|
|
|
namespace Microsoft::Terminal::Core
|
|
{
|
|
class ITerminalApi
|
|
{
|
|
public:
|
|
virtual ~ITerminalApi() {}
|
|
ITerminalApi(const ITerminalApi&) = default;
|
|
ITerminalApi(ITerminalApi&&) = default;
|
|
ITerminalApi& operator=(const ITerminalApi&) = default;
|
|
ITerminalApi& operator=(ITerminalApi&&) = default;
|
|
|
|
virtual bool PrintString(std::wstring_view string) noexcept = 0;
|
|
virtual bool ExecuteChar(wchar_t wch) noexcept = 0;
|
|
|
|
virtual bool SetTextToDefaults(bool foreground, bool background) noexcept = 0;
|
|
virtual bool SetTextForegroundIndex(BYTE colorIndex) noexcept = 0;
|
|
virtual bool SetTextBackgroundIndex(BYTE colorIndex) noexcept = 0;
|
|
virtual bool SetTextRgbColor(COLORREF color, bool foreground) noexcept = 0;
|
|
virtual bool BoldText(bool boldOn) noexcept = 0;
|
|
virtual bool UnderlineText(bool underlineOn) noexcept = 0;
|
|
virtual bool ReverseText(bool reversed) noexcept = 0;
|
|
|
|
virtual bool SetCursorPosition(short x, short y) noexcept = 0;
|
|
virtual COORD GetCursorPosition() noexcept = 0;
|
|
virtual bool CursorLineFeed(const bool withReturn) noexcept = 0;
|
|
|
|
virtual bool DeleteCharacter(const size_t count) noexcept = 0;
|
|
virtual bool InsertCharacter(const size_t count) noexcept = 0;
|
|
virtual bool EraseCharacters(const size_t numChars) noexcept = 0;
|
|
virtual bool EraseInLine(const ::Microsoft::Console::VirtualTerminal::DispatchTypes::EraseType eraseType) noexcept = 0;
|
|
virtual bool EraseInDisplay(const ::Microsoft::Console::VirtualTerminal::DispatchTypes::EraseType eraseType) noexcept = 0;
|
|
|
|
virtual bool SetWindowTitle(std::wstring_view title) noexcept = 0;
|
|
|
|
virtual bool SetColorTableEntry(const size_t tableIndex, const DWORD color) noexcept = 0;
|
|
|
|
virtual bool SetCursorStyle(const ::Microsoft::Console::VirtualTerminal::DispatchTypes::CursorStyle cursorStyle) noexcept = 0;
|
|
|
|
virtual bool SetDefaultForeground(const DWORD color) noexcept = 0;
|
|
virtual bool SetDefaultBackground(const DWORD color) noexcept = 0;
|
|
|
|
virtual bool SetCursorKeysMode(const bool applicationMode) noexcept = 0;
|
|
virtual bool SetKeypadMode(const bool applicationMode) noexcept = 0;
|
|
virtual bool EnableVT200MouseMode(const bool enabled) noexcept = 0;
|
|
virtual bool EnableUTF8ExtendedMouseMode(const bool enabled) noexcept = 0;
|
|
virtual bool EnableSGRExtendedMouseMode(const bool enabled) noexcept = 0;
|
|
virtual bool EnableButtonEventMouseMode(const bool enabled) noexcept = 0;
|
|
virtual bool EnableAnyEventMouseMode(const bool enabled) noexcept = 0;
|
|
virtual bool EnableAlternateScrollMode(const bool enabled) noexcept = 0;
|
|
|
|
virtual bool IsVtInputEnabled() const = 0;
|
|
|
|
protected:
|
|
ITerminalApi() = default;
|
|
};
|
|
}
|