Alphabetize CSI handlers.
This commit is contained in:
parent
7894346285
commit
c1b0e3bb3b
@ -305,6 +305,24 @@ int guac_terminal_csi(guac_terminal* term, char c) {
|
|||||||
/* Handle CSI functions */
|
/* Handle CSI functions */
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
||||||
|
/* @: Insert characters (scroll right) */
|
||||||
|
case '@':
|
||||||
|
|
||||||
|
amount = argv[0];
|
||||||
|
if (amount == 0) amount = 1;
|
||||||
|
|
||||||
|
/* Scroll right by amount */
|
||||||
|
if (term->cursor_col + amount < term->term_width)
|
||||||
|
guac_terminal_copy_columns(term, term->cursor_row,
|
||||||
|
term->cursor_col, term->term_width - amount - 1,
|
||||||
|
amount);
|
||||||
|
|
||||||
|
/* Clear left */
|
||||||
|
guac_terminal_clear_columns(term, term->cursor_row,
|
||||||
|
term->cursor_col, term->cursor_col + amount - 1);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
/* A: Move up */
|
/* A: Move up */
|
||||||
case 'A':
|
case 'A':
|
||||||
|
|
||||||
@ -333,20 +351,6 @@ int guac_terminal_csi(guac_terminal* term, char c) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* D: Move left */
|
|
||||||
case 'D':
|
|
||||||
|
|
||||||
/* Get move amount */
|
|
||||||
amount = argv[0];
|
|
||||||
if (amount == 0) amount = 1;
|
|
||||||
|
|
||||||
/* Move cursor */
|
|
||||||
term->cursor_col -= amount;
|
|
||||||
if (term->cursor_col < 0)
|
|
||||||
term->cursor_col = 0;
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* C: Move right */
|
/* C: Move right */
|
||||||
case 'C':
|
case 'C':
|
||||||
|
|
||||||
@ -361,76 +365,18 @@ int guac_terminal_csi(guac_terminal* term, char c) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* m: Set graphics rendition */
|
/* D: Move left */
|
||||||
case 'm':
|
case 'D':
|
||||||
|
|
||||||
for (i=0; i<argc; i++) {
|
/* Get move amount */
|
||||||
|
amount = argv[0];
|
||||||
|
if (amount == 0) amount = 1;
|
||||||
|
|
||||||
int value = argv[i];
|
/* Move cursor */
|
||||||
|
term->cursor_col -= amount;
|
||||||
|
if (term->cursor_col < 0)
|
||||||
|
term->cursor_col = 0;
|
||||||
|
|
||||||
/* Reset attributes */
|
|
||||||
if (value == 0)
|
|
||||||
term->current_attributes = term->default_char.attributes;
|
|
||||||
|
|
||||||
/* Bold */
|
|
||||||
else if (value == 1)
|
|
||||||
term->current_attributes.bold = true;
|
|
||||||
|
|
||||||
/* Underscore on */
|
|
||||||
else if (value == 4)
|
|
||||||
term->current_attributes.underscore = true;
|
|
||||||
|
|
||||||
/* Foreground */
|
|
||||||
else if (value >= 30 && value <= 37)
|
|
||||||
term->current_attributes.foreground = value - 30;
|
|
||||||
|
|
||||||
/* Background */
|
|
||||||
else if (value >= 40 && value <= 47)
|
|
||||||
term->current_attributes.background = value - 40;
|
|
||||||
|
|
||||||
/* Underscore on, default foreground */
|
|
||||||
else if (value == 38) {
|
|
||||||
term->current_attributes.underscore = true;
|
|
||||||
term->current_attributes.foreground =
|
|
||||||
term->default_char.attributes.foreground;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Underscore off, default foreground */
|
|
||||||
else if (value == 39) {
|
|
||||||
term->current_attributes.underscore = false;
|
|
||||||
term->current_attributes.foreground =
|
|
||||||
term->default_char.attributes.foreground;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Reset background */
|
|
||||||
else if (value == 49)
|
|
||||||
term->current_attributes.background =
|
|
||||||
term->default_char.attributes.background;
|
|
||||||
|
|
||||||
/* Reverse video */
|
|
||||||
else if (value == 7)
|
|
||||||
term->current_attributes.reverse = true;
|
|
||||||
|
|
||||||
/* Reset underscore */
|
|
||||||
else if (value == 24)
|
|
||||||
term->current_attributes.underscore = false;
|
|
||||||
|
|
||||||
/* Reset reverse video */
|
|
||||||
else if (value == 27)
|
|
||||||
term->current_attributes.reverse = false;
|
|
||||||
|
|
||||||
else
|
|
||||||
guac_client_log_info(term->client,
|
|
||||||
"Unhandled graphics rendition: %i", value);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* r: Set scrolling region */
|
|
||||||
case 'r':
|
|
||||||
term->scroll_start = argv[0]-1;
|
|
||||||
term->scroll_end = argv[1]-1;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* H: Move cursor */
|
/* H: Move cursor */
|
||||||
@ -449,13 +395,6 @@ int guac_terminal_csi(guac_terminal* term, char c) {
|
|||||||
term->cursor_col = col;
|
term->cursor_col = col;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* d: Move cursor, current col */
|
|
||||||
case 'd':
|
|
||||||
row = argv[0]; if (row != 0) row--;
|
|
||||||
term->cursor_row = row;
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
|
||||||
/* J: Erase display */
|
/* J: Erase display */
|
||||||
case 'J':
|
case 'J':
|
||||||
|
|
||||||
@ -550,22 +489,83 @@ int guac_terminal_csi(guac_terminal* term, char c) {
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* @: Insert characters (scroll right) */
|
|
||||||
case '@':
|
|
||||||
|
|
||||||
amount = argv[0];
|
/* d: Move cursor, current col */
|
||||||
if (amount == 0) amount = 1;
|
case 'd':
|
||||||
|
row = argv[0]; if (row != 0) row--;
|
||||||
|
term->cursor_row = row;
|
||||||
|
break;
|
||||||
|
|
||||||
/* Scroll right by amount */
|
/* m: Set graphics rendition */
|
||||||
if (term->cursor_col + amount < term->term_width)
|
case 'm':
|
||||||
guac_terminal_copy_columns(term, term->cursor_row,
|
|
||||||
term->cursor_col, term->term_width - amount - 1,
|
|
||||||
amount);
|
|
||||||
|
|
||||||
/* Clear left */
|
for (i=0; i<argc; i++) {
|
||||||
guac_terminal_clear_columns(term, term->cursor_row,
|
|
||||||
term->cursor_col, term->cursor_col + amount - 1);
|
|
||||||
|
|
||||||
|
int value = argv[i];
|
||||||
|
|
||||||
|
/* Reset attributes */
|
||||||
|
if (value == 0)
|
||||||
|
term->current_attributes = term->default_char.attributes;
|
||||||
|
|
||||||
|
/* Bold */
|
||||||
|
else if (value == 1)
|
||||||
|
term->current_attributes.bold = true;
|
||||||
|
|
||||||
|
/* Underscore on */
|
||||||
|
else if (value == 4)
|
||||||
|
term->current_attributes.underscore = true;
|
||||||
|
|
||||||
|
/* Foreground */
|
||||||
|
else if (value >= 30 && value <= 37)
|
||||||
|
term->current_attributes.foreground = value - 30;
|
||||||
|
|
||||||
|
/* Background */
|
||||||
|
else if (value >= 40 && value <= 47)
|
||||||
|
term->current_attributes.background = value - 40;
|
||||||
|
|
||||||
|
/* Underscore on, default foreground */
|
||||||
|
else if (value == 38) {
|
||||||
|
term->current_attributes.underscore = true;
|
||||||
|
term->current_attributes.foreground =
|
||||||
|
term->default_char.attributes.foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Underscore off, default foreground */
|
||||||
|
else if (value == 39) {
|
||||||
|
term->current_attributes.underscore = false;
|
||||||
|
term->current_attributes.foreground =
|
||||||
|
term->default_char.attributes.foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset background */
|
||||||
|
else if (value == 49)
|
||||||
|
term->current_attributes.background =
|
||||||
|
term->default_char.attributes.background;
|
||||||
|
|
||||||
|
/* Reverse video */
|
||||||
|
else if (value == 7)
|
||||||
|
term->current_attributes.reverse = true;
|
||||||
|
|
||||||
|
/* Reset underscore */
|
||||||
|
else if (value == 24)
|
||||||
|
term->current_attributes.underscore = false;
|
||||||
|
|
||||||
|
/* Reset reverse video */
|
||||||
|
else if (value == 27)
|
||||||
|
term->current_attributes.reverse = false;
|
||||||
|
|
||||||
|
else
|
||||||
|
guac_client_log_info(term->client,
|
||||||
|
"Unhandled graphics rendition: %i", value);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* r: Set scrolling region */
|
||||||
|
case 'r':
|
||||||
|
term->scroll_start = argv[0]-1;
|
||||||
|
term->scroll_end = argv[1]-1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Warn of unhandled codes */
|
/* Warn of unhandled codes */
|
||||||
|
Loading…
Reference in New Issue
Block a user