Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-28 Thread Andrew Fish
Big picture I think the goal is to not make the driver depend on the PCD 
protocol. A fixed at build PCD is just part of the build system, so not an 
issue.

Thanks,

Andrew Fish

> On Nov 28, 2017, at 9:55 AM, Brian J. Johnson  wrote:
> 
> On 11/24/2017 01:21 AM, Heyi Guo wrote:
>> Hi Brian,
>> 在 11/9/2017 12:00 AM, Brian J. Johnson 写道:
>>> On 11/08/2017 07:34 AM, Heyi Guo wrote:
 
 
 On 11/08/2017 05:07 PM, Gerd Hoffmann wrote:
> On Wed, Nov 08, 2017 at 04:44:37PM +0800, Heyi Guo wrote:
>> 
>> 在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:
>>> No.
>>> Even a terminal tool can recognize F10, it still needs to translate it 
>>> into "ESC [ V"
>>> and send the three bytes to firmware.
>> Got it. But the 2 seconds timeout is not for this situation, right? If
>> terminal tool could translate and send the key sequence, I think it can
>> complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 baud 
>> / 8
>> = 1200 Bytes/s (ignore control bits).
>> 
>> So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
>> manually?
> No.  Alot of software has this kind of delay because it is recommended
> in some classic unix documentation to avoid mis-interpreting incomplete
> terminal control sequences coming from slow terminals.
> 
> Where a "slow terminal" which actually would need such a long delay is a
> physical terminal from the 70ies of the last century, or a virtual
> terminal hooked up over a *really* slow network connection.
> 
> Reducing the delay from 2 seconds to roughly 0.2 seconds should be
> pretty safe, things are not that slow any more these days :)
 That will be great if we can make such change :)
 
>>> 
>>> You'd be surprised how much delay you can get with a few layers of 
>>> firewalls, VPNs, and cross-country (or intercontinental) WAN links. That's 
>>> the advantage of serial:  you can tunnel it anywhere.
>>> 
>>> Here's a quick workaround:  if you start typing other text after the ESC, 
>>> the terminal driver will see the new keystrokes and resolve the ESC 
>>> immediately, without the delay.  For instance, at the shell prompt, type 
>>> something, press ESC to clear the line, then just start typing new text 
>>> without waiting for the timeout. The line will be cleared and the new text 
>>> will appear correctly, without delay.
>>> 
>>> On setup screens, I usually hit escape to return to the previous screen, 
>>> then hit one of the arrow keys to cause the ESC to be processed without the 
>>> timeout.  That works pretty well in practice.
>>> 
>>> I'd think a PCD to control this delay would be appropriate, though.
>> Can we really use a PCD in TerminalDxe? I remember some experts in the 
>> community said that TerminalDxe is a pure UEFI driver; it can't use PCD 
>> since PCD is not defined in UEFI spec.
>> Thanks,
>> Gary (Heyi Guo)
> 
> Gary,
> 
> I'm not sure what the rules are for PCDs.  I'm just saying that if there's a 
> good way to make the delay configurable for each platform, I wouldn't be 
> against it.  2 seconds is a long time in some contexts.
> 
> -- 
> Brian J. Johnson
> Enterprise X86 Lab
> Hewlett Packard Enterprise
> brian.john...@hpe.com 
> 
> ___
> 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


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-28 Thread Brian J. Johnson

On 11/24/2017 01:21 AM, Heyi Guo wrote:

Hi Brian,


在 11/9/2017 12:00 AM, Brian J. Johnson 写道:

On 11/08/2017 07:34 AM, Heyi Guo wrote:



On 11/08/2017 05:07 PM, Gerd Hoffmann wrote:

On Wed, Nov 08, 2017 at 04:44:37PM +0800, Heyi Guo wrote:


在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:

No.
Even a terminal tool can recognize F10, it still needs to 
translate it into "ESC [ V"

and send the three bytes to firmware.

Got it. But the 2 seconds timeout is not for this situation, right? If
terminal tool could translate and send the key sequence, I think it 
can
complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 
baud / 8

