X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=linux_usr%2Fv3_cons_sc.c;fp=linux_usr%2Fv3_cons_sc.c;h=9419804e1f225393926d0c84e763428ba116a683;hp=6d7e5229572d5dbcaf074c888ff0003af7057c37;hb=ea68fe042705986beaec92f33db0395b816c2e38;hpb=210c49c1f9b523ff94fd5b6791961d242d5bbae4 diff --git a/linux_usr/v3_cons_sc.c b/linux_usr/v3_cons_sc.c index 6d7e522..9419804 100644 --- a/linux_usr/v3_cons_sc.c +++ b/linux_usr/v3_cons_sc.c @@ -117,7 +117,9 @@ static int handle_char_set(struct character_msg * msg) { return -1; } + wattron(console.win, COLOR_PAIR(msg->style)); mvwaddch(console.win, msg->y, msg->x, c); + wattroff(console.win, COLOR_PAIR(msg->style)); } else { //stdout text display @@ -285,8 +287,8 @@ struct key_code { }; static const struct key_code ascii_to_key_code[] = { // ASCII Value Serves as Index - NO_KEY, NO_KEY, NO_KEY, NO_KEY, // 0x00 - 0x03 - NO_KEY, NO_KEY, NO_KEY, { 0x0E, 0 }, // 0x04 - 0x07 + NO_KEY, NO_KEY, {0x50, 0}, {0x48, 0}, // 0x00 - 0x03 + {0x4B, 0}, {0x4D, 0}, NO_KEY, { 0x0E, 0 }, // 0x04 - 0x07 { 0x0E, 0 }, { 0x0F, 0 }, { 0x1C, 0 }, NO_KEY, // 0x08 - 0x0B NO_KEY, { 0x1C, 0 }, NO_KEY, NO_KEY, // 0x0C - 0x0F NO_KEY, NO_KEY, NO_KEY, NO_KEY, // 0x10 - 0x13 @@ -397,6 +399,18 @@ int check_terminal_size (void) } + +static void +init_colors (void) +{ + start_color(); + int i; + for (i = 0; i < 0x100; i++) { + init_pair(i, i & 0xf, (i >> 4) & 0xf); + } +} + + int main(int argc, char* argv[]) { int vm_fd; int cons_fd; @@ -454,6 +468,7 @@ int main(int argc, char* argv[]) { scrollok(console.win, 1); erase(); + init_colors(); } /* @@ -508,32 +523,32 @@ int main(int argc, char* argv[]) { } } - if (FD_ISSET(STDIN_FILENO, &rset)) { - unsigned char key = getch(); - - if (key == '\\') { // ESC - break; - } else if (key == '`') { - unsigned char sc = 0x44; // F10 - writeit(cons_fd,sc); - sc |= 0x80; - writeit(cons_fd,sc); - } else if (key == '~') { // CTRL-C - unsigned char sc; - sc = 0x1d; // left ctrl down - writeit(cons_fd,sc); - sc = 0x2e; // c down - writeit(cons_fd,sc); - sc = 0x2e | 0x80; // c up - writeit(cons_fd,sc); - sc = 0x1d | 0x80; // left ctrl up - writeit(cons_fd,sc); - } else { - if (send_char_to_palacios_as_scancodes(cons_fd,key)) { - printf("Error sending key to console\n"); - return -1; - } - } + if (FD_ISSET(STDIN_FILENO, &rset)) { + unsigned char key = getch(); + + if (key == '\\') { // ESC + break; + } else if (key == '`') { + unsigned char sc = 0x44; // F10 + writeit(cons_fd,sc); + sc |= 0x80; + writeit(cons_fd,sc); + } else if (key == '~') { // CTRL-C + unsigned char sc; + sc = 0x1d; // left ctrl down + writeit(cons_fd,sc); + sc = 0x2e; // c down + writeit(cons_fd,sc); + sc = 0x2e | 0x80; // c up + writeit(cons_fd,sc); + sc = 0x1d | 0x80; // left ctrl up + writeit(cons_fd,sc); + } else { + if (send_char_to_palacios_as_scancodes(cons_fd,key)) { + printf("Error sending key to console\n"); + return -1; + } + } } }