diff options
Diffstat (limited to 'AmpelJonas/cInput.cpp')
-rw-r--r-- | AmpelJonas/cInput.cpp | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/AmpelJonas/cInput.cpp b/AmpelJonas/cInput.cpp deleted file mode 100644 index e0aa233..0000000 --- a/AmpelJonas/cInput.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include "cInput.h" - -cInput::cInput() -{ - // Save original serial communication configuration for stdin - tcgetattr( STDIN_FILENO, &original); - - // Put stdin in raw mode so keys get through directly without - // requiring pressing enter. - cfmakeraw (&raw); - tcsetattr (STDIN_FILENO, TCSANOW, &raw); - - // Switch to the alternate buffer screen - write (STDOUT_FILENO, "\e[?47h", 6); - - // Enable mouse tracking - write (STDOUT_FILENO, "\e[?9h", 5); -} - -cInput::~cInput() -{ - //revert changes to console - write (STDOUT_FILENO, "\e[?9l", 5); - write (STDOUT_FILENO, "\e[?47l", 6); - tcsetattr (STDIN_FILENO, TCSANOW, &original); -} - -sInputEvent cInput::poll() -{ - sInputEvent ret; - unsigned char buff [6]; - - //setup for select - fd_set rfds; - struct timeval tv; - FD_ZERO(&rfds); - FD_SET(STDIN_FILENO, &rfds); - tv.tv_sec = 0; - tv.tv_usec = 0; - - ret.type = _EVENT_NULL; - - //Check for Input. return of none - if(!select(1, &rfds, NULL, NULL, &tv)) - return ret; - - read (STDIN_FILENO, &buff, 1); - - if (buff[0] == '\x1B') //Escape sequence - { - read (STDIN_FILENO, &buff, 5); - if(buff[0] == '[') - { - if(buff[1] == 'M') //Mouse Event - { - ret.b = buff[2] - 32; - ret.x = buff[3] - 32; - ret.y = buff[4] - 32; - ret.type = _EVENT_MOUSE; - } - else //e.g. Arrow Keys - { - ret.c = buff[1]; - ret.type = _EVENT_KEY; - } - } - } - else - { - ret.type = _EVENT_CHAR; - ret.c = buff[0]; - } - return ret; -} |