= 1200 Bytes/s (ignore control bits).

So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
manually?

No.  Alot of software has this kind of delay because it is recommended
in some classic unix documentation to avoid mis-interpreting incomplete
terminal control sequences coming from slow terminals.

Where a "slow terminal" which actually would need such a long delay 
is a

physical terminal from the 70ies of the last century, or a virtual
terminal hooked up over a *really* slow network connection.

Reducing the delay from 2 seconds to roughly 0.2 seconds should be
pretty safe, things are not that slow any more these days :)

That will be great if we can make such change :)



You'd be surprised how much delay you can get with a few layers of 
firewalls, VPNs, and cross-country (or intercontinental) WAN links. 
That's the advantage of serial:  you can tunnel it anywhere.


Here's a quick workaround:  if you start typing other text after the 
ESC, the terminal driver will see the new keystrokes and resolve the 
ESC immediately, without the delay.  For instance, at the shell 
prompt, type something, press ESC to clear the line, then just start 
typing new text without waiting for the timeout. The line will be 
cleared and the new text will appear correctly, without delay.


On setup screens, I usually hit escape to return to the previous 
screen, then hit one of the arrow keys to cause the ESC to be 
processed without the timeout.  That works pretty well in practice.


I'd think a PCD to control this delay would be appropriate, though.


Can we really use a PCD in TerminalDxe? I remember some experts in the 
community said that TerminalDxe is a pure UEFI driver; it can't use PCD 
since PCD is not defined in UEFI spec.


Thanks,

Gary (Heyi Guo)



Gary,

I'm not sure what the rules are for PCDs.  I'm just saying that if 
there's a good way to make the delay configurable for each platform, I 
wouldn't be against it.  2 seconds is a long time in some contexts.


--
Brian J. Johnson
Enterprise X86 Lab
Hewlett Packard Enterprise
brian.john...@hpe.com

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-23 Thread Heyi Guo

Hi Brian,


在 11/9/2017 12:00 AM, Brian J. Johnson 写道:

On 11/08/2017 07:34 AM, Heyi Guo wrote:



On 11/08/2017 05:07 PM, Gerd Hoffmann wrote:

On Wed, Nov 08, 2017 at 04:44:37PM +0800, Heyi Guo wrote:


在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:

No.
Even a terminal tool can recognize F10, it still needs to 
translate it into "ESC [ V"

and send the three bytes to firmware.

Got it. But the 2 seconds timeout is not for this situation, right? If
terminal tool could translate and send the key sequence, I think it 
can
complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 
baud / 8

= 1200 Bytes/s (ignore control bits).

So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
manually?

No.  Alot of software has this kind of delay because it is recommended
in some classic unix documentation to avoid mis-interpreting incomplete
terminal control sequences coming from slow terminals.

Where a "slow terminal" which actually would need such a long delay 
is a

physical terminal from the 70ies of the last century, or a virtual
terminal hooked up over a *really* slow network connection.

Reducing the delay from 2 seconds to roughly 0.2 seconds should be
pretty safe, things are not that slow any more these days :)

That will be great if we can make such change :)



You'd be surprised how much delay you can get with a few layers of 
firewalls, VPNs, and cross-country (or intercontinental) WAN links. 
That's the advantage of serial:  you can tunnel it anywhere.


Here's a quick workaround:  if you start typing other text after the 
ESC, the terminal driver will see the new keystrokes and resolve the 
ESC immediately, without the delay.  For instance, at the shell 
prompt, type something, press ESC to clear the line, then just start 
typing new text without waiting for the timeout. The line will be 
cleared and the new text will appear correctly, without delay.


On setup screens, I usually hit escape to return to the previous 
screen, then hit one of the arrow keys to cause the ESC to be 
processed without the timeout.  That works pretty well in practice.


I'd think a PCD to control this delay would be appropriate, though.
Can we really use a PCD in TerminalDxe? I remember some experts in the 
community said that TerminalDxe is a pure UEFI driver; it can't use PCD 
since PCD is not defined in UEFI spec.


