summaryrefslogtreecommitdiffstats
path: root/include/input.hpp
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2022-06-22 17:41:59 -0400
committerJon Santmyer <jon@jonsantmyer.com>2022-06-22 17:41:59 -0400
commit5e3a2492c7bb73daa4e27398daaf490d09980ff3 (patch)
tree75178d823d596b6a898002c3f1d45b9ceede0e1e /include/input.hpp
downloadsystemviewer-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.hpp71
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