When DOS uses CodePage 437, 18 is an up arrow glyph.

A PC ANSI terminal interprets 18 as a control character.

Mike

> -----Original Message-----
> From: Ni, Ruiyu
> Sent: Tuesday, November 7, 2017 11:47 PM
> To: Kinney, Michael D <michael.d.kin...@intel.com>;
> edk2-devel@lists.01.org
> Cc: Dong, Eric <eric.d...@intel.com>; Zeng, Star
> <star.z...@intel.com>
> Subject: RE: [edk2] [Patch] MdeModulePkg/TerminalDxe:
> Fix PCANSI mapping for TRIANGLE and ARROW
> 
> Mike,
> I am a bit confused about mapping 0x18 to upper arrow.
> I remembered that in old days, pressing ALT+18 in DOS
> window can generate upper arrow.
> 
> Thanks/Ray
> 
> > -----Original Message-----
> > From: edk2-devel [mailto:edk2-devel-
> boun...@lists.01.org] On Behalf Of
> > Michael D Kinney
> > Sent: Wednesday, November 8, 2017 12:24 PM
> > To: edk2-devel@lists.01.org
> > Cc: Dong, Eric <eric.d...@intel.com>; Zeng, Star
> <star.z...@intel.com>
> > Subject: [edk2] [Patch] MdeModulePkg/TerminalDxe: Fix
> PCANSI mapping
> > for TRIANGLE and ARROW
> >
> > 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.z...@intel.com>
> > Cc: Eric Dong <eric.d...@intel.com>
> > Contributed-under: TianoCore Contribution Agreement
> 1.1
> > Signed-off-by: Michael D Kinney
> <michael.d.kin...@intel.com>
> > ---
> >  .../Universal/Console/TerminalDxe/TerminalConOut.c
> | 18 +++++++++----
> > -----
> >  1 file changed, 9 insertions(+), 9 deletions(-)
> >
> > diff --git
> >
> a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalCo
> nOut.c
> >
> b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalCo
> nOut.c
> > index e677a76e6b..5a8343162f 100644
> > ---
> a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalCo
> nOut.c
> > +++
> b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalCo
> nOut.c
> > @@ -66,15 +66,15 @@ UNICODE_TO_CHAR
> UnicodeToPcAnsiOrAscii[] = {
> >    { BLOCKELEMENT_FULL_BLOCK,            0xdb, L'*'
> },
> >    { BLOCKELEMENT_LIGHT_SHADE,           0xb0, L'+'
> },
> >
> > -  { GEOMETRICSHAPE_UP_TRIANGLE,         0x1e, L'^'
> },
> > -  { GEOMETRICSHAPE_RIGHT_TRIANGLE,      0x10, L'>'
> },
> > -  { GEOMETRICSHAPE_DOWN_TRIANGLE,       0x1f, L'v'
> },
> > -  { GEOMETRICSHAPE_LEFT_TRIANGLE,       0x11, L'<'
> },
> > -
> > -  { ARROW_LEFT,                         0x3c, L'<'
> },
> > -  { ARROW_UP,                           0x18, L'^'
> },
> > -  { ARROW_RIGHT,                        0x3e, L'>'
> },
> > -  { ARROW_DOWN,                         0x19, L'v'
> },
> > +  { GEOMETRICSHAPE_UP_TRIANGLE,         '^', L'^' },
> > +  { GEOMETRICSHAPE_RIGHT_TRIANGLE,      '>', L'>' },
> > +  { GEOMETRICSHAPE_DOWN_TRIANGLE,       'v', L'v' },
> > +  { GEOMETRICSHAPE_LEFT_TRIANGLE,       '<', L'<' },
> > +
> > +  { ARROW_LEFT,                         '<', L'<' },
> > +  { ARROW_UP,                           '^', L'^' },
> > +  { ARROW_RIGHT,                        '>', L'>' },
> > +  { ARROW_DOWN,                         'v', L'v' },
> >
> >    { 0x0000,                             0x00, L'\0'
> }
> >  };
> > --
> > 2.14.2.windows.3
> >
> > _______________________________________________
> > edk2-devel mailing list
> > edk2-devel@lists.01.org
> > https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to