* fhandler.h (class dev_console): Flag for expanded control sequence.
* fhandler_console.cc (char_command): Supporting cursor style modes.
This commit is contained in:
parent
ab664763f0
commit
09707415eb
|
@ -1,3 +1,8 @@
|
||||||
|
2013-01-11 Thomas Wolff <towo@towo.net>
|
||||||
|
|
||||||
|
* fhandler.h (class dev_console): Flag for expanded control sequence.
|
||||||
|
* fhandler_console.cc (char_command): Supporting cursor style modes.
|
||||||
|
|
||||||
2013-01-10 Corinna Vinschen <corinna@vinschen.de>
|
2013-01-10 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* path.h (path_conv::fs_type): New method.
|
* path.h (path_conv::fs_type): New method.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* fhandler.h
|
/* fhandler.h
|
||||||
|
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
|
2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -1246,6 +1246,7 @@ class dev_console
|
||||||
unsigned rarg;
|
unsigned rarg;
|
||||||
bool saw_question_mark;
|
bool saw_question_mark;
|
||||||
bool saw_greater_than_sign;
|
bool saw_greater_than_sign;
|
||||||
|
bool saw_space;
|
||||||
bool vt100_graphics_mode_G0;
|
bool vt100_graphics_mode_G0;
|
||||||
bool vt100_graphics_mode_G1;
|
bool vt100_graphics_mode_G1;
|
||||||
bool iso_2022_G1;
|
bool iso_2022_G1;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* fhandler_console.cc
|
/* fhandler_console.cc
|
||||||
|
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
|
||||||
2006, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
|
2006, 2008, 2009, 2010, 2011, 2012, 2013 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -1510,6 +1510,31 @@ fhandler_console::char_command (char c)
|
||||||
}
|
}
|
||||||
dev_state.set_color (get_output_handle ());
|
dev_state.set_color (get_output_handle ());
|
||||||
break;
|
break;
|
||||||
|
case 'q': /* Set cursor style (DECSCUSR) */
|
||||||
|
if (dev_state.saw_space)
|
||||||
|
{
|
||||||
|
CONSOLE_CURSOR_INFO console_cursor_info;
|
||||||
|
GetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
|
||||||
|
switch (dev_state.args_[0])
|
||||||
|
{
|
||||||
|
case 0: /* blinking block */
|
||||||
|
case 1: /* blinking block (default) */
|
||||||
|
case 2: /* steady block */
|
||||||
|
console_cursor_info.dwSize = 100;
|
||||||
|
SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
|
||||||
|
break;
|
||||||
|
case 3: /* blinking underline */
|
||||||
|
case 4: /* steady underline */
|
||||||
|
console_cursor_info.dwSize = 10; /* or Windows default 25? */
|
||||||
|
SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
|
||||||
|
break;
|
||||||
|
default: /* use value as percentage */
|
||||||
|
console_cursor_info.dwSize = dev_state.args_[0];
|
||||||
|
SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
case 'l':
|
case 'l':
|
||||||
if (!dev_state.saw_question_mark)
|
if (!dev_state.saw_question_mark)
|
||||||
|
@ -1525,6 +1550,17 @@ fhandler_console::char_command (char c)
|
||||||
}
|
}
|
||||||
switch (dev_state.args_[0])
|
switch (dev_state.args_[0])
|
||||||
{
|
{
|
||||||
|
case 25: /* Show/Hide Cursor (DECTCEM) */
|
||||||
|
{
|
||||||
|
CONSOLE_CURSOR_INFO console_cursor_info;
|
||||||
|
GetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
|
||||||
|
if (c == 'h')
|
||||||
|
console_cursor_info.bVisible = TRUE;
|
||||||
|
else
|
||||||
|
console_cursor_info.bVisible = FALSE;
|
||||||
|
SetConsoleCursorInfo (get_output_handle (), & console_cursor_info);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case 47: /* Save/Restore screen */
|
case 47: /* Save/Restore screen */
|
||||||
if (c == 'h') /* save */
|
if (c == 'h') /* save */
|
||||||
{
|
{
|
||||||
|
@ -2026,6 +2062,7 @@ fhandler_console::write (const void *vsrc, size_t len)
|
||||||
dev_state.state_ = gotsquare;
|
dev_state.state_ = gotsquare;
|
||||||
dev_state.saw_question_mark = false;
|
dev_state.saw_question_mark = false;
|
||||||
dev_state.saw_greater_than_sign = false;
|
dev_state.saw_greater_than_sign = false;
|
||||||
|
dev_state.saw_space = false;
|
||||||
for (dev_state.nargs_ = 0; dev_state.nargs_ < MAXARGS; dev_state.nargs_++)
|
for (dev_state.nargs_ = 0; dev_state.nargs_ < MAXARGS; dev_state.nargs_++)
|
||||||
dev_state.args_[dev_state.nargs_] = 0;
|
dev_state.args_[dev_state.nargs_] = 0;
|
||||||
dev_state.nargs_ = 0;
|
dev_state.nargs_ = 0;
|
||||||
|
@ -2092,6 +2129,12 @@ fhandler_console::write (const void *vsrc, size_t len)
|
||||||
if (dev_state.nargs_ >= MAXARGS)
|
if (dev_state.nargs_ >= MAXARGS)
|
||||||
dev_state.nargs_--;
|
dev_state.nargs_--;
|
||||||
}
|
}
|
||||||
|
else if (*src == ' ')
|
||||||
|
{
|
||||||
|
src++;
|
||||||
|
dev_state.saw_space = true;
|
||||||
|
dev_state.state_ = gotcommand;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dev_state.state_ = gotcommand;
|
dev_state.state_ = gotcommand;
|
||||||
|
|
Loading…
Reference in New Issue