summaryrefslogtreecommitdiff
path: root/src/kernel/ui/vt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/ui/vt.cpp')
-rw-r--r--src/kernel/ui/vt.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/kernel/ui/vt.cpp b/src/kernel/ui/vt.cpp
index 2869fec..2bd82ca 100644
--- a/src/kernel/ui/vt.cpp
+++ b/src/kernel/ui/vt.cpp
@@ -1,7 +1,7 @@
#include "vt.h"
#include <dev/display.h>
-vt *ke_vt = 0;
+vt *ke_vt = 0, *home_vt = 0;
vt::vt(node* parent, int ww, int hh) : node(parent, FT_TERMINAL) {
w = ww; h = hh;
@@ -9,6 +9,7 @@ vt::vt(node* parent, int ww, int hh) : node(parent, FT_TERMINAL) {
bgcolor = TC_BLACK;
output = 0;
cursor_visible = true;
+ csr_l = csr_c = 0;
kbd_buffer_filled = 0;
kbd_waiter = 0;
@@ -148,9 +149,18 @@ void vt::outputTo(display *display) {
}
}
}
+ output->text_setcsr(csr_l, csr_c, cursor_visible);
}
-void vt::keyboardInput(keypress kp) {
+void vt::keyboardInput(keypress kp, keyboard* from) {
+ if (kp.command == KB_RSUPER || kp.command == KB_LSUPER) {
+ if (this == home_vt) return;
+ // go to home terminal
+ home_vt->outputTo(output);
+ from->outputTo(home_vt);
+ output = 0;
+ return;
+ }
// convert to sequence of chars
int n = 0;
char b[8];