lfn
serial
ticket/834-toolchain-update
topic/msim-upgrade
topic/simplify-dev-export
Last change
on this file since 86018c1 was 7208b6c, checked in by Jakub Vana <jakub.vana@…>, 17 years ago |
Basic IA64 boot and kernel suport for real machines
|
-
Property mode
set to
100644
|
File size:
2.0 KB
|
Line | |
---|
1 | /*++
|
---|
2 |
|
---|
3 | Copyright (c) 1998 Intel Corporation
|
---|
4 |
|
---|
5 | Module Name:
|
---|
6 |
|
---|
7 | console.c
|
---|
8 |
|
---|
9 | Abstract:
|
---|
10 |
|
---|
11 |
|
---|
12 |
|
---|
13 |
|
---|
14 | Revision History
|
---|
15 |
|
---|
16 | --*/
|
---|
17 |
|
---|
18 | #include "lib.h"
|
---|
19 |
|
---|
20 |
|
---|
21 |
|
---|
22 | VOID
|
---|
23 | Output (
|
---|
24 | IN CHAR16 *Str
|
---|
25 | )
|
---|
26 | // Write a string to the console at the current cursor location
|
---|
27 | {
|
---|
28 | ST->ConOut->OutputString (ST->ConOut, Str);
|
---|
29 | }
|
---|
30 |
|
---|
31 |
|
---|
32 | VOID
|
---|
33 | Input (
|
---|
34 | IN CHAR16 *Prompt OPTIONAL,
|
---|
35 | OUT CHAR16 *InStr,
|
---|
36 | IN UINTN StrLen
|
---|
37 | )
|
---|
38 | // Input a string at the current cursor location, for StrLen
|
---|
39 | {
|
---|
40 | IInput (
|
---|
41 | ST->ConOut,
|
---|
42 | ST->ConIn,
|
---|
43 | Prompt,
|
---|
44 | InStr,
|
---|
45 | StrLen
|
---|
46 | );
|
---|
47 | }
|
---|
48 |
|
---|
49 | VOID
|
---|
50 | IInput (
|
---|
51 | IN SIMPLE_TEXT_OUTPUT_INTERFACE *ConOut,
|
---|
52 | IN SIMPLE_INPUT_INTERFACE *ConIn,
|
---|
53 | IN CHAR16 *Prompt OPTIONAL,
|
---|
54 | OUT CHAR16 *InStr,
|
---|
55 | IN UINTN StrLen
|
---|
56 | )
|
---|
57 | // Input a string at the current cursor location, for StrLen
|
---|
58 | {
|
---|
59 | EFI_INPUT_KEY Key;
|
---|
60 | EFI_STATUS Status;
|
---|
61 | UINTN Len;
|
---|
62 |
|
---|
63 | if (Prompt) {
|
---|
64 | ConOut->OutputString (ConOut, Prompt);
|
---|
65 | }
|
---|
66 |
|
---|
67 | Len = 0;
|
---|
68 | for (; ;) {
|
---|
69 | WaitForSingleEvent (ConIn->WaitForKey, 0);
|
---|
70 |
|
---|
71 | Status = ConIn->ReadKeyStroke(ConIn, &Key);
|
---|
72 | if (EFI_ERROR(Status)) {
|
---|
73 | DEBUG((D_ERROR, "Input: error return from ReadKey %x\n", Status));
|
---|
74 | break;
|
---|
75 | }
|
---|
76 |
|
---|
77 | if (Key.UnicodeChar == '\n' ||
|
---|
78 | Key.UnicodeChar == '\r') {
|
---|
79 | break;
|
---|
80 | }
|
---|
81 |
|
---|
82 | if (Key.UnicodeChar == '\b') {
|
---|
83 | if (Len) {
|
---|
84 | ConOut->OutputString(ConOut, L"\b \b");
|
---|
85 | Len -= 1;
|
---|
86 | }
|
---|
87 | continue;
|
---|
88 | }
|
---|
89 |
|
---|
90 | if (Key.UnicodeChar >= ' ') {
|
---|
91 | if (Len < StrLen-1) {
|
---|
92 | InStr[Len] = Key.UnicodeChar;
|
---|
93 |
|
---|
94 | InStr[Len+1] = 0;
|
---|
95 | ConOut->OutputString(ConOut, &InStr[Len]);
|
---|
96 |
|
---|
97 | Len += 1;
|
---|
98 | }
|
---|
99 | continue;
|
---|
100 | }
|
---|
101 | }
|
---|
102 |
|
---|
103 | InStr[Len] = 0;
|
---|
104 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.