cpp-console-game/conio/conio.cpp
2024-07-04 16:57:11 -04:00

30 lines
654 B
C++

#include "conio.hpp"
#include <termios.h>
#include <unistd.h>
#include <iostream>
/**
* Get a character from the console without needing to press enter
*/
char conio::getch()
{
char c;
struct termios oldattr, newattr;
// Get the terminal settings
tcgetattr(STDIN_FILENO, &oldattr);
newattr = oldattr;
// Disable canonical mode and echo
newattr.c_lflag &= ~(ICANON | ECHO);
tcsetattr(STDIN_FILENO, TCSANOW, &newattr);
// Get the character, will not wait for enter because of the new settings
std::cin.get(c);
// Reset the terminal settings back to normal behaviour
tcsetattr(STDIN_FILENO, TCSANOW, &oldattr);
return c;
}