Thanks,

Gary (Heyi Guo)

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Brian J. Johnson

On 11/08/2017 07:34 AM, Heyi Guo wrote:



On 11/08/2017 05:07 PM, Gerd Hoffmann wrote:

On Wed, Nov 08, 2017 at 04:44:37PM +0800, Heyi Guo wrote:


在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:

No.
Even a terminal tool can recognize F10, it still needs to translate 
it into "ESC [ V"

and send the three bytes to firmware.

Got it. But the 2 seconds timeout is not for this situation, right? If
terminal tool could translate and send the key sequence, I think it can
complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 
baud / 8

= 1200 Bytes/s (ignore control bits).

So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
manually?

No.  Alot of software has this kind of delay because it is recommended
in some classic unix documentation to avoid mis-interpreting incomplete
terminal control sequences coming from slow terminals.

Where a "slow terminal" which actually would need such a long delay is a
physical terminal from the 70ies of the last century, or a virtual
terminal hooked up over a *really* slow network connection.

Reducing the delay from 2 seconds to roughly 0.2 seconds should be
pretty safe, things are not that slow any more these days :)

That will be great if we can make such change :)



You'd be surprised how much delay you can get with a few layers of 
firewalls, VPNs, and cross-country (or intercontinental) WAN links. 
That's the advantage of serial:  you can tunnel it anywhere.


Here's a quick workaround:  if you start typing other text after the 
ESC, the terminal driver will see the new keystrokes and resolve the ESC 
immediately, without the delay.  For instance, at the shell prompt, type 
something, press ESC to clear the line, then just start typing new text 
without waiting for the timeout.  The line will be cleared and the new 
text will appear correctly, without delay.


On setup screens, I usually hit escape to return to the previous screen, 
then hit one of the arrow keys to cause the ESC to be processed without 
the timeout.  That works pretty well in practice.


I'd think a PCD to control this delay would be appropriate, though.
--
Brian J. Johnson
Enterprise X86 Lab

Hewlett Packard Enterprise

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Heyi Guo



On 11/08/2017 05:07 PM, Gerd Hoffmann wrote:

On Wed, Nov 08, 2017 at 04:44:37PM +0800, Heyi Guo wrote:


在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:

No.
Even a terminal tool can recognize F10, it still needs to translate it into "ESC [ 
V"
and send the three bytes to firmware.

Got it. But the 2 seconds timeout is not for this situation, right? If
terminal tool could translate and send the key sequence, I think it can
complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 baud / 8
= 1200 Bytes/s (ignore control bits).

So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
manually?

No.  Alot of software has this kind of delay because it is recommended
in some classic unix documentation to avoid mis-interpreting incomplete
terminal control sequences coming from slow terminals.

Where a "slow terminal" which actually would need such a long delay is a
physical terminal from the 70ies of the last century, or a virtual
terminal hooked up over a *really* slow network connection.

Reducing the delay from 2 seconds to roughly 0.2 seconds should be
pretty safe, things are not that slow any more these days :)

That will be great if we can make such change :)

Thanks,

Heyi



HTH,
   Gerd



___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Gerd Hoffmann
On Wed, Nov 08, 2017 at 04:44:37PM +0800, Heyi Guo wrote:
> 
> 
> 在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:
> > No.
> > Even a terminal tool can recognize F10, it still needs to translate it into 
> > "ESC [ V"
> > and send the three bytes to firmware.
> Got it. But the 2 seconds timeout is not for this situation, right? If
> terminal tool could translate and send the key sequence, I think it can
> complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 baud / 8
> = 1200 Bytes/s (ignore control bits).
> 
> So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
> manually?

No.  Alot of software has this kind of delay because it is recommended
in some classic unix documentation to avoid mis-interpreting incomplete
terminal control sequences coming from slow terminals.

Where a "slow terminal" which actually would need such a long delay is a
physical terminal from the 70ies of the last century, or a virtual
terminal hooked up over a *really* slow network connection.

