mirror of
https://github.com/ArthurSonzogni/FTXUI.git
synced 2025-12-16 01:48:56 +08:00
First version of supporting extraction of the terminal id.
This commit is contained in:
@@ -161,6 +161,11 @@ void TerminalInputParser::Send(TerminalInputParser::Output output) {
|
||||
out_->Send(Event::CursorShape(std::move(pending_), output.cursor_shape));
|
||||
pending_.clear();
|
||||
return;
|
||||
|
||||
case TERMINAL_ID:
|
||||
out_->Send(Event::TerminalID(std::move(pending_), output.terminal_id));
|
||||
pending_.clear();
|
||||
return;
|
||||
}
|
||||
// NOT_REACHED().
|
||||
}
|
||||
@@ -374,6 +379,8 @@ TerminalInputParser::Output TerminalInputParser::ParseCSI() {
|
||||
return ParseMouse(altered, false, std::move(arguments));
|
||||
case 'R':
|
||||
return ParseCursorPosition(std::move(arguments));
|
||||
case 'c':
|
||||
return ParseTerminalID(std::move(arguments));
|
||||
default:
|
||||
return SPECIAL;
|
||||
}
|
||||
@@ -461,4 +468,53 @@ TerminalInputParser::Output TerminalInputParser::ParseCursorPosition(
|
||||
return output;
|
||||
}
|
||||
|
||||
TerminalInputParser::Output TerminalInputParser::ParseTerminalID(
|
||||
std::vector<int> arguments)
|
||||
{
|
||||
Output output(TERMINAL_ID);
|
||||
|
||||
if (!arguments.empty())
|
||||
{
|
||||
switch(arguments[0])
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
output.terminal_id =
|
||||
TerminalID::URXVT;
|
||||
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
output.terminal_id =
|
||||
TerminalID::LINUXVC;
|
||||
|
||||
break;
|
||||
}
|
||||
case 62:
|
||||
{
|
||||
output.terminal_id =
|
||||
TerminalID::KONSOLE;
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
output.terminal_id =
|
||||
TerminalID::UNKNOWN;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
output.terminal_id =
|
||||
TerminalID::UNKNOWN;
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
} // namespace ftxui
|
||||
|
||||
Reference in New Issue
Block a user