terminal: change term caps from linux to screen

Fixes #2743
This commit is contained in:
Norman Feske 2018-04-03 16:46:04 +02:00 committed by Christian Helmuth
parent 92edcb17e5
commit 97317b0c95
26 changed files with 160 additions and 519 deletions

View File

@ -196,7 +196,7 @@ append config {
<dir name="share"> <dir name="vim"> <rom name="vimrc"/> </dir> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="HOME" value="/home" />
</start>
</config>

View File

@ -58,7 +58,7 @@
</dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="PS1" value="block:$PWD> " />
</start>
</config>

View File

@ -43,7 +43,7 @@
<dir name="share"> <dir name="vim"> <rom name="vimrc"/> </dir> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="PS1" value="noux:$PWD> " />
</start>
</config>

View File

@ -102,7 +102,7 @@
<dir name="report"> <fs label="report"/> </dir>
</fstab>
<start name="/bin/tail">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<arg value="-f"/>
<arg value="/report/log"/>
</start>
@ -156,7 +156,7 @@
<rom name="README"/>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="PS1" value="genode:$PWD> " />
</start>
</config>

View File

@ -63,7 +63,7 @@
<dir name="config"> <fs label="config"/> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="PS1" value="fs:$PWD> " />
<env name="HOME" value="/" />
<arg value="--login"/>

View File

@ -1,25 +0,0 @@
build "core init test/terminal_decoder"
create_boot_directory
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="LOG"/>
<service name="RM"/>
</parent-provides>
<default-route>
<any-service> <any-child/> <parent/> </any-service>
</default-route>
<start name="test-terminal_decoder">
<resource name="RAM" quantum="2M"/>
</start>
</config>
}
build_boot_image "core ld.lib.so init test-terminal_decoder"
run_genode_until "--- finished test ---" 10
puts "Test succeeded"

View File

@ -80,7 +80,7 @@ append config {
<config>
<fstab> <tar name="vim.tar" /> </fstab>
<start name="/bin/vim">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<!-- Deactivate the loading of plugins. Otherwise, vim will
attempt to use a sub shell for pattern matching -->

View File

@ -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 <base/log.h>
#include <util/misc_math.h>
#include <util/string.h>
/* Terminal includes */
#include <terminal/decoder.h>
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;
}

View File

@ -1,6 +0,0 @@
TARGET = test-terminal_decoder
SRC_CC = main.cc
SRC_BIN = vim.vt
LIBS = base
CC_CXX_WARN_STRICT =

View File

@ -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<Enter> for information type :q<Enter> to exit type :help<Enter> or <F1> for on-line helptype :help version7<Enter> for version info[?25h[?0c[?25l[?1c::[?25h[?0cq[?25l[?1c[?25h[?0c [?25l[?1c[?25h[?0c

View File

@ -1 +1 @@
e08f39cf745a5b9c8ac0cb8f4ffe7f7c74df5a46
4f26912a3db5f084a3b6a2890b654e9fa1671c48

View File

@ -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:

View File

@ -114,21 +114,10 @@ class Char_cell_array_character_screen : public Terminal::Character_screen
}
};
public:
Char_cell_array_character_screen(Cell_array<Char_cell> &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> &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_ */

View File

@ -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_ */

View File

@ -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;
}
}

View File

@ -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;

View File

@ -42,7 +42,7 @@
<dir name="share"> <dir name="vim"> <rom name="vimrc"/> </dir> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="PS1" value="noux:$PWD> " />
</start>
</config>

View File

@ -125,7 +125,7 @@ Hello world !!
</dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
</start>
</config>
</start>

View File

@ -98,7 +98,7 @@ append config {
<dir name="rw"> <fs/> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="PS1" value="fs:$PWD> " />
<env name="HOME" value="/" />
<arg value="--login"/>

View File

@ -128,7 +128,7 @@ append config {
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="HOME" value="/home" />
<arg value="--login" />
</start>

View File

@ -171,7 +171,7 @@ append config {
<dir name="dev"> <terminal name="terminal" label="terminal_fs" /> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
</start>
</config>
</start>

View File

@ -261,7 +261,7 @@ append config {
</dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="HOME" value="/home" />
<env name="PATH" value="/bin" />
<arg value="--login" />

View File

@ -175,7 +175,7 @@ append config {
<dir name="share"> <dir name="vim"> <rom name="vimrc"/> </dir> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<env name="HOME" value="/home" />
<arg value="--login" />
</start>

View File

@ -183,7 +183,7 @@ append config {
<dir name="dev"> <terminal name="terminal" label="terminal_fs" /> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
</start>
</config>
</start>
@ -205,7 +205,7 @@ append config {
<dir name="dev"> <terminal name="terminal" label="terminal_fs" /> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
</start>
</config>
</start>

View File

@ -58,7 +58,7 @@ install_config {
<config>
<fstab> <tar name="vim.tar" /> </fstab>
<start name="/bin/vim">
<env name="TERM" value="linux" />
<env name="TERM" value="screen" />
<!-- Deactivate the loading of plugins. Otherwise, vim will
attempt to use a sub shell for pattern matching -->

View File

@ -152,7 +152,7 @@ set config_of_app {
<dir name="to"> <fs label="share_to"/> </dir>
</fstab>
<start name="/bin/bash">
<env name="TERM" value="linux"/>
<env name="TERM" value="screen"/>
</start>
</config>
<route>