diff --git a/examples/main.cpp b/examples/main.cpp index 002e431..8ac6541 100644 --- a/examples/main.cpp +++ b/examples/main.cpp @@ -11,6 +11,7 @@ #include #include #include +#include // for Event, Event::Custom #include #include @@ -28,9 +29,21 @@ int main(int argc, char** argv) int selectedExample = 0; ftxui::MenuOption option; auto screen = ftxui::ScreenInteractive::TerminalOutput(); + screen.ForceHandleCtrlC(true); + //screen.ForceHandleCtrlZ(true); option.on_enter = screen.ExitLoopClosure(); auto menu = ftxui::Menu(&examples, &selectedExample, option); - + + menu |= ftxui::CatchEvent( + [&](ftxui::Event event) + { + if (event == ftxui::Event::CtrlC || event == ftxui::Event::CtrlZ) + { + screen.ExitLoopClosure()(); + exit(0); + } + return false; + }); screen.Loop(menu); if (selectedExample >= examples.size()) throw std::runtime_error("Invalid menu selection!");