Reducing the delay from 2 seconds to roughly 0.2 seconds should be
pretty safe, things are not that slow any more these days :)

HTH,
  Gerd

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Heyi Guo

That makes sense. Thanks very much for your explanation.

Regards,

Heyi


在 11/8/2017 4:46 PM, Ni, Ruiyu 写道:

Yes. 2 seconds is for some other terminal tools, that cannot do the F10 
translation.

Thanks/Ray


-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org]
Sent: Wednesday, November 8, 2017 4:45 PM
To: Ni, Ruiyu ; Zeng, Star ; edk2-
de...@lists.01.org
Cc: Dong, Eric 
Subject: Re: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
being pressed?



在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:

No.
Even a terminal tool can recognize F10, it still needs to translate it into "ESC

[ V"

and send the three bytes to firmware.

Got it. But the 2 seconds timeout is not for this situation, right? If terminal
tool could translate and send the key sequence, I think it can complete 3
bytes transfer in a very short time, isn't it? E.g. 9600 baud / 8 = 1200 Bytes/s
(ignore control bits).

So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
manually?

Thanks,

Heyi


Thanks/Ray


-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org]
Sent: Wednesday, November 8, 2017 4:31 PM
To: Ni, Ruiyu ; Zeng, Star ;
edk2- de...@lists.01.org
Cc: Dong, Eric 
Subject: Re: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
being pressed?



在 11/8/2017 3:55 PM, Ni, Ruiyu 写道:

Heyi,

If you check the comments below in TerminalConIn.c:


https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal

/C

onsole/TerminalDxe/TerminalConIn.c#L1319

TerminalDxe driver needs to determine whether user wants to press
ESC alone, or press "ESC [ V" for F10 (PCANSI terminal).

Do you mean F10 is not directly supported on some terminal tools so
that we need to press 3 keys "ESC [ V" quickly and continuously to

emulate F10?

Thanks,

Heyi

So a 2 second timeout is added to wait additional keys.

Thanks/Ray


-Original Message-
From: Zeng, Star
Sent: Wednesday, November 8, 2017 3:25 PM
To: Heyi Guo ; edk2-devel@lists.01.org
Cc: Ni, Ruiyu ; Dong, Eric
; Zeng, Star 
Subject: RE: [MdeModulePkg/TerminalDxe] Why do we delay 2s for

ESC

being pressed?

Cc Terminal expert Ray to see if any comments on this.


Thanks,
Star
-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org]
Sent: Wednesday, November 8, 2017 3:04 PM
To: edk2-devel@lists.01.org
Cc: Zeng, Star ; Dong, Eric

Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC

being

pressed?

Hi folks,

We found ESC key responded fairly slow on serial port terminal, and
we think it might be caused by the code in UnicodeToEfiKey in

TerminalConIn.c:

    if (UnicodeChar == ESC) {
  TerminalDevice->InputState = INPUT_STATE_ESC;
    }

    if (UnicodeChar == CSI) {
  TerminalDevice->InputState = INPUT_STATE_CSI;
    }

    if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
  Status = gBS->SetTimer(
  TerminalDevice->TwoSecondTimeOut,
  TimerRelative,
  (UINT64)2000
  );
  ASSERT_EFI_ERROR (Status);
  continue;
    }

It seems we intentionally add 2 seconds delay for ESC key press.
This provides not so good user experience when we press ESC to exit
or cancel some operation.

We tried reducing this timeout value to 1 second, then the
experience improved much and we didn't find any issue introduced.

What's the reason for this timeout value and is there any improvement?

Thanks and regards,

Heyi


___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Ni, Ruiyu
Yes. 2 seconds is for some other terminal tools, that cannot do the F10 
translation.

Thanks/Ray

