/* parc * Copyright (C) 2025 Ekaitz Zarraga * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /* * XTERM escape sequence reference: * https://invisible-island.net/xterm/ctlseqs/ctlseqs.html */ #include #define ESC '\x1b' const char CSI_LEAD[3] = { ESC, '[', '\0'}; void ui_cursor_move (int x, int y) { /* * Also valid with CSI;f being and line number and column * number respectively. In ttys, cursor starts at 1,1 */ printf ("%s%d;%dH", CSI_LEAD, y, x); fflush (stdout); } void ui_cursor_show (void) { printf ("%s?25h", CSI_LEAD); fflush (stdout); } void ui_cursor_hide (void) { printf ("%s?25l", CSI_LEAD); fflush (stdout); } void ui_screen_erase (void) { printf ("%s2J", CSI_LEAD); fflush (stdout); } void ui_alternate_buffer_enable (void) { printf ("%s?1049h", CSI_LEAD); fflush (stdout); } void ui_alternate_buffer_disable (void) { printf ("%s?1049l", CSI_LEAD); fflush (stdout); }