aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2021-12-01 19:31:29 +0300
committerJoursoir <chat@joursoir.net>2021-12-01 19:31:29 +0300
commitc106872dd21b8b229941a942f6a5e2d4a5b7b575 (patch)
treec3d6a116dc52f4764367441ddf242254fabcbd4d /Library
parent6a7926acb843acfe2949df68d9fe9f2ee8a73516 (diff)
downloadufm-c106872dd21b8b229941a942f6a5e2d4a5b7b575.tar.gz
ufm-c106872dd21b8b229941a942f6a5e2d4a5b7b575.tar.bz2
ufm-c106872dd21b8b229941a942f6a5e2d4a5b7b575.zip
tbi/win: support echoing input chars
Diffstat (limited to 'Library')
-rw-r--r--Library/UefiShellUfmCommandLib/tbi/win.c8
-rw-r--r--Library/UefiShellUfmCommandLib/tbi/win.h12
2 files changed, 20 insertions, 0 deletions
diff --git a/Library/UefiShellUfmCommandLib/tbi/win.c b/Library/UefiShellUfmCommandLib/tbi/win.c
index 1496808..55171da 100644
--- a/Library/UefiShellUfmCommandLib/tbi/win.c
+++ b/Library/UefiShellUfmCommandLib/tbi/win.c
@@ -58,6 +58,7 @@ struct window *newwin(struct screen *s,
win->width = ncols;
win->height = nlines;
win->cur_attr = s->attr;
+ win->echo = FALSE;
for(y = 0; y < nlines; y++) {
win->text[y] = AllocatePool((ncols + 1) * sizeof(CHAR16));
@@ -114,6 +115,13 @@ VOID wattroff(struct window *w)
w->cur_attr = w->scr->attr;
}
+VOID echo(struct window *w, BOOLEAN state)
+{
+ ASSERT(w != NULL);
+
+ w->echo = state;
+}
+
BOOLEAN wmove(struct window *w, INT32 x, INT32 y)
{
ASSERT(w != NULL);
diff --git a/Library/UefiShellUfmCommandLib/tbi/win.h b/Library/UefiShellUfmCommandLib/tbi/win.h
index 76be2d8..02822d4 100644
--- a/Library/UefiShellUfmCommandLib/tbi/win.h
+++ b/Library/UefiShellUfmCommandLib/tbi/win.h
@@ -29,6 +29,7 @@ struct window {
INT32 **attr;
INT32 cur_attr;
+ BOOLEAN echo;
};
/*
@@ -75,6 +76,17 @@ VOID wattrset(struct window *w, INT32 attr);
VOID wattroff(struct window *w);
/*
+ * Changes the echo state. Echoing is disabled by default.
+ *
+ * w: the window on which to operate
+ * state: TRUE if the echo should be activated. FALSE if the
+ * echo should be disabled
+ *
+ * return: VOID
+*/
+VOID echo(struct window *w, BOOLEAN state);
+
+/*
* Moves cursor position to specified coordinates
*
* w: the window on which to operate