int console_wait_for_key(void) { // wait for a key char buffer[3]; ssize_t bytesRead; do { bytesRead = sInput.ReadAt(NULL, 0, buffer, 3); if (bytesRead < 0) return 0; } while (bytesRead == 0); // translate the ESC sequences for cursor keys if (bytesRead == 3 && buffer[0] == 27 && buffer[1] == 91) { int key = translate_key(buffer[2]); if (key != 0) return key; } // put back unread chars if (bytesRead > 1) sInput.PutChars(buffer + 1, bytesRead - 1); return buffer[0]; }
void console_set_color(int32 foreground, int32 background) { char buff[] = "\033b \033c "; buff[2] += (char)translate_color(foreground); buff[5] += (char)translate_color(background); sInput.WriteAt(NULL, 0LL, buff, 6); }
void console_set_cursor(int32 x, int32 y) { char buff[] = "\033Y "; x = MIN(79,MAX(0,x)); y = MIN(24,MAX(0,y)); buff[3] += (char)x; buff[2] += (char)y; sInput.WriteAt(NULL, 0LL, buff, 4); }
status_t console_init(void) { sInput.SetHandle(DEV_CONSOLE); sOutput.SetHandle(DEV_CONSOLE); // now that we're initialized, enable stdio functionality stdin = (FILE *)&sInput; stdout = stderr = (FILE *)&sOutput; return B_OK; }
status_t console_init(void) { int input, output; if (of_getprop(gChosen, "stdin", &input, sizeof(int)) == OF_FAILED) return B_ERROR; if (of_getprop(gChosen, "stdout", &output, sizeof(int)) == OF_FAILED) return B_ERROR; sInput.SetHandle(input); sOutput.SetHandle(output); // now that we're initialized, enable stdio functionality stdin = (FILE *)&sInput; stdout = stderr = (FILE *)&sOutput; return B_OK; }
int console_wait_for_key(void) { #if 0 // XXX: do this way and remove keyboard.cpp ? // wait for a key char buffer[3]; ssize_t bytesRead; do { bytesRead = sInput.ReadAt(NULL, 0, buffer, 3); if (bytesRead < 0) return 0; } while (bytesRead == 0); #endif union key key = wait_for_key(); if (key.code.ascii == 0) { switch (key.code.bios) { case BIOS_KEY_UP: return TEXT_CONSOLE_KEY_UP; case BIOS_KEY_DOWN: return TEXT_CONSOLE_KEY_DOWN; case BIOS_KEY_PAGE_UP: return TEXT_CONSOLE_KEY_PAGE_UP; case BIOS_KEY_PAGE_DOWN: return TEXT_CONSOLE_KEY_PAGE_DOWN; case BIOS_KEY_HOME: return TEXT_CONSOLE_KEY_HOME; case BIOS_KEY_END: return TEXT_CONSOLE_KEY_END; default: return 0; } } else return key.code.ascii; }
void console_clear_screen(void) { sInput.WriteAt(NULL, 0LL, "\033E", 2); }