> -Original Message-
> From: Heyi Guo [mailto:heyi@linaro.org]
> Sent: Wednesday, November 8, 2017 4:45 PM
> To: Ni, Ruiyu ; Zeng, Star ; edk2-
> de...@lists.01.org
> Cc: Dong, Eric 
> Subject: Re: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> being pressed?
> 
> 
> 
> 在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:
> > No.
> > Even a terminal tool can recognize F10, it still needs to translate it into 
> > "ESC
> [ V"
> > and send the three bytes to firmware.
> Got it. But the 2 seconds timeout is not for this situation, right? If 
> terminal
> tool could translate and send the key sequence, I think it can complete 3
> bytes transfer in a very short time, isn't it? E.g. 9600 baud / 8 = 1200 
> Bytes/s
> (ignore control bits).
> 
> So 2 seconds timeout is still for user to enter the sequence "ESC [ V"
> manually?
> 
> Thanks,
> 
> Heyi
> 
> >
> > Thanks/Ray
> >
> >> -Original Message-
> >> From: Heyi Guo [mailto:heyi@linaro.org]
> >> Sent: Wednesday, November 8, 2017 4:31 PM
> >> To: Ni, Ruiyu ; Zeng, Star ;
> >> edk2- de...@lists.01.org
> >> Cc: Dong, Eric 
> >> Subject: Re: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> >> being pressed?
> >>
> >>
> >>
> >> 在 11/8/2017 3:55 PM, Ni, Ruiyu 写道:
> >>> Heyi,
> >>>
> >>> If you check the comments below in TerminalConIn.c:
> >>>
> >>
> https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal
> >> /C
> >>> onsole/TerminalDxe/TerminalConIn.c#L1319
> >>>
> >>> TerminalDxe driver needs to determine whether user wants to press
> >>> ESC alone, or press "ESC [ V" for F10 (PCANSI terminal).
> >> Do you mean F10 is not directly supported on some terminal tools so
> >> that we need to press 3 keys "ESC [ V" quickly and continuously to
> emulate F10?
> >>
> >> Thanks,
> >>
> >> Heyi
> >>> So a 2 second timeout is added to wait additional keys.
> >>>
> >>> Thanks/Ray
> >>>
>  -Original Message-
>  From: Zeng, Star
>  Sent: Wednesday, November 8, 2017 3:25 PM
>  To: Heyi Guo ; edk2-devel@lists.01.org
>  Cc: Ni, Ruiyu ; Dong, Eric
>  ; Zeng, Star 
>  Subject: RE: [MdeModulePkg/TerminalDxe] Why do we delay 2s for
> ESC
>  being pressed?
> 
>  Cc Terminal expert Ray to see if any comments on this.
> 
> 
>  Thanks,
>  Star
>  -Original Message-
>  From: Heyi Guo [mailto:heyi@linaro.org]
>  Sent: Wednesday, November 8, 2017 3:04 PM
>  To: edk2-devel@lists.01.org
>  Cc: Zeng, Star ; Dong, Eric
>  
>  Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> >> being
>  pressed?
> 
>  Hi folks,
> 
>  We found ESC key responded fairly slow on serial port terminal, and
>  we think it might be caused by the code in UnicodeToEfiKey in
> >> TerminalConIn.c:
>     if (UnicodeChar == ESC) {
>   TerminalDevice->InputState = INPUT_STATE_ESC;
>     }
> 
>     if (UnicodeChar == CSI) {
>   TerminalDevice->InputState = INPUT_STATE_CSI;
>     }
> 
>     if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
>   Status = gBS->SetTimer(
>   TerminalDevice->TwoSecondTimeOut,
>   TimerRelative,
>   (UINT64)2000
>   );
>   ASSERT_EFI_ERROR (Status);
>   continue;
>     }
> 
>  It seems we intentionally add 2 seconds delay for ESC key press.
>  This provides not so good user experience when we press ESC to exit
>  or cancel some operation.
> 
>  We tried reducing this timeout value to 1 second, then the
>  experience improved much and we didn't find any issue introduced.
> 
>  What's the reason for this timeout value and is there any improvement?
> 
>  Thanks and regards,
> 
>  Heyi

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Heyi Guo



在 11/8/2017 4:34 PM, Ni, Ruiyu 写道:

