/* fhandler.h
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.
unsigned rarg;
bool saw_question_mark;
bool saw_greater_than_sign;
+ bool saw_space;
bool vt100_graphics_mode_G0;
bool vt100_graphics_mode_G1;
bool iso_2022_G1;
/* fhandler_console.cc
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.
}
dev_state.set_color (get_output_handle ());
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 'l':
if (!dev_state.saw_question_mark)
}
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 */
if (c == 'h') /* save */
{
__small_sprintf (buf, "\033[%d;%dR", y + 1, x + 1);
puts_readahead (buf);
break;
- default:
+ default:
goto bad_escape;
}
break;
dev_state.state_ = gotsquare;
dev_state.saw_question_mark = 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_++)
dev_state.args_[dev_state.nargs_] = 0;
dev_state.nargs_ = 0;
if (dev_state.nargs_ >= MAXARGS)
dev_state.nargs_--;
}
+ else if (*src == ' ')
+ {
+ src++;
+ dev_state.saw_space = true;
+ dev_state.state_ = gotcommand;
+ }
else
{
dev_state.state_ = gotcommand;