summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConOut.c
AgeCommit message (Collapse)AuthorFilesLines
2025-09-01MdeModulePkg: Fix malformed terminal control sequencesJack Little1-14/+18
Commit 9224a2b91764ab17b2c1dbc9fdcb012eaed62da6 adds support for larger terminal dimensions; however, the ANSI control sequences to manipulate the terminal cursor are not built to accomodate terminal dimensions that are three digits long. For example, suppose we want to move the cursor 163 columns to the right. The required control sequence would be `^[[163C`; however, the existing code will create a control sequence of `^[[@3C` due to trying to add 16 to the character '0' instead of either 1 or 6. This fix adds a third digit to the sequence templates for moving the cursor forward, moving it backwards, and setting the cursor position. Signed-off-by: Jack Little <jack.tay.little@hpe.com>
2025-08-22MdeModulePkg: Improve the implementation of EFI_SIMPLE_TEXT_OUTPUT_PROTOCOLGao Qihang1-0/+8
Fix TestString() to be compatible with wide/narrow string in GraphicsConsole driver. If WIDE_CHAR or NARROW_CHAR is hit in TestString function, ignore it since OutputString function will correctly handle it. Fix OutputString() to skip wide/narrow char in TerminalDxe. Because they are not displayable in terminal emulation tool, ingore to output if they are hit in OutputString function. Signed-off-by: Gao Qihang <gaoqihang@loongson.cn>
2025-03-03MdeModulePkg/TerminalDxe: Support multiple modes for SetMode functionPhil Noh1-3/+26
When the terminal driver is active, currently terminals available through SetMode function are limited to mode 0 (80x25) despite multiple modes are configured as MaxMode value (e.g. 3 modes in mTerminalConsoleModeData list). Improve the function to support multiple modes based on the value. Additionally add more modes that match with the GraphicsConsoleDxe driver. This update is expected to help the symptom that the Setup or Shell screen becomes smaller due to the text mode. Signed-off-by: Phil Noh <Phil.Noh@amd.com>
2021-12-07MdeModulePkg: Apply uncrustify changesMichael Kubacki1-309/+295
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2021-12-07MdeModulePkg: Change OPTIONAL keyword usage styleMichael D Kinney1-1/+1
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3760 Update all use of ', OPTIONAL' to ' OPTIONAL,' for function params. Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael Kubacki <michael.kubacki@microsoft.com> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
2019-09-24MdeModulePkg/TerminalDxe: Extend the terminal console support typesZhichao Gao1-0/+4
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2186 Extend the support types of terminal console driver. New added types are Linux, XtermR6, VT400 and SCO. Refer to https://www.ssh.com/ssh/putty/putty-manuals/0.68/Chapter4.html#config-funkeys Add the missing VT100+ function keys map. Add F1-F12 function keys map for Linux, XtermR6, VT400 and SCO. Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Liming Gao <liming.gao@intel.com> Signed-off-by: Zhichao Gao <zhichao.gao@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
2019-04-09MdeModulePkg: Replace BSD License with BSD+Patent LicenseMichael D Kinney1-7/+1
https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
2018-06-28MdeModulePkg: Clean up source filesLiming Gao1-5/+5
1. Do not use tab characters 2. No trailing white space in one line 3. All files must end with CRLF Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2017-11-13MdeModulePkg/TerminalDxe: Fix PCANSI mapping for TRIANGLE and ARROWMichael D Kinney1-9/+9
https://bugzilla.tianocore.org/show_bug.cgi?id=761 When a TerminalType is set to PCANSI, characters in the range 0x00 to 0x1F are control characters. The mapping table for PCANSI maps TRIANGLE glyphs, ARROW_UP glyph, and ARROW_DOWN glyph into this control character range and that causes no characters to be displayed by PCANSI compatible terminal emulators. The mappings are updated so these glyphs are mapped to ANSI characters in the range 0x20 to 0x7E. GEOMETRICSHAPE_UP_TRIANGLE '^' GEOMETRICSHAPE_RIGHT_TRIANGLE '>' GEOMETRICSHAPE_DOWN_TRIANGLE 'v' GEOMETRICSHAPE_LEFT_TRIANGLE '<' ARROW_UP '^' ARROW_DOWN 'v' Cc: Star Zeng <star.zeng@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Ruiyu Ni <Ruiyu.ni@intel.com>
2017-01-11MdeModulePkg/TerminalDxe: Replace macro with enum for terminal typesRuiyu Ni1-14/+14
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Star Zeng <star.zeng@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-12-20MdeModulePkg/TerminalDxe: Initialize variable after declarationDandan Bi1-1/+3
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-10-27MdeModulePkg/TerminalDxe: Fix IA32 VS2015x86 build breakMichael Kinney1-3/+3
https://bugzilla.tianocore.org/show_bug.cgi?id=190 The issue is with signed/unsigned comparisons between Mode->CursorRow and Row and Mode->CursorColumn and Column. The fix is to add typecast to UINTN for comparisons. Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Brian Johnson <bjohnson@sgi.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Brian Johnson <bjohnson@sgi.com>
2016-10-27MdeModulePkg/TerminalDxe: Optimize TtyTerm cursor motionBrian J. Johnson1-5/+31
For TtyTerm terminals, output a shorter escape sequence when possible to move the cursor within the current line, and don't print any escape sequence if the cursor is already at the correct position. This removes extra cursor motion activity at the EFI shell prompt, improving performance. It also makes it possible in many cases to successfully use a terminal window which is taller than the driver's mode setting (eg. 80x25.) Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brian Johnson <bjohnson@sgi.com> Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Tested-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-10-27MdeModulePkg/TerminalDxe: Improve TtyTerm cursor position trackingBrian J. Johnson1-0/+25
When we print the last character on a line, the terminal driver wraps CursorRow/CursorColumn to the beginning of the next line. But the terminal itself doesn't wrap its cursor until the next character is printed. That throws off the driver's cursor position tracking. So when we have printed the last character on a line, and are not in the middle of outputing an escape sequence, synchronize the terminal with the driver by outputing CR+LF. This matches the expected behavior, and the behavior of the VGA console driver. Only change the behavior of TtyTerm, not the other terminal types. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brian Johnson <bjohnson@sgi.com> Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Tested-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Feng Tian <feng.tian@intel.com>
2015-07-09Add "TtyTerm" terminal type to TerminalDxeRoy Franz1-0/+2
This patch a adds new terminal type, TtyTerm, to TerminalDxe. This terminal type provides a place to add support for various *nix terminals that don't behave like standard VT terminals. The goal is to 'just work' with as many terminals as possible, rather than properly emulating any one specific terminal. Signed-off-by: Roy Franz <roy.franz@linaro.org> Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17895 6f19259b-4bc3-4df7-8a09-765794883524
2011-11-25Updated GraphicsConsole and Terminal driver text mode initialization routine ↵li-elvin1-31/+13
for easy mode extension in future. Signed-off-by: li-elvin Reviewed-by: hhtian git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12787 6f19259b-4bc3-4df7-8a09-765794883524
2011-03-23MdeModulePkg Terminal: Add text mode for PcdConOutColumn/Rowjljusten1-3/+13
Add a new text mode with a resolution of PcdConOutColumn x PcdConOutRow. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11416 6f19259b-4bc3-4df7-8a09-765794883524
2010-04-24Update the copyright notice formathhtian1-2/+2
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10418 6f19259b-4bc3-4df7-8a09-765794883524
2010-01-27Remove reference to PCDs of status code value. Use macros introduced in ↵xli241-4/+4
PI1.2 instead. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9833 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-27refine the code.vanjeff1-2/+3
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9203 6f19259b-4bc3-4df7-8a09-765794883524
2009-08-27Minor bugs fixes from testing on Xcode 3.2 and with the iPhone SDK 3.0 ↵AJFISH1-1/+1
compiler. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9202 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-13Roll back R8811 check in for it will get a double carriage return. gikidy1-10/+0
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8922 6f19259b-4bc3-4df7-8a09-765794883524
2009-07-08Fix OutputString() in the console driver does not auto-scroll when you fill ↵gikidy1-0/+10
up the screen like the graphics driver does. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8811 6f19259b-4bc3-4df7-8a09-765794883524
2009-01-081.Review the comments;gikidy1-22/+22
2.Modify the extension comment for INF file. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7207 6f19259b-4bc3-4df7-8a09-765794883524
2008-12-17Code scrub for Universal\Console\TerminalDxe. gikidy1-1/+1
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7066 6f19259b-4bc3-4df7-8a09-765794883524
2008-10-30Patch to remove STATIC modifier. This is on longer recommended by EFI ↵jji41-5/+5
Framework coding style. All duplicated symbols has been renamed accordingly. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6296 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-18code scrub.vanjeff1-8/+14
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5518 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-03Added some functions header.vanjeff1-8/+24
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5406 6f19259b-4bc3-4df7-8a09-765794883524
2008-07-01Clean codes per ECC for TerminalDxe module.vanjeff1-273/+158
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5389 6f19259b-4bc3-4df7-8a09-765794883524
2008-04-22[Description]eric_tian1-1/+10
add a judgement of whether the control command is equal with previous one or not. [Impaction] Judge if the control command is equaled with previous one. This handler can improve performance. [Reference Info] Currently the terminal driver outputs control commands upon user's request regardless of whether the new attribute is the same as previous one or not. Actually, it could be implemented as only outputting control command when the new Attribute is different than previous one git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5113 6f19259b-4bc3-4df7-8a09-765794883524
2008-04-10apply for doxgen format.vanjeff1-128/+121
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5038 6f19259b-4bc3-4df7-8a09-765794883524
2008-01-211. Sync the tracker for supporting the ModeNumber larger than 2.vanjeff1-6/+10
2. Fixed one bug in SetMode(), Cursor should not be enabled with mandatory. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4594 6f19259b-4bc3-4df7-8a09-765794883524
2008-01-171. Fixed bugs in DxeNetLib to meet consistence with network module ↵vanjeff1-10/+15
DriverBinding protocol. 2. Sync bugs in console modules. 3. Sync bugs in PlatDriOverLib. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4571 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-10Updated modules to not depend on the IntelFrameworkPkg.AJFISH1-10/+3
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3162 6f19259b-4bc3-4df7-8a09-765794883524
2007-07-05Check in following modules,xgu31-0/+1002
DxeIpl ConPlatform ConSplitter GraphicsConsole Terminal DevicePath git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3069 6f19259b-4bc3-4df7-8a09-765794883524