diff --git a/repos/gems/run/cpu_sampler_noux.run b/repos/gems/run/cpu_sampler_noux.run index 6b6f4f96e..63566ed70 100644 --- a/repos/gems/run/cpu_sampler_noux.run +++ b/repos/gems/run/cpu_sampler_noux.run @@ -196,7 +196,7 @@ append config { - + diff --git a/repos/gems/run/sculpt/block_runtime.config b/repos/gems/run/sculpt/block_runtime.config index 81c5d282c..286465ba9 100644 --- a/repos/gems/run/sculpt/block_runtime.config +++ b/repos/gems/run/sculpt/block_runtime.config @@ -58,7 +58,7 @@ - + diff --git a/repos/gems/run/sculpt/default_noux_subinit.config b/repos/gems/run/sculpt/default_noux_subinit.config index 9e3ef65e3..f0124b5d6 100644 --- a/repos/gems/run/sculpt/default_noux_subinit.config +++ b/repos/gems/run/sculpt/default_noux_subinit.config @@ -43,7 +43,7 @@ - + diff --git a/repos/gems/run/sculpt/leitzentrale.config b/repos/gems/run/sculpt/leitzentrale.config index 4f193d125..23ef2eb9c 100644 --- a/repos/gems/run/sculpt/leitzentrale.config +++ b/repos/gems/run/sculpt/leitzentrale.config @@ -102,7 +102,7 @@ - + @@ -156,7 +156,7 @@ - + diff --git a/repos/gems/run/sculpt/load_runtime.config b/repos/gems/run/sculpt/load_runtime.config index 48d171d06..707d6f7f1 100644 --- a/repos/gems/run/sculpt/load_runtime.config +++ b/repos/gems/run/sculpt/load_runtime.config @@ -63,7 +63,7 @@ - + diff --git a/repos/gems/run/terminal_decoder.run b/repos/gems/run/terminal_decoder.run deleted file mode 100644 index 2e416cd07..000000000 --- a/repos/gems/run/terminal_decoder.run +++ /dev/null @@ -1,25 +0,0 @@ -build "core init test/terminal_decoder" - -create_boot_directory - -install_config { - - - - - - - - - - - - - -} - -build_boot_image "core ld.lib.so init test-terminal_decoder" - -run_genode_until "--- finished test ---" 10 - -puts "Test succeeded" diff --git a/repos/gems/run/terminal_mux.run b/repos/gems/run/terminal_mux.run index 5d07794c4..78e3199f3 100644 --- a/repos/gems/run/terminal_mux.run +++ b/repos/gems/run/terminal_mux.run @@ -80,7 +80,7 @@ append config { - + diff --git a/repos/gems/src/test/terminal_decoder/main.cc b/repos/gems/src/test/terminal_decoder/main.cc deleted file mode 100644 index 864b9b798..000000000 --- a/repos/gems/src/test/terminal_decoder/main.cc +++ /dev/null @@ -1,278 +0,0 @@ -/* - * \brief Test for decoding terminal input - * \author Norman Feske - * \date 2011-07-05 - */ - -/* - * Copyright (C) 2011-2017 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. - */ - -/* Genode includes */ -#include -#include -#include - -/* Terminal includes */ -#include - - -class Static_character_screen : public Terminal::Character_screen -{ - private: - - Terminal::Character_array &_char_array; - Terminal::Boundary _boundary; - Terminal::Position _cursor_pos; - - public: - - Static_character_screen(Terminal::Character_array &char_array) - : _char_array(char_array), _boundary(_char_array.boundary()) { } - - void dump() const; - - - /******************************** - ** Character_screen interface ** - ********************************/ - - void output(Terminal::Character c) - { - if (c.ascii() > 0x10) - _char_array.set(_cursor_pos, c); - _cursor_pos.x++; - if (_cursor_pos.x >= _boundary.width) { - _cursor_pos.x = 0; - _cursor_pos.y++; - } - if (_cursor_pos.y >= _boundary.height) { - _cursor_pos.y = _boundary.height - 1; - } - } - - void civis() - { - } - - void cnorm() - { - } - - void cvvis() - { - } - - void cpr() - { - } - - void csr(int, int) - { - } - - void cub(int) - { - } - - void cuf(int) - { - if (_cursor_pos.x >= _boundary.width) - _cursor_pos.x++; -// -// _cursor_pos = _cursor_pos + Terminal::Offset(1, 0); - } - - void cup(int y, int x) - { - using namespace Genode; - x = max(0, min(x, _boundary.width - 1)); - y = max(0, min(y, _boundary.height - 1)); - _cursor_pos = Terminal::Position(x, y); - } - - void cuu1() - { -// if (_cursor_pos.y > 0) -// _cursor_pos.y--; - } - - void dch(int) - { - } - - void dl(int) - { - } - - void ech(int) - { - } - - void ed() - { - } - - void el() - { - } - - void el1() - { - } - - void home() - { - _cursor_pos = Terminal::Position(0, 0); - } - - void hpa(int x) - { - } - - void hts() - { - } - - void ich(int) - { - } - - void il(int) - { - } - - void oc() - { - } - - void op() - { - } - - void rc() - { - } - - void ri() - { - } - - void ris() - { - } - - void rmam() - { - } - - void rmir() - { - } - - void setab(int) - { - } - - void setaf(int) - { - } - - void sgr(int) - { - } - - virtual void sgr0() - { - } - - void sc() - { - } - - void smam() - { - } - - void smir() - { - } - - void tbc() - { - } - - void u6(int, int) - { - } - - void u7() - { - } - - void u8() - { - } - - void u9() - { - } - - void vpa(int y) - { - } -}; - - -void Static_character_screen::dump() const -{ - using namespace Terminal; - - Genode::log("--- screen dump follows ---"); - - Boundary const boundary = _char_array.boundary(); - for (int y = 0; y < boundary.height; y++) { - - char line[boundary.width + 1]; - - for (int x = 0; x < boundary.width; x++) { - - Character c = _char_array.get(Position(x, y)); - if (c.valid()) - line[x] = c.ascii(); - else - line[x] = ' '; - } - - line[boundary.width] = 0; - Genode::log(Genode::Cstring(line)); - } - - Genode::log("--- end of screen dump ---"); -} - - -extern "C" char _binary_vim_vt_start; -extern "C" char _binary_vim_vt_end; - - -int main(int argc, char **argv) -{ - using namespace Terminal; - - Static_character_array<81, 26> char_array; - - Static_character_screen screen(char_array); - - Decoder decoder(screen); - for (char *c = &_binary_vim_vt_start; c < &_binary_vim_vt_end; c++) { - decoder.insert(*c); - } - - screen.dump(); - - return 0; -} diff --git a/repos/gems/src/test/terminal_decoder/target.mk b/repos/gems/src/test/terminal_decoder/target.mk deleted file mode 100644 index 8ea7f5318..000000000 --- a/repos/gems/src/test/terminal_decoder/target.mk +++ /dev/null @@ -1,6 +0,0 @@ -TARGET = test-terminal_decoder -SRC_CC = main.cc -SRC_BIN = vim.vt -LIBS = base - -CC_CXX_WARN_STRICT = diff --git a/repos/gems/src/test/terminal_decoder/vim.vt b/repos/gems/src/test/terminal_decoder/vim.vt deleted file mode 100644 index 3bbc6a66d..000000000 --- a/repos/gems/src/test/terminal_decoder/vim.vt +++ /dev/null @@ -1 +0,0 @@ -[?25h[?8c[?25h[?0c[?25l[?1c~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 0,0-1 AllVIM - Vi IMprovedversion 7.2.330by Bram Moolenaar et al.Vim is open source and freely distributableHelp poor children in Uganda!type :help iccf for information type :q to exit type :help or  for on-line helptype :help version7 for version info[?25h[?0c[?25l[?1c::[?25h[?0cq[?25l[?1c[?25h[?0c [?25l[?1c[?25h[?0c \ No newline at end of file diff --git a/repos/libports/ports/ncurses.hash b/repos/libports/ports/ncurses.hash index 204ce3b18..640aa449b 100644 --- a/repos/libports/ports/ncurses.hash +++ b/repos/libports/ports/ncurses.hash @@ -1 +1 @@ -e08f39cf745a5b9c8ac0cb8f4ffe7f7c74df5a46 +4f26912a3db5f084a3b6a2890b654e9fa1671c48 diff --git a/repos/libports/ports/ncurses.port b/repos/libports/ports/ncurses.port index 71b39f702..ff6083dc3 100644 --- a/repos/libports/ports/ncurses.port +++ b/repos/libports/ports/ncurses.port @@ -146,7 +146,7 @@ src/lib/ncurses/codes.c: src/lib/ncurses/fallback.c: $(ncurses_src_dir)/tinfo/MKfallback.sh @$(MSG_GENERATE)$@ - $(VERBOSE)sh -e $< x src/lib/ncurses/misc/terminfo.src tic linux vt102 > $@ 2> /dev/null + $(VERBOSE)sh -e $< x src/lib/ncurses/misc/terminfo.src tic screen vt102 > $@ 2> /dev/null $(VERBOSE)#sh -e $< /usr/share/terminfo $(ncurses_src_dir)/misc/terminfo.src /usr/bin/tic > $@ src/lib/ncurses/unctrl.c: diff --git a/repos/os/include/terminal/char_cell_array_character_screen.h b/repos/os/include/terminal/char_cell_array_character_screen.h index 55e84d393..1fc06bc16 100644 --- a/repos/os/include/terminal/char_cell_array_character_screen.h +++ b/repos/os/include/terminal/char_cell_array_character_screen.h @@ -114,21 +114,10 @@ class Char_cell_array_character_screen : public Terminal::Character_screen } }; - public: - - Char_cell_array_character_screen(Cell_array &char_cell_array) - : - _char_cell_array(char_cell_array), - _boundary(_char_cell_array.num_cols(), _char_cell_array.num_lines()), - _color_index(DEFAULT_COLOR_INDEX), - _inverse(false), - _highlight(false), - _cursor_visibility(CURSOR_VISIBLE), - _region_start(0), - _region_end(_boundary.height - 1), - _tab_size(DEFAULT_TAB_SIZE) - { } - + static void _missing(char const *method_name) + { + Genode::warning(method_name, " not implemented"); + } void _line_feed() { @@ -149,6 +138,21 @@ class Char_cell_array_character_screen : public Terminal::Character_screen _cursor_pos.x = 0; } + public: + + Char_cell_array_character_screen(Cell_array &char_cell_array) + : + _char_cell_array(char_cell_array), + _boundary(_char_cell_array.num_cols(), _char_cell_array.num_lines()), + _color_index(DEFAULT_COLOR_INDEX), + _inverse(false), + _highlight(false), + _cursor_visibility(CURSOR_VISIBLE), + _region_start(0), + _region_end(_boundary.height - 1), + _tab_size(DEFAULT_TAB_SIZE) + { } + /******************************** ** Character_screen interface ** @@ -204,24 +208,24 @@ class Char_cell_array_character_screen : public Terminal::Character_screen } } - void civis() + void cbt() override { _missing(__func__); } + + void civis() override { _cursor_visibility = CURSOR_INVISIBLE; } - void cnorm() + void cnorm() override { _cursor_visibility = CURSOR_VISIBLE; } - void cvvis() + void cvvis() override { _cursor_visibility = CURSOR_VERY_VISIBLE; } - void cpr() { Genode::warning(__func__, " not implemented"); } - - void csr(int start, int end) + void csr(int start, int end) override { /* the arguments are specified use coordinate origin (1, 1) */ start--; @@ -234,7 +238,7 @@ class Char_cell_array_character_screen : public Terminal::Character_screen _region_end = Genode::max(_region_end, _region_start); } - void cub(int dx) + void cub(int dx) override { Cursor_guard guard(*this); @@ -242,7 +246,7 @@ class Char_cell_array_character_screen : public Terminal::Character_screen _cursor_pos.x = Genode::max(0, _cursor_pos.x); } - void cuf(int dx) + void cuf(int dx) override { Cursor_guard guard(*this); @@ -250,7 +254,7 @@ class Char_cell_array_character_screen : public Terminal::Character_screen _cursor_pos.x = Genode::min(_boundary.width - 1, _cursor_pos.x); } - void cup(int y, int x) + void cup(int y, int x) override { Cursor_guard guard(*this); @@ -265,83 +269,47 @@ class Char_cell_array_character_screen : public Terminal::Character_screen _cursor_pos = Terminal::Position(x, y); } - void cuu1() { Genode::warning(__func__, " not implemented"); } - void dch(int) { Genode::warning(__func__, " not implemented"); } + void cud(int) override { _missing(__func__); } + void cuu1() override { _missing(__func__); } + void cuu(int) override { _missing(__func__); } + void dch(int) override { _missing(__func__); } - void dl(int num_lines) + void dl(int num_lines) override { /* delete number of lines */ for (int i = 0; i < num_lines; i++) _char_cell_array.scroll_up(_cursor_pos.y, _region_end); } - void ech(int v) - { - /* clear number of characters */ - - int x = _cursor_pos.x; - int y = _cursor_pos.y; - - while (v-- > 0) { - - _char_cell_array.set_cell(x, y, - Char_cell(' ', Font_face::REGULAR, - _color_index, _inverse, _highlight)); - - if (x == (_boundary.width - 1)) { - /* end of line reached */ - if (y < (_boundary.height - 1)) { - /* continue at beginning of next line */ - x = 0; - y++; - } else { - /* end of screen reached */ - return; - } - } else { - x++; - } - } - } - - void ed() + void ed() override { /* clear to end of screen */ el(); _char_cell_array.clear(_cursor_pos.y + 1, _boundary.height - 1); } - void el() + void el() override { /* clear to end of line */ for (int x = _cursor_pos.x; x < _boundary.width; x++) _char_cell_array.set_cell(x, _cursor_pos.y, Char_cell()); } - void el1() { Genode::warning(__func__, " not implemented"); } + void el1() override { _missing(__func__); } + void enacs() override { _missing(__func__); } + void flash() override { _missing(__func__); } - void home() + void home() override { Cursor_guard guard(*this); _cursor_pos = Terminal::Position(0, 0); } - void hpa(int x) - { - Cursor_guard guard(*this); + void hts() override { _missing(__func__); } + void ich(int) override { _missing(__func__); } - /* top-left cursor position is reported as (1, 1) */ - x--; - - using namespace Genode; - _cursor_pos.x = max(0, min(x, _boundary.width - 1)); - } - - void hts() { Genode::warning(__func__, " not implemented"); } - void ich(int) { Genode::warning(__func__, " not implemented"); } - - void il(int value) + void il(int value) override { Cursor_guard guard(*this); @@ -356,32 +324,33 @@ class Char_cell_array_character_screen : public Terminal::Character_screen _char_cell_array.cursor(_cursor_pos, true); } - void oc() { Genode::warning(__func__, " not implemented"); } + void is2() override { _missing(__func__); } + void nel() override { _missing(__func__); } - void op() + void op() override { _color_index = DEFAULT_COLOR_INDEX | (DEFAULT_COLOR_INDEX_BG << 3); } - void rc() { Genode::warning(__func__, " not implemented"); } - void ri() { Genode::warning(__func__, " not implemented"); } - void ris() { Genode::warning(__func__, " not implemented"); } - void rmam() { Genode::warning(__func__, " not implemented"); } - void rmir() { Genode::warning(__func__, " not implemented"); } + void rc() override { _missing(__func__); } + void rs2() override { _missing(__func__); } + void rmir() override { _missing(__func__); } + void rmcup() override { } + void rmkx() override { } - void setab(int value) + void setab(int value) override { _color_index &= ~0x38; /* clear 111000 */ _color_index |= (((value == 9) ? DEFAULT_COLOR_INDEX_BG : value) << 3); } - void setaf(int value) + void setaf(int value) override { _color_index &= ~0x7; /* clear 000111 */ _color_index |= (value == 9) ? DEFAULT_COLOR_INDEX : value; } - void sgr(int value) + void sgr(int value) override { switch (value) { case 0: @@ -401,30 +370,13 @@ class Char_cell_array_character_screen : public Terminal::Character_screen } } - void sgr0() - { - sgr(0); - } + void sgr0() override { sgr(0); } - void sc() { Genode::warning(__func__, " not implemented"); } - void smam() { Genode::warning(__func__, " not implemented"); } - void smir() { Genode::warning(__func__, " not implemented"); } - void tbc() { Genode::warning(__func__, " not implemented"); } - void u6(int, int) { Genode::warning(__func__, " not implemented"); } - void u7() { Genode::warning(__func__, " not implemented"); } - void u8() { Genode::warning(__func__, " not implemented"); } - void u9() { Genode::warning(__func__, " not implemented"); } - - void vpa(int y) - { - Cursor_guard guard(*this); - - /* top-left cursor position is reported as (1, 1) */ - y--; - - using namespace Genode; - _cursor_pos.y = max(0, min(y, _boundary.height - 1)); - } + void sc() override { _missing(__func__); } + void smcup() override { } + void smir() override { _missing(__func__); } + void smkx() override { } + void tbc() override { _missing(__func__); } }; #endif /* _TERMINAL__CHAR_CELL_ARRAY_CHARACTER_SCREEN_H_ */ diff --git a/repos/os/include/terminal/character_screen.h b/repos/os/include/terminal/character_screen.h index 3596399f3..c0a1c5f22 100644 --- a/repos/os/include/terminal/character_screen.h +++ b/repos/os/include/terminal/character_screen.h @@ -37,6 +37,11 @@ struct Terminal::Character_screen : Genode::Interface * thorough description of these commands. */ + /** + * Back tab + */ + virtual void cbt() = 0; + /** * Make cursor invisible */ @@ -52,11 +57,6 @@ struct Terminal::Character_screen : Genode::Interface */ virtual void cvvis() = 0; - /** - * Reset string - */ - virtual void cpr() = 0; - /** * Change region to line #1 ... line #2 */ @@ -77,11 +77,21 @@ struct Terminal::Character_screen : Genode::Interface */ virtual void cup(int, int) = 0; + /** + * Down #1 lines + */ + virtual void cud(int) = 0; + /** * Move cursor up one line */ virtual void cuu1() = 0; + /** + * Up #1 lines + */ + virtual void cuu(int) = 0; + /** * Delete #1 characters */ @@ -92,11 +102,6 @@ struct Terminal::Character_screen : Genode::Interface */ virtual void dl(int) = 0; - /** - * Erase #1 characters - */ - virtual void ech(int) = 0; - /** * Clear to end of screen */ @@ -112,16 +117,21 @@ struct Terminal::Character_screen : Genode::Interface */ virtual void el1() = 0; + /** + * Enable alternative character set + */ + virtual void enacs() = 0; + + /** + * Visible bell + */ + virtual void flash() = 0; + /** * Home cursor */ virtual void home() = 0; - /** - * Horizontal position #1 absolute - */ - virtual void hpa(int) = 0; - /** * Set a tab in every row, current column */ @@ -138,9 +148,14 @@ struct Terminal::Character_screen : Genode::Interface virtual void il(int) = 0; /** - * Set all color pairs to the original ones + * Initialization string */ - virtual void oc() = 0; + virtual void is2() = 0; + + /** + * Newline + */ + virtual void nel() = 0; /** * Set default pair to its original value @@ -152,26 +167,26 @@ struct Terminal::Character_screen : Genode::Interface */ virtual void rc() = 0; - /** - * Scroll text down - */ - virtual void ri() = 0; - /** * Reset string */ - virtual void ris() = 0; + virtual void rs2() = 0; /** - * Turn off automatic margins + * Leave cup mode */ - virtual void rmam() = 0; + virtual void rmcup() = 0; /** * Exit insert mode */ virtual void rmir() = 0; + /** + * Exit keyboard transmission mode + */ + virtual void rmkx() = 0; + /** * Set background color to #1, using ANSI escape */ @@ -198,32 +213,24 @@ struct Terminal::Character_screen : Genode::Interface virtual void sc() = 0; /** - * Turn on automatic margins + * Enter cup mode */ - virtual void smam() = 0; + 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; - - /** - * User strings - */ - virtual void u6(int, int) = 0; - virtual void u7() = 0; - virtual void u8() = 0; - virtual void u9() = 0; - - /** - * Vertical position #1 absolute) - */ - virtual void vpa(int) = 0; }; #endif /* _TERMINAL__CHARACTER_SCREEN_H_ */ diff --git a/repos/os/include/terminal/decoder.h b/repos/os/include/terminal/decoder.h index 6163be351..351e0834b 100644 --- a/repos/os/include/terminal/decoder.h +++ b/repos/os/include/terminal/decoder.h @@ -200,9 +200,13 @@ class Terminal::Decoder { switch (_escape_stack[0].value) { case '7': return (_screen.sc(), true); - case 'c': return (_screen.ris(), true); + case '8': return (_screen.rc(), true); + case 'E': return (_screen.nel(), true); case 'H': return (_screen.hts(), true); - case 'M': return (_screen.ri(), true); + case 'M': return (_screen.cuu1(), true); + case '=': return true; /* follows 'smkx' */ + case '>': return true; /* follows 'rmkx' */ + case 'c': return true; /* prefixes 'rs2' */ default: return false; } } @@ -214,32 +218,21 @@ class Terminal::Decoder case '[': switch (_escape_stack[1].value) { - case 'A': return (_screen.cuu1(), true); case 'C': return (_screen.cuf(1), true); - case 'c': return (_screen.u9(), true); case 'H': return (_screen.home(), true); case 'J': return (_screen.ed(), true); case 'K': return (_screen.el(), true); case 'L': return (_screen.il(1), true); case 'M': return (_screen.dl(1), true); case 'P': return (_screen.dch(1), true); - case '@': return (_screen.ich(1), true); - case 'R': return (_screen.cpr(), true); + case 'Z': return (_screen.cbt(), true); case 'm': return (_screen.sgr0(), true); default: return false; } break; - case ']': - - switch (_escape_stack[1].value) { - case 'R': return (_screen.oc(), true); - default : return false; - } - - case 8: - - return (_escape_stack[1].value == 'A') && (_screen.rc(), true); + case ')': + return (_escape_stack[1].value == 0) && (_screen.is2(), true); default: return false; } @@ -262,19 +255,19 @@ class Terminal::Decoder switch (command) { case 'm': return _sgr(p1); case 'D': return (_screen.cub(p1), true); - case 'd': return (_screen.vpa(p1), true); + case 'A': return (_screen.cuu(p1), true); + case 'B': return (_screen.cud(p1), true); case 'g': return (p1 == 3) && (_screen.tbc(), true); - case 'G': return (_screen.hpa(p1), true); - case 'h': return (p1 == 4) && (_screen.smir(), true); - case 'K': return ((p1 == 0) && (_screen.el(), true)) - || ((p1 == 1) && (_screen.el1(), true)); - case 'l': return (p1 == 4) && (_screen.rmir(), true); + case 'h': return ((p1 == 4) && (_screen.smir(), true)) + || ((p1 == 34) && (_screen.cnorm(), true)); + case 'K': return ((p1 == 0) && (_screen.el(), true)) + || ((p1 == 1) && (_screen.el1(), true)); + case 'l': return ((p1 == 4) && (_screen.rmir(), true)) + || ((p1 == 34) && (_screen.cvvis(), true)); case 'L': return (_screen.il(p1), true); case 'M': return (_screen.dl(p1), true); - case 'n': return (p1 == 6) && (_screen.u7(), true); case 'P': return (_screen.dch(p1), true); case '@': return (_screen.ich(p1), true); - case 'X': return (_screen.ech(p1), true); case 'C': return (_screen.cuf(p1), true); default: return false; @@ -297,8 +290,10 @@ class Terminal::Decoder switch (command) { case 'l': - if (p1 == 7) return (_screen.rmam(), true); + if (p1 == 1) return (_screen.rmkx(), true); if (p1 == 25) return (_screen.civis(), true); + if (p1 == 1000) return (_screen.rs2(), true); + if (p1 == 1049) return (_screen.rmcup(), true); if (p1 == 2004) { /* disable bracketed paste */ Genode::warning("Sequence '[?2004l' is not implemented"); @@ -306,20 +301,15 @@ class Terminal::Decoder } return false; case 'h': - if (p1 == 7) return (_screen.smam(), true); + if (p1 == 1) return (_screen.smkx(), true); if (p1 == 25) return (_screen.cnorm(), true); + if (p1 == 1049) return (_screen.smcup(), true); if (p1 == 2004) { /* enable bracketed paste */ Genode::warning("Sequence '[?2004h' is not implemented"); return true; } return false; - case 'c': - if (p1 == 0) return true; /* appended to cnorm */ - if (p1 == 1) return true; /* appended to civis */ - if (p1 == 6) return (_screen.u8(), true); - if (p1 == 8) return (_screen.cvvis(), true); - return false; default: return false; } } @@ -345,6 +335,9 @@ class Terminal::Decoder case 'H': return (_screen.cup(p[0], p[1]), true); case 'm': + if (p[0] == 39 && p[1] == 49) + return (_screen.op(), true); + for (int i = 0; i < 2; i++) if (!_sgr(p[i])) Genode::warning("Number ", p[i], @@ -354,7 +347,6 @@ class Terminal::Decoder return true; - case 'R': return (_screen.u6(p[0], p[1]), true); default: return false; } } diff --git a/repos/os/include/terminal/scancode_tracker.h b/repos/os/include/terminal/scancode_tracker.h index 833fc0404..998c39c3a 100644 --- a/repos/os/include/terminal/scancode_tracker.h +++ b/repos/os/include/terminal/scancode_tracker.h @@ -154,21 +154,21 @@ class Terminal::Scancode_tracker /* handle special key to be represented by an escape sequence */ if (!_last_character) { switch (keycode) { - case Input::KEY_DOWN: _last_sequence = "\E[B"; break; - case Input::KEY_UP: _last_sequence = "\E[A"; break; - case Input::KEY_RIGHT: _last_sequence = "\E[C"; break; - case Input::KEY_LEFT: _last_sequence = "\E[D"; break; + case Input::KEY_DOWN: _last_sequence = "\EOB"; break; + case Input::KEY_UP: _last_sequence = "\EOA"; break; + case Input::KEY_RIGHT: _last_sequence = "\EOC"; break; + case Input::KEY_LEFT: _last_sequence = "\EOD"; break; case Input::KEY_HOME: _last_sequence = "\E[1~"; break; case Input::KEY_INSERT: _last_sequence = "\E[2~"; break; case Input::KEY_DELETE: _last_sequence = "\E[3~"; break; case Input::KEY_END: _last_sequence = "\E[4~"; break; case Input::KEY_PAGEUP: _last_sequence = "\E[5~"; break; case Input::KEY_PAGEDOWN: _last_sequence = "\E[6~"; break; - case Input::KEY_F1: _last_sequence = "\E[[A"; break; - case Input::KEY_F2: _last_sequence = "\E[[B"; break; - case Input::KEY_F3: _last_sequence = "\E[[C"; break; - case Input::KEY_F4: _last_sequence = "\E[[D"; break; - case Input::KEY_F5: _last_sequence = "\E[[E"; break; + case Input::KEY_F1: _last_sequence = "\EOP"; break; + case Input::KEY_F2: _last_sequence = "\EOQ"; break; + case Input::KEY_F3: _last_sequence = "\EOR"; break; + case Input::KEY_F4: _last_sequence = "\EOS"; break; + case Input::KEY_F5: _last_sequence = "\E[15~"; break; case Input::KEY_F6: _last_sequence = "\E[17~"; break; case Input::KEY_F7: _last_sequence = "\E[18~"; break; case Input::KEY_F8: _last_sequence = "\E[19~"; break; diff --git a/repos/ports/recipes/raw/noux-system/init.config b/repos/ports/recipes/raw/noux-system/init.config index da1f160e4..91b3b4b0f 100644 --- a/repos/ports/recipes/raw/noux-system/init.config +++ b/repos/ports/recipes/raw/noux-system/init.config @@ -42,7 +42,7 @@ - + diff --git a/repos/ports/run/noux_bash.run b/repos/ports/run/noux_bash.run index e9be3d02d..4f8e96f36 100644 --- a/repos/ports/run/noux_bash.run +++ b/repos/ports/run/noux_bash.run @@ -125,7 +125,7 @@ Hello world !! - + diff --git a/repos/ports/run/noux_fs.run b/repos/ports/run/noux_fs.run index f75842511..eaad3d8cd 100644 --- a/repos/ports/run/noux_fs.run +++ b/repos/ports/run/noux_fs.run @@ -98,7 +98,7 @@ append config { - + diff --git a/repos/ports/run/noux_shell_script.run b/repos/ports/run/noux_shell_script.run index 6434cbb8b..cea8e6136 100644 --- a/repos/ports/run/noux_shell_script.run +++ b/repos/ports/run/noux_shell_script.run @@ -128,7 +128,7 @@ append config { - + diff --git a/repos/ports/run/noux_terminal_fs.run b/repos/ports/run/noux_terminal_fs.run index ed7e593d0..fd191cf8e 100644 --- a/repos/ports/run/noux_terminal_fs.run +++ b/repos/ports/run/noux_terminal_fs.run @@ -171,7 +171,7 @@ append config { - + diff --git a/repos/ports/run/noux_tool_chain_auto.run b/repos/ports/run/noux_tool_chain_auto.run index ca80fdaf4..0bc9de425 100644 --- a/repos/ports/run/noux_tool_chain_auto.run +++ b/repos/ports/run/noux_tool_chain_auto.run @@ -261,7 +261,7 @@ append config { - + diff --git a/repos/ports/run/noux_trace_fs.run b/repos/ports/run/noux_trace_fs.run index daf558a71..53138d3bb 100644 --- a/repos/ports/run/noux_trace_fs.run +++ b/repos/ports/run/noux_trace_fs.run @@ -175,7 +175,7 @@ append config { - + diff --git a/repos/ports/run/noux_two_terminal_fs.run b/repos/ports/run/noux_two_terminal_fs.run index 019bb5cfd..222b773ec 100644 --- a/repos/ports/run/noux_two_terminal_fs.run +++ b/repos/ports/run/noux_two_terminal_fs.run @@ -183,7 +183,7 @@ append config { - + @@ -205,7 +205,7 @@ append config { - + diff --git a/repos/ports/run/noux_vim.run b/repos/ports/run/noux_vim.run index d86788fa5..8d83a06a9 100644 --- a/repos/ports/run/noux_vim.run +++ b/repos/ports/run/noux_vim.run @@ -58,7 +58,7 @@ install_config { - + diff --git a/repos/ports/run/vbox_share.inc b/repos/ports/run/vbox_share.inc index c64209c2a..467a6f91a 100644 --- a/repos/ports/run/vbox_share.inc +++ b/repos/ports/run/vbox_share.inc @@ -152,7 +152,7 @@ set config_of_app { - +