11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
21PROMEKI_NAMESPACE_BEGIN
43 using ResizeCallback = Function<void(
int cols,
int rows)>;
84 Terminal(
int inputFd,
int outputFd);
89 Terminal(
const Terminal &) =
delete;
90 Terminal &operator=(
const Terminal &) =
delete;
93 int inputFd()
const {
return _inputFd; }
96 int outputFd()
const {
return _outputFd; }
102 Error enableRawMode();
108 Error disableRawMode();
111 bool isRawMode()
const {
return _rawMode; }
120 Result<int> readInput(
char *buf,
int maxLen);
128 Error windowSize(
int &cols,
int &rows)
const;
133 Size2Di32 size()
const;
139 Error enableMouseTracking();
145 Error disableMouseTracking();
148 bool isMouseTrackingEnabled()
const {
return _mouseTracking; }
154 Error enableBracketedPaste();
160 Error disableBracketedPaste();
166 Error enableAlternateScreen();
172 Error disableAlternateScreen();
178 void setResizeCallback(ResizeCallback cb);
186 void installSignalHandlers();
204 static ColorSupport colorSupport();
213 Result<int> writeOutput(
const char *data,
int len);
220 bool _rawMode =
false;
221 bool _mouseTracking =
false;
222 bool _bracketedPaste =
false;
223 bool _alternateScreen =
false;
224 ResizeCallback _resizeCallback;
228 void *_origState =
nullptr;