More CSI, moving to faster drawing technique.
This commit is contained in:
parent
52e14322a3
commit
31e8e8432a
@ -116,21 +116,30 @@ int ssh_guac_client_key_handler(guac_client* client, int keysym, int pressed) {
|
||||
/* If key pressed */
|
||||
if (pressed) {
|
||||
|
||||
char data;
|
||||
|
||||
/* If simple ASCII key */
|
||||
if (keysym >= 0x00 && keysym <= 0xFF)
|
||||
data = (char) keysym;
|
||||
if (keysym >= 0x00 && keysym <= 0xFF) {
|
||||
char data = (char) keysym;
|
||||
return channel_write(client_data->term_channel, &data, 1);
|
||||
}
|
||||
|
||||
else if (keysym == 0xFF08) data = 0x08;
|
||||
else if (keysym == 0xFF09) data = 0x09;
|
||||
else if (keysym == 0xFF0D) data = 0x0D;
|
||||
else if (keysym == 0xFF1B) data = 0x1B;
|
||||
else {
|
||||
|
||||
else
|
||||
return 0;
|
||||
int length = 0;
|
||||
const char* data = NULL;
|
||||
|
||||
return channel_write(client_data->term_channel, &data, 1);
|
||||
if (keysym == 0xFF08) { data = "\x08"; length = 1; }
|
||||
else if (keysym == 0xFF09) { data = "\x09"; length = 1; }
|
||||
else if (keysym == 0xFF0D) { data = "\x0D"; length = 1; }
|
||||
else if (keysym == 0xFF1B) { data = "\x1B"; length = 1; }
|
||||
|
||||
/* Arrow keys */
|
||||
else if (keysym == 0xFF52) { data = "\x1B\x5B""A"; length = 3; }
|
||||
else if (keysym == 0xFF54) { data = "\x1B\x5B""B"; length = 3; }
|
||||
else if (keysym == 0xFF53) { data = "\x1B\x5B""C"; length = 3; }
|
||||
else if (keysym == 0xFF51) { data = "\x1B\x5B""D"; length = 3; }
|
||||
|
||||
return channel_write(client_data->term_channel, data, length);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -286,7 +286,7 @@ int ssh_guac_terminal_set(ssh_guac_terminal* term, int row, int col,
|
||||
}
|
||||
|
||||
/* Set background */
|
||||
guac_send_rect(io,
|
||||
/*guac_send_rect(io,
|
||||
GUAC_COMP_ROVER, GUAC_DEFAULT_LAYER,
|
||||
|
||||
term->char_width * col, term->char_height * row,
|
||||
@ -295,7 +295,7 @@ int ssh_guac_terminal_set(ssh_guac_terminal* term, int row, int col,
|
||||
background_color->red,
|
||||
background_color->green,
|
||||
background_color->blue,
|
||||
255);
|
||||
255);*/
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -451,6 +451,27 @@ int ssh_guac_terminal_csi(ssh_guac_terminal* term, char c) {
|
||||
|
||||
break;
|
||||
|
||||
/* @: 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)
|
||||
ssh_guac_terminal_copy(term,
|
||||
term->cursor_row, term->cursor_col,
|
||||
1, term->term_width - term->cursor_col - amount,
|
||||
term->cursor_row, term->cursor_col + amount);
|
||||
|
||||
/* Clear left */
|
||||
ssh_guac_terminal_clear(term,
|
||||
term->cursor_row, term->cursor_col,
|
||||
1, amount,
|
||||
term->background);
|
||||
|
||||
break;
|
||||
|
||||
/* Warn of unhandled codes */
|
||||
default:
|
||||
if (c != ';')
|
||||
|
Loading…
Reference in New Issue
Block a user