mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-27 17:18:53 +00:00
22327b43ae
Refactor the graphical terminal server to internally represent characters as 16-bit codepoints and handle the duplex terminal stream as UTF-8. - Make the Codepoint class printable to the Output interface - Decode data received at the Terminal session from UTF-8 to a 16-bit character - Pass 16-bit characters through terminal decoder and char-cell arrays - Send Unicode through terminal session in a burst of UTF-8 bytes Fix #3148
300 lines
4.5 KiB
C++
300 lines
4.5 KiB
C++
/*
|
|
* \brief Character-screen interface
|
|
* \author Norman Feske
|
|
* \date 2011-06-06
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2011-2019 Genode Labs GmbH
|
|
*
|
|
* This file is part of the Genode OS framework, which is distributed
|
|
* under the terms of the GNU Affero General Public License version 3.
|
|
*/
|
|
|
|
#ifndef _TERMINAL__CHARACTER_SCREEN_H_
|
|
#define _TERMINAL__CHARACTER_SCREEN_H_
|
|
|
|
#include <terminal/types.h>
|
|
|
|
namespace Terminal { struct Character_screen; }
|
|
|
|
|
|
/**
|
|
* Character-screen interface called by input-stream decoder
|
|
*/
|
|
struct Terminal::Character_screen : Genode::Interface
|
|
{
|
|
virtual void output(Character c) = 0;
|
|
|
|
/*******************
|
|
** VT Operations **
|
|
*******************/
|
|
|
|
/*
|
|
* The VT operations are named according to the command names used by
|
|
* their respective terminfo definitions. See 'man 5 terminfo' for a
|
|
* thorough description of these commands.
|
|
*/
|
|
|
|
/**
|
|
* Cursor Character Absolute - 8.3.9
|
|
*/
|
|
virtual void cha(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Make cursor invisible
|
|
*/
|
|
virtual void civis() = 0;
|
|
|
|
/**
|
|
* Make cursor normal
|
|
*/
|
|
virtual void cnorm() = 0;
|
|
|
|
/**
|
|
* Make cursor very visible
|
|
*/
|
|
virtual void cvvis() = 0;
|
|
|
|
/**
|
|
* Change region to line #1 ... line #2
|
|
*/
|
|
virtual void csr(int, int) = 0;
|
|
|
|
/**
|
|
* Move cursor backwards
|
|
*/
|
|
virtual void cub(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Cursor right - 8.3.20
|
|
*/
|
|
virtual void cuf(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Move cursor to row #1 column #2
|
|
*/
|
|
virtual void cup(int, int) = 0;
|
|
|
|
/**
|
|
* Cursor Down - 8.3.19
|
|
*/
|
|
virtual void cud(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Cursor Up - 8.3.22
|
|
*/
|
|
virtual void cuu(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Device Attributes - 8.3.24
|
|
*/
|
|
virtual void da(int ps = 0) = 0;
|
|
|
|
/**
|
|
* Delete Character - 8.3.26
|
|
*/
|
|
virtual void dch(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Delete line - 8.3.32
|
|
*/
|
|
virtual void dl(int pn = 1) = 0;
|
|
|
|
|
|
/**
|
|
* Erase Character - 8.3.38
|
|
*/
|
|
virtual void ech(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Erase in page - 8.3.39
|
|
*/
|
|
virtual void ed(int ps = 0) = 0;
|
|
|
|
/**
|
|
* Erase in line - 8.3.41
|
|
*/
|
|
virtual void el(int ps = 0) = 0;
|
|
|
|
/**
|
|
* Enable alternative character set
|
|
*/
|
|
virtual void enacs() = 0;
|
|
|
|
/**
|
|
* Visible bell
|
|
*/
|
|
virtual void flash() = 0;
|
|
|
|
/**
|
|
* Home cursor
|
|
*/
|
|
virtual void home() = 0;
|
|
|
|
/**
|
|
* Set a tab in every row, current column - 8.3.62
|
|
*/
|
|
virtual void hts() = 0;
|
|
|
|
/**
|
|
* Insert character - 8.3.64
|
|
*/
|
|
virtual void ich(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Insert line - 8.3.67
|
|
*/
|
|
virtual void il(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Initialization string
|
|
*/
|
|
virtual void is2() = 0;
|
|
|
|
/**
|
|
* Newline
|
|
*/
|
|
virtual void nel() = 0;
|
|
|
|
/**
|
|
* Set default pair to its original value
|
|
*/
|
|
virtual void op() = 0;
|
|
|
|
/**
|
|
* Restore cursor to position of last save_cursor
|
|
*/
|
|
virtual void rc() = 0;
|
|
|
|
/**
|
|
* Reset Mode - 8.3.106
|
|
*/
|
|
virtual void rm(int) = 0;
|
|
|
|
/**
|
|
* Reset string
|
|
*/
|
|
virtual void rs2() = 0;
|
|
|
|
/**
|
|
* Leave cup mode
|
|
*/
|
|
virtual void rmcup() = 0;
|
|
|
|
/**
|
|
* Exit insert mode
|
|
*/
|
|
virtual void rmir() = 0;
|
|
|
|
/**
|
|
* Exit keyboard transmission mode
|
|
*/
|
|
virtual void rmkx() = 0;
|
|
|
|
/**
|
|
* Scroll Down - 8.3.113
|
|
*/
|
|
virtual void sd(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Set background color to #1, using ANSI escape
|
|
*/
|
|
virtual void setab(int) = 0;
|
|
|
|
/**
|
|
* Set foreground color to #1, using ANSI escape
|
|
*/
|
|
virtual void setaf(int) = 0;
|
|
|
|
/**
|
|
* Select Graphic Rendition - 8.3.117
|
|
*/
|
|
virtual void sgr(int ps = 0) = 0;
|
|
|
|
/**
|
|
* Set mode 8.3.125
|
|
*/
|
|
virtual void sm(int) = 0;
|
|
|
|
/**
|
|
* Scroll Up - 8.3.147
|
|
*/
|
|
virtual void su(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Enter cup mode
|
|
*/
|
|
virtual void smcup() = 0;
|
|
|
|
/**
|
|
* Enter insert mode
|
|
*/
|
|
virtual void smir() = 0;
|
|
|
|
/**
|
|
* Enter keyboard transmission mode
|
|
*/
|
|
virtual void smkx() = 0;
|
|
|
|
/**
|
|
* Clear all tab stops
|
|
*/
|
|
virtual void tbc() = 0;
|
|
|
|
/**
|
|
* Tabulation Stop Remove - 8.3.156
|
|
*/
|
|
virtual void tsr(int) = 0;
|
|
|
|
/**
|
|
* Line position absolute - 8.3.158
|
|
*/
|
|
virtual void vpa(int pn = 1) = 0;
|
|
|
|
/**
|
|
* Line position backward - 8.3.159
|
|
*/
|
|
virtual void vpb(int pn = 1) = 0;
|
|
|
|
/*****************
|
|
** DEC private **
|
|
*****************/
|
|
|
|
/**
|
|
* Save Cursor
|
|
*/
|
|
virtual void decsc() = 0;
|
|
|
|
/**
|
|
* Restore Cursor
|
|
*/
|
|
virtual void decrc() = 0;
|
|
|
|
/**
|
|
* Set mode
|
|
*/
|
|
virtual void decsm(int p1, int p2 = 0) = 0;
|
|
|
|
/**
|
|
* Reset mode
|
|
*/
|
|
virtual void decrm(int p1, int p2 = 0) = 0;
|
|
|
|
|
|
/**************************
|
|
** Select Character Set **
|
|
**************************/
|
|
|
|
virtual void scs_g0(int) = 0;
|
|
virtual void scs_g1(int) = 0;
|
|
|
|
/*************
|
|
** Unknown **
|
|
*************/
|
|
|
|
virtual void reverse_index() = 0;
|
|
};
|
|
|
|
#endif /* _TERMINAL__CHARACTER_SCREEN_H_ */
|