> -----Original Message-----
> From: Ni, Ray
> Sent: Thursday, September 26, 2019 2:17 AM
> To: devel@edk2.groups.io; Gao, Zhichao <zhichao....@intel.com>
> Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>;
> Gao, Liming <liming....@intel.com>
> Subject: RE: [edk2-devel] [PATCH] MdeModulePkg/TerminalDxe: Enhance
> the arrow keys support
>
> Zhichao,
> The four new modes you newly added are supported by putty. But I do not
> think Putty is the standard the terminal driver needs to follow.
> So,
> 1. can you please remove the "putty" from the comments (maybe code)?
Unfortunately, the terminal type doesn't have a spec or document except Putty's
website. That's why I add it to the comment.
> 2. can you please find the sources where each mode is defined and double
> check whether the change you make is following the mode definition? It
> avoids you make Putty happy but make other good-behavior terminal
> software unhappy.
The normal mode and application mode the Putty's own mode for the cursor keys,
such as arrow keys. There are *no such modes* in the terminal driver. So I add
the patch to support them all.
The special keys usually send a sequence keys, such as ESC + [ + A, thru the
terminal ConIn. And it is terminal DXE driver's duty to recognize these
sequence keys and transfer the actual key value. Different terminal software
may have different sequence keys for the special keys, but It would be ignored
if we don't add the support.
The only affected thing is that if you input a sequence of keys quickly, such
as ESC + [ + A or ESC + O + A, thru the terminal software, then it would be
seen as arrow key 'UP' regardless of the terminal type. Same to other new arrow
keys.
I made a mistake in the previous patch to add the new terminal types. I remove
the VT100Plus's arrow key function incorrectly and that make the arrow key not
work with the terminal type VT100Plus. And then I think it is better to add the
whole support of arrow key.
Thanks,
Zhichao
>
> Thanks,
> Ray
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Gao,
> > Zhichao
> > Sent: Wednesday, September 25, 2019 5:09 AM
> > To: devel@edk2.groups.io
> > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A
> > <hao.a...@intel.com>; Ni, Ray <ray...@intel.com>; Gao, Liming
> > <liming....@intel.com>
> > Subject: [edk2-devel] [PATCH] MdeModulePkg/TerminalDxe: Enhance the
> > arrow keys support
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2219
> >
> > Refer to
> > https://www.ssh.com/ssh/putty/putty-
> manuals/0.68/Chapter4.html#config-
> > appcursor In normal mode, arrow key would send ESC [A through to ESC
> > [D.
> > In application mode, arrow key would send ESC OA through to ESC OD.
> >
> > Cc: Jian J Wang <jian.j.w...@intel.com>
> > Cc: Hao A Wu <hao.a...@intel.com>
> > Cc: Ray Ni <ray...@intel.com>
> > Cc: Liming Gao <liming....@intel.com>
> > Signed-off-by: Zhichao Gao <zhichao....@intel.com>
> > ---
> > .../Console/TerminalDxe/TerminalConIn.c | 46 ++++++++++++++++---
> > 1 file changed, 40 insertions(+), 6 deletions(-)
> >
> > diff --git
> > a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
> > b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
> > index ac31f27984..fdb1a0f1ef 100644
> > --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
> > +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
> > @@ -1402,10 +1402,7 @@ UnicodeToEfiKey (
> > continue;
> > }
> >
> > - if (UnicodeChar == 'O' && (TerminalDevice->TerminalType ==
> TerminalTypeVt100 ||
> > - TerminalDevice->TerminalType ==
> > TerminalTypeTtyTerm
> ||
> > - TerminalDevice->TerminalType ==
> > TerminalTypeXtermR6
> ||
> > - TerminalDevice->TerminalType ==
> TerminalTypeVt100Plus)) {
> > + if (UnicodeChar == 'O') {
> > TerminalDevice->InputState |= INPUT_STATE_O;
> > TerminalDevice->ResetState = RESET_STATE_DEFAULT;
> > continue;
> > @@ -1631,6 +1628,35 @@ UnicodeToEfiKey (
> > }
> > }
> >
> > + //
> > + // In Putty application mode, the arrow keys would send
> > + // ESC OA through to ESC OD
> > + //
> > + if (TerminalDevice->TerminalType == TerminalTypePcAnsi ||
> > + TerminalDevice->TerminalType == TerminalTypeVt100 ||
> > + TerminalDevice->TerminalType == TerminalTypeVt100Plus ||
> > + TerminalDevice->TerminalType == TerminalTypeVtUtf8 ||
> > + TerminalDevice->TerminalType == TerminalTypeTtyTerm ||
> > + TerminalDevice->TerminalType == TerminalTypeLinux ||
> > + TerminalDevice->TerminalType == TerminalTypeXtermR6 ||
> > + TerminalDevice->TerminalType == TerminalTypeVt400 ||
> > + TerminalDevice->TerminalType == TerminalTypeSCO) {
> > + switch (UnicodeChar) {
> > + case 'A':
> > + Key.ScanCode = SCAN_UP;
> > + break;
> > + case 'B':
> > + Key.ScanCode = SCAN_DOWN;
> > + break;
> > + case 'C':
> > + Key.ScanCode = SCAN_RIGHT;
> > + break;
> > + case 'D':
> > + Key.ScanCode = SCAN_LEFT;
> > + break;
> > + }
> > + }
> > +
> > if (Key.ScanCode != SCAN_NULL) {
> > Key.UnicodeChar = 0;
> > EfiKeyFiFoInsertOneKey (TerminalDevice, &Key); @@ -1668,10
> > +1694,18 @@ UnicodeToEfiKey (
> >
> > Key.ScanCode = SCAN_NULL;
> >
> > + //
> > + // In Putty normal mode, the arrow keys would send
> > + // ESC [A through to [D
> > + //
> > if (TerminalDevice->TerminalType == TerminalTypePcAnsi ||
> > TerminalDevice->TerminalType == TerminalTypeVt100 ||
> > - TerminalDevice->TerminalType == TerminalTypeVtUtf8 ||
> > - TerminalDevice->TerminalType == TerminalTypeTtyTerm ||
> > + TerminalDevice->TerminalType == TerminalTypeVt100Plus ||
> > + TerminalDevice->TerminalType == TerminalTypeVtUtf8 ||
> > + TerminalDevice->TerminalType == TerminalTypeTtyTerm ||
> > + TerminalDevice->TerminalType == TerminalTypeLinux ||
> > + TerminalDevice->TerminalType == TerminalTypeXtermR6 ||
> > + TerminalDevice->TerminalType == TerminalTypeVt400 ||
> > TerminalDevice->TerminalType == TerminalTypeSCO) {
> > switch (UnicodeChar) {
> > case 'A':
> > --
> > 2.21.0.windows.1
> >
> >
> >
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#48061): https://edk2.groups.io/g/devel/message/48061
Mute This Topic: https://groups.io/mt/34286845/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-