diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2022-06-22 17:41:59 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2022-06-22 17:41:59 -0400 |
commit | 5e3a2492c7bb73daa4e27398daaf490d09980ff3 (patch) | |
tree | 75178d823d596b6a898002c3f1d45b9ceede0e1e /include/input.hpp | |
download | systemviewer-5e3a2492c7bb73daa4e27398daaf490d09980ff3.tar.gz systemviewer-5e3a2492c7bb73daa4e27398daaf490d09980ff3.tar.bz2 systemviewer-5e3a2492c7bb73daa4e27398daaf490d09980ff3.zip |
Base system viewer with data loaded from csv files
Diffstat (limited to 'include/input.hpp')
-rw-r--r-- | include/input.hpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/include/input.hpp b/include/input.hpp new file mode 100644 index 0000000..ed5155c --- /dev/null +++ b/include/input.hpp @@ -0,0 +1,71 @@ +#ifndef INPUT_HPP +#define INPUT_HPP 1 + +namespace input +{ + +enum extkeys { + CTRL_RANGE_START = 256, + CTRL_KEY_ARROWUP = 321, + CTRL_KEY_ARROWDOWN, + CTRL_KEY_ARROWRIGHT, + CTRL_KEY_ARROWLEFT, + CTRL_KEY_END = 326, + CTRL_KEY_HOME = 328, + CTRL_KEY_PAGEUP, + CTRL_KEY_PAGEDOWN +}; + +#ifdef __unix__ +#include <termios.h> +#include <unistd.h> + +class Context +{ + struct termios m_termold; + struct termios m_termnow; +public: + Context() { + tcgetattr(STDIN_FILENO, &m_termold); + m_termnow = m_termold; + } + ~Context() { + tcsetattr(STDIN_FILENO, TCSADRAIN, &m_termold); + } + + void echo(bool mode) { + if(mode){ + m_termnow.c_lflag |= ECHO; + }else{ + m_termnow.c_lflag &= ~ECHO; + } + tcsetattr(STDIN_FILENO, TCSANOW, &m_termnow); + } + + void canon(bool mode) { + if(mode) { + m_termnow.c_lflag |= ICANON; + }else{ + m_termnow.c_lflag &= ~ICANON; + } + tcsetattr(STDIN_FILENO, TCSANOW, &m_termnow); + } + + void cbreak(bool mode) { + if(mode){ + m_termnow.c_cc[VMIN] = m_termold.c_cc[VMIN]; + m_termnow.c_cc[VTIME] = m_termold.c_cc[VTIME]; + }else{ + m_termnow.c_cc[VMIN] = 1; + m_termnow.c_cc[VTIME] = 0; + } + tcsetattr(STDIN_FILENO, TCSANOW, &m_termnow); + } +}; + +#endif + +extern int getcode(); +} + +#endif |