Commit 5046094b authored by Chris's avatar Chris
Browse files

refactor for where the termios import goes

parent 851bac90
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ char *menu_prompt(const menu_item *items, const unsigned int num_menu_items) {
	unsigned int hovered_selection_index = 0;
	// menu logic! TODO make this cross platform (play nice with Windows...)
	do {
		// return cursor to menu position
		// return cursor to menu top position
		for (int i = 0; i < num_menu_items; i++) {
			// todo to optimize, only do the erasure part if the hover selection changes
			printf("\033[A"); // move cursor up one line
+6 −0
Original line number Diff line number Diff line
@@ -5,11 +5,17 @@
#ifndef MENU_H
#define MENU_H

enum MENU_DIRECTION {
    DOWN,
    UP,
};

typedef struct {
    char *title;
    char *command;
} menu_item;

char *menu_prompt(const menu_item *items, unsigned int num_menu_items);
enum MENU_DIRECTION get_menu_direction(int selection);

#endif //MENU_H
+4 −9
Original line number Diff line number Diff line
@@ -5,14 +5,6 @@
#include <time.h> // timespec struct
#include "utils.h"

// terminal manipulation includes - only for non-windows
#ifndef _WIN32
#include <unistd.h> // for STDIN_FILENO, used with termios
#include <termios.h> // for registering raw keypresses, as in menus
#else
#include <conio.h>
#endif

void clear_screen(void) {
#ifndef _WIN32
    system("clear");
@@ -36,12 +28,15 @@ void set_raw_terminal_configuration(void) {
    raw_terminal_configuration = original_terminal_configuration;
    // new_terminal_configuration.c_lflag &= ~ICANON & ~ECHO & ~ISIG; // disables canonical input, echo, signals (we want signals but good to know)
    raw_terminal_configuration.c_lflag &= ~ICANON & ~ECHO; // disables canonical input, echo
    tcsetattr(STDIN_FILENO, TCSANOW, &raw_terminal_configuration); // apply settings to terminal
    // tcsetattr(STDIN_FILENO, TCSANOW, &raw_terminal_configuration); // apply settings to terminal
    set_terminal_configuration(&raw_terminal_configuration);
#endif
}

void set_original_terminal_configuration(void) {
#ifndef _WIN32
    // set_terminal_configuration(&original_terminal_configuration);
    // tcsetattr(STDIN_FILENO, TCSANOW, &original_terminal_configuration); // apply settings to terminal
    set_terminal_configuration(&original_terminal_configuration);
#endif
}
+8 −0
Original line number Diff line number Diff line
@@ -5,6 +5,14 @@
#ifndef UTILS_H
#define UTILS_H

// terminal manipulation includes - only for non-windows
#ifndef _WIN32
#include <unistd.h> // for STDIN_FILENO, used with termios
#include <termios.h> // for registering raw keypresses, as in menus
#else
#include <conio.h>
#endif

FILE *get_urandom(void);
void clear_screen(void);
void set_raw_terminal_configuration(void);