aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/line/mode.h1
-rw-r--r--src/line/mode.cc4
2 files changed, 5 insertions, 0 deletions
diff --git a/include/line/mode.h b/include/line/mode.h
index 85836c7..be0a453 100644
--- a/include/line/mode.h
+++ b/include/line/mode.h
@@ -9,6 +9,7 @@ namespace ov4
{
inline termios attr;
+inline bool raw_enabled = false;
void disable_raw();
void enable_raw();
diff --git a/src/line/mode.cc b/src/line/mode.cc
index 18c7347..2ef470d 100644
--- a/src/line/mode.cc
+++ b/src/line/mode.cc
@@ -14,11 +14,15 @@ namespace ov4
void disable_raw()
{
+ raw_enabled = false;
tcsetattr(STDIN_FILENO, TCSAFLUSH, &attr);
}
void enable_raw()
{
+ if (raw_enabled = false) return;
+
+ raw_enabled = true;
termios attr_raw;
tcgetattr(STDIN_FILENO, &attr);
tcgetattr(STDIN_FILENO, &attr_raw);