From 0b670cd6b47b17f19dc9df2f0e43221d4c7e6738 Mon Sep 17 00:00:00 2001 From: jStmaX! <87650746+jstmaxlol@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:10:28 +0200 Subject: random utils in /usr/bin because dementia :e --- key.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 key.cpp (limited to 'key.cpp') diff --git a/key.cpp b/key.cpp new file mode 100644 index 0000000..cc3441b --- /dev/null +++ b/key.cpp @@ -0,0 +1,46 @@ +#include +#include +#include +#include + +char getch() { + struct termios oldt, newt; + char ch; + tcgetattr(STDIN_FILENO, &oldt); // Get the current terminal settings + newt = oldt; // Copy the settings + newt.c_lflag &= ~(ICANON | ECHO); // Disable canonical mode and echo + tcsetattr(STDIN_FILENO, TCSANOW, &newt); // Set the new settings + ch = getchar(); // Read a character + tcsetattr(STDIN_FILENO, TCSANOW, &oldt); // Restore the old settings + return ch; +} + +int main() { + std::cout << "Press " << red << "any key" << def << " to see its ASCII keycode. | Press " << red << "ESC" << def << " to exit." << std::endl; + + while (true) { + char ch = getch(); // Get a character from the user + + // Check for ESC key to exit + if (ch == 27) { // ASCII code for ESC + std::cout << "ESC = 27\n" << red << "Quitting ..\n" << def; + break; + } + + if (ch == 32) { + std::cout << "SPACEBAR = " << static_cast(ch) << std::endl; + } else if (ch == 9) { + std::cout << "TAB = " << static_cast(ch) << std::endl; + } else if (ch == 127) { + std::cout << "BACKSPACE = " << static_cast(ch) << std::endl; + } else if (ch == 10) { + std::cout << "ENTER = " << static_cast(ch) << std::endl; + } else { + // Output pressed key + std::cout << ch << " = " << static_cast(ch) << std::endl; + } + } + + return 0; +} + -- cgit v1.3.1