No.
Even a terminal tool can recognize F10, it still needs to translate it into "ESC [ 
V"
and send the three bytes to firmware.
Got it. But the 2 seconds timeout is not for this situation, right? If 
terminal tool could translate and send the key sequence, I think it can 
complete 3 bytes transfer in a very short time, isn't it? E.g. 9600 baud 
/ 8 = 1200 Bytes/s (ignore control bits).


So 2 seconds timeout is still for user to enter the sequence "ESC [ V" 
manually?


Thanks,

Heyi



Thanks/Ray


-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org]
Sent: Wednesday, November 8, 2017 4:31 PM
To: Ni, Ruiyu ; Zeng, Star ; edk2-
de...@lists.01.org
Cc: Dong, Eric 
Subject: Re: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
being pressed?



在 11/8/2017 3:55 PM, Ni, Ruiyu 写道:

Heyi,

If you check the comments below in TerminalConIn.c:


https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal
/C

onsole/TerminalDxe/TerminalConIn.c#L1319

TerminalDxe driver needs to determine whether user wants to press ESC
alone, or press "ESC [ V" for F10 (PCANSI terminal).

Do you mean F10 is not directly supported on some terminal tools so that we
need to press 3 keys "ESC [ V" quickly and continuously to emulate F10?

Thanks,

Heyi

So a 2 second timeout is added to wait additional keys.

Thanks/Ray


-Original Message-
From: Zeng, Star
Sent: Wednesday, November 8, 2017 3:25 PM
To: Heyi Guo ; edk2-devel@lists.01.org
Cc: Ni, Ruiyu ; Dong, Eric ;
Zeng, Star 
Subject: RE: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
being pressed?

Cc Terminal expert Ray to see if any comments on this.


Thanks,
Star
-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org]
Sent: Wednesday, November 8, 2017 3:04 PM
To: edk2-devel@lists.01.org
Cc: Zeng, Star ; Dong, Eric

Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC

being

pressed?

Hi folks,

We found ESC key responded fairly slow on serial port terminal, and
we think it might be caused by the code in UnicodeToEfiKey in

TerminalConIn.c:

       if (UnicodeChar == ESC) {
     TerminalDevice->InputState = INPUT_STATE_ESC;
       }

       if (UnicodeChar == CSI) {
     TerminalDevice->InputState = INPUT_STATE_CSI;
       }

       if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
     Status = gBS->SetTimer(
     TerminalDevice->TwoSecondTimeOut,
     TimerRelative,
     (UINT64)2000
     );
     ASSERT_EFI_ERROR (Status);
     continue;
       }

It seems we intentionally add 2 seconds delay for ESC key press. This
provides not so good user experience when we press ESC to exit or
cancel some operation.

We tried reducing this timeout value to 1 second, then the experience
improved much and we didn't find any issue introduced.

What's the reason for this timeout value and is there any improvement?

Thanks and regards,

Heyi


___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Ni, Ruiyu
No.
Even a terminal tool can recognize F10, it still needs to translate it into 
"ESC [ V"
and send the three bytes to firmware.

Thanks/Ray

> -Original Message-
> From: Heyi Guo [mailto:heyi@linaro.org]
> Sent: Wednesday, November 8, 2017 4:31 PM
> To: Ni, Ruiyu ; Zeng, Star ; edk2-
> de...@lists.01.org
> Cc: Dong, Eric 
> Subject: Re: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> being pressed?
> 
> 
> 
> 在 11/8/2017 3:55 PM, Ni, Ruiyu 写道:
> > Heyi,
> >
> > If you check the comments below in TerminalConIn.c:
> >
> https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal
> /C
> > onsole/TerminalDxe/TerminalConIn.c#L1319
> >
> > TerminalDxe driver needs to determine whether user wants to press ESC
> > alone, or press "ESC [ V" for F10 (PCANSI terminal).
> Do you mean F10 is not directly supported on some terminal tools so that we
> need to press 3 keys "ESC [ V" quickly and continuously to emulate F10?
> 
> Thanks,
> 
> Heyi
> >
> > So a 2 second timeout is added to wait additional keys.
> >
> > Thanks/Ray
> >
> >> -Original Message-
> >> From: Zeng, Star
> >> Sent: Wednesday, November 8, 2017 3:25 PM
> >> To: Heyi Guo ; edk2-devel@lists.01.org
> >> Cc: Ni, Ruiyu ; Dong, Eric ;
> >> Zeng, Star 
> >> Subject: RE: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> >> being pressed?
> >>
> >> Cc Terminal expert Ray to see if any comments on this.
> >>
> >>
> >> Thanks,
> >> Star
> >> -Original Message-
> >> From: Heyi Guo [mailto:heyi@linaro.org]
> >> Sent: Wednesday, November 8, 2017 3:04 PM
> >> To: edk2-devel@lists.01.org
> >> Cc: Zeng, Star ; Dong, Eric
> >> 
> >> Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> being
> >> pressed?
> >>
> >> Hi folks,
> >>
> >> We found ESC key responded fairly slow on serial port terminal, and
> >> we think it might be caused by the code in UnicodeToEfiKey in
> TerminalConIn.c:
> >>
> >>       if (UnicodeChar == ESC) {
> >>     TerminalDevice->InputState = INPUT_STATE_ESC;
> >>       }
> >>
> >>       if (UnicodeChar == CSI) {
> >>     TerminalDevice->InputState = INPUT_STATE_CSI;
> >>       }
> >>
> >>       if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
> >>     Status = gBS->SetTimer(
> >>     TerminalDevice->TwoSecondTimeOut,
> >>     TimerRelative,
> >>     (UINT64)2000
> >>     );
> >>     ASSERT_EFI_ERROR (Status);
> >>     continue;
> >>       }
> >>
> >> It seems we intentionally add 2 seconds delay for ESC key press. This
> >> provides not so good user experience when we press ESC to exit or
> >> cancel some operation.
> >>
> >> We tried reducing this timeout value to 1 second, then the experience
> >> improved much and we didn't find any issue introduced.
> >>
> >> What's the reason for this timeout value and is there any improvement?
> >>
> >> Thanks and regards,
> >>
> >> Heyi

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-08 Thread Heyi Guo



在 11/8/2017 3:55 PM, Ni, Ruiyu 写道:

Heyi,

If you check the comments below in TerminalConIn.c:
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c#L1319

TerminalDxe driver needs to determine whether user wants to press ESC alone,
or press "ESC [ V" for F10 (PCANSI terminal).
Do you mean F10 is not directly supported on some terminal tools so that 
we need to press 3 keys "ESC [ V" quickly and continuously to emulate F10?


Thanks,

Heyi


So a 2 second timeout is added to wait additional keys.

Thanks/Ray


-Original Message-
From: Zeng, Star
Sent: Wednesday, November 8, 2017 3:25 PM
To: Heyi Guo ; edk2-devel@lists.01.org
Cc: Ni, Ruiyu ; Dong, Eric ; Zeng,
Star 
Subject: RE: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
being pressed?

Cc Terminal expert Ray to see if any comments on this.


Thanks,
Star
-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org]
Sent: Wednesday, November 8, 2017 3:04 PM
To: edk2-devel@lists.01.org
Cc: Zeng, Star ; Dong, Eric 
Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being
pressed?

Hi folks,

We found ESC key responded fairly slow on serial port terminal, and we think
it might be caused by the code in UnicodeToEfiKey in TerminalConIn.c:

      if (UnicodeChar == ESC) {
    TerminalDevice->InputState = INPUT_STATE_ESC;
      }

      if (UnicodeChar == CSI) {
    TerminalDevice->InputState = INPUT_STATE_CSI;
      }

      if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
    Status = gBS->SetTimer(
    TerminalDevice->TwoSecondTimeOut,
    TimerRelative,
    (UINT64)2000
    );
    ASSERT_EFI_ERROR (Status);
    continue;
      }

It seems we intentionally add 2 seconds delay for ESC key press. This
provides not so good user experience when we press ESC to exit or cancel
some operation.

We tried reducing this timeout value to 1 second, then the experience
improved much and we didn't find any issue introduced.

What's the reason for this timeout value and is there any improvement?

Thanks and regards,

Heyi


___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-07 Thread Ni, Ruiyu
Heyi,

If you check the comments below in TerminalConIn.c:
https://github.com/tianocore/edk2/blob/master/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c#L1319

TerminalDxe driver needs to determine whether user wants to press ESC alone,
or press "ESC [ V" for F10 (PCANSI terminal).

So a 2 second timeout is added to wait additional keys.

Thanks/Ray

> -Original Message-
> From: Zeng, Star
> Sent: Wednesday, November 8, 2017 3:25 PM
> To: Heyi Guo ; edk2-devel@lists.01.org
> Cc: Ni, Ruiyu ; Dong, Eric ; Zeng,
> Star 
> Subject: RE: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC
> being pressed?
> 
> Cc Terminal expert Ray to see if any comments on this.
> 
> 
> Thanks,
> Star
> -Original Message-
> From: Heyi Guo [mailto:heyi@linaro.org]
> Sent: Wednesday, November 8, 2017 3:04 PM
> To: edk2-devel@lists.01.org
> Cc: Zeng, Star ; Dong, Eric 
> Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being
> pressed?
> 
> Hi folks,
> 
> We found ESC key responded fairly slow on serial port terminal, and we think
> it might be caused by the code in UnicodeToEfiKey in TerminalConIn.c:
> 
>      if (UnicodeChar == ESC) {
>    TerminalDevice->InputState = INPUT_STATE_ESC;
>      }
> 
>      if (UnicodeChar == CSI) {
>    TerminalDevice->InputState = INPUT_STATE_CSI;
>      }
> 
>      if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
>    Status = gBS->SetTimer(
>    TerminalDevice->TwoSecondTimeOut,
>    TimerRelative,
>    (UINT64)2000
>    );
>    ASSERT_EFI_ERROR (Status);
>    continue;
>      }
> 
> It seems we intentionally add 2 seconds delay for ESC key press. This
> provides not so good user experience when we press ESC to exit or cancel
> some operation.
> 
> We tried reducing this timeout value to 1 second, then the experience
> improved much and we didn't find any issue introduced.
> 
> What's the reason for this timeout value and is there any improvement?
> 
> Thanks and regards,
> 
> Heyi

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

2017-11-07 Thread Zeng, Star
Cc Terminal expert Ray to see if any comments on this.


Thanks,
Star
-Original Message-
From: Heyi Guo [mailto:heyi@linaro.org] 
Sent: Wednesday, November 8, 2017 3:04 PM
To: edk2-devel@lists.01.org
Cc: Zeng, Star ; Dong, Eric 
Subject: [MdeModulePkg/TerminalDxe] Why do we delay 2s for ESC being pressed?

Hi folks,

We found ESC key responded fairly slow on serial port terminal, and we think it 
might be caused by the code in UnicodeToEfiKey in TerminalConIn.c:

     if (UnicodeChar == ESC) {
   TerminalDevice->InputState = INPUT_STATE_ESC;
     }

     if (UnicodeChar == CSI) {
   TerminalDevice->InputState = INPUT_STATE_CSI;
     }

     if (TerminalDevice->InputState != INPUT_STATE_DEFAULT) {
   Status = gBS->SetTimer(
   TerminalDevice->TwoSecondTimeOut,
   TimerRelative,
   (UINT64)2000
   );
   ASSERT_EFI_ERROR (Status);
   continue;
     }

It seems we intentionally add 2 seconds delay for ESC key press. This provides 
not so good user experience when we press ESC to exit or cancel some operation.

We tried reducing this timeout value to 1 second, then the experience improved 
much and we didn't find any issue introduced.

What's the reason for this timeout value and is there any improvement?

Thanks and regards,

Heyi

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel