> On May 12, 2015, at 10:34 AM, Kinney, Michael D <[email protected]> 
> wrote:
> 
> Laszlo,
> 
> As far as adding a PCD or not, there is another option.
> 
> The UEFI Specification defines 4 GUIDs for terminal types that are used in 
> VenMedia() device path nodes and provides the information a terminal driver 
> needs to know to translate a bytes stream to/from a specific type of terminal 
> into UEFI protocol interfaces.
> 

I’ve done this in our local tree and it works great. I added xterm-256color as 
that is the default terminal type on a Mac.

Thanks,

Andrew Fish 

> The terminal GUIDs are defined in EDK II in MdePkg/Include/Guid/PcAnsi.h
> #define EFI_PC_ANSI_GUID \
>  { \
>    0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 
> 0x4d } \
>  }
> 
> #define EFI_VT_100_GUID \
>  { \
>    0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 
> 0x4d } \
>  }
> 
> #define EFI_VT_100_PLUS_GUID \
>  { \
>    0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 
> 0x43 } \
>  }
> 
> #define EFI_VT_UTF8_GUID \
>  { \
>    0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 
> 0x88 } \
>  }
> 
> extern EFI_GUID gEfiPcAnsiGuid;
> extern EFI_GUID gEfiVT100Guid;
> extern EFI_GUID gEfiVT100PlusGuid;
> extern EFI_GUID gEfiVTUTF8Guid;
> 
> If we want to support terminal emulators that do not exactly match one of 
> these 4 terminal types, then additional terminal types can be added to the 
> EDK II implementation.
> I recommend that terminal types that are not defined by UEFI Specification be 
> added to MdeModulePkg and the TerminalDxe driver can add support for these 
> additional terminal types. The only reason to add a feature flag PCD with 
> this direction is if there is a concern on the size impact of building in 
> support for the additional terminal types in TerminalDxe.  
> 
> Best regards,
> 
> Mike
> 
> -----Original Message-----
> From: Laszlo Ersek [mailto:[email protected]] 
> Sent: Friday, May 08, 2015 2:51 AM
> To: Roy Franz
> Cc: [email protected]; [email protected]
> Subject: Re: [edk2] [PATCH] Treat ASCII DEL (0x7f) as backspace
> 
> On 05/08/15 04:26, Roy Franz wrote:
>> On Thu, May 7, 2015 at 7:03 PM, Kinney, Michael D
>> <[email protected]> wrote:
>>> Roy,
>>> 
>>> Did you try the command line at the UEFI Shell prompt through a
>>> serial terminal?  There is line editing available, where backspace
>>> and delete keys perform different actions.  I think your change
>>> prevents a user from ever getting the delete key behavior.  Same
>>> would be true for the UEFI Shell command EDIT that provides a text
>>> file editor.
>> 
>> Hi Mike,
>> 
>>    I did do my testing at the UEFI shell prompt with line editing.
>> While my patch does remove the use of the ASCII DEL character,  there
>> are 3 other terminal escape sequences that are also used for delete.
>> In terraterm over serial, the delete key still works as expected, so
>> it is using an escape sequence.  For hyperterm, delete doesn't work
>> before or after my change.  For the Linux terminal cases, delete
>> doesn't work at all, as they all use a 3 character VT220 escape "[3~"
>> for delete which EDK2 does not accept. So this certainly will
>> negatively affect terminals that send ASCII DEL (0x7f), but I was not
>> able to find one that did.
> 
> I think this email provides good background:
> 
> https://lists.debian.org/debian-i18n/1998/04/msg00015.html
> 
>> If this change isn't globally acceptable, I'm fine with restricting
>> this to a terminal type, or making this otherwise configurable (maybe
>> with a fixed PCD?)
> 
> Please make this configurable with a fixed PCD or feature PCD.
> 
> The key in the upper right corner on my PC keyboard, labeled
> 
>  <- Backspace
> 
> emits keysim BackSpace, and XLookupString gives 0x08, according to "xev".
> 
> The key labeled
> 
>  Delete
> 
> emits keysim Delete, and XLookupString gives 0x7F, according to "xev".
> 
> Both keys work as expected in all the applications I use, both on the
> character console and under X (ie. the former key removes the previous
> character, the latter key removes the next character).
> 
> This holds for the UEFI shell as well, when it runs as part of OVMF or
> ArmVirtualizationQemu, and is accessed over the QEMU serial console,
> from xterm.
> 
>> This fixes a longstanding annoyance (ie backspace
>> key not working) on Linux platforms, which I would like to get fixed,
>> whether via this patch or a similar one.
> 
> Most Linux distributions' default settings are horribly broken in this area.
> 
> <rant>
> The fact that most applications *agree* on those broken settings doesn't
> make them less broken.
> 
> The obsession on Linux with VT100/VT220 is ridiculous. I was born in the
> seventies and have never seen a VT100/VT220 keyboard. It's 2015 and we
> use PC keyboards. Hence, since 1998, I've been doing my part to bludgeon
> all my applications and remote Linux accounts to do the right thing.
> Backspace is ^H, Delete is ^?; I own a PC, not some kind of electronic
> relic.
> </rant>
> 
> So, please make this change dependent on a feature PCD, and the default
> behavior shouldn't change.
> 
> Thanks!
> Laszlo
> 
>> 
>> As an aside, while reviewing the DEL escape codes, I see a simpler way
>> to do this patch, so the current version should not be used.
>> 
>> Thanks,
>> Roy
>> 
>> 
>>> 
>>> Thanks,
>>> 
>>> Mike
>>> 
>>> -----Original Message-----
>>> From: Roy Franz [mailto:[email protected]]
>>> Sent: Thursday, May 07, 2015 4:33 PM
>>> To: [email protected]; [email protected]; Tian, 
>>> Feng
>>> Subject: [edk2] [PATCH] Treat ASCII DEL (0x7f) as backspace
>>> 
>>> Most Linux terminal emulators use ASCII 0x7f (^?) for backspace,
>>> rather than 0x08 (^H) since ^H is used by some programs for other
>>> purposes, such as help menus.  This results in backspace not working
>>> in most Linux environments, particularly in emulated environments
>>> such as QEMU where telnet or xterm may be used to connect to
>>> the emulated UART.  While in some cases this can be configured in the
>>> terminal emulator, it must be done on every connection, as if
>>> permently configured this will break all other uses of the terminal.
>>> 
>>> This change causes both ASCII 0x08 and 0x7F to be treated as
>>> backspace.  This provides a working backspace when tested with
>>> minicom, screen, telnet, and xterm under Linux.  I also tested
>>> teraterm and hyperterm under Windows connecting via rs232, and
>>> saw no regressions. (The delete key doesn't work on hyperterm
>>> both before and after the change)
>>> 
>>> This change removes the ASCII encoding for delete, however
>>> this did not cause regressions on any tested terminal emulators
>>> as they do not use the ASCII encoding for the delete key.
>>> 
>>> Contributed-under: TianoCore Contribution Agreement 1.0
>>> Signed-off-by: Roy Franz <[email protected]>
>>> ---
>>> MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c | 8 ++++++++
>>> 1 file changed, 8 insertions(+)
>>> 
>>> diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c 
>>> b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
>>> index 4a008c9..c92d3d4 100644
>>> --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
>>> +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c
>>> @@ -1212,6 +1212,14 @@ UnicodeToEfiKey (
>>>     switch (TerminalDevice->InputState) {
>>>     case INPUT_STATE_DEFAULT:
>>> 
>>> +        switch (UnicodeChar) {
>>> +        case 0x7f:
>>> +          UnicodeChar = CHAR_BACKSPACE;
>>> +          break;
>>> +        default :
>>> +          break;
>>> +        }
>>> +
>>>       break;
>>> 
>>>     case INPUT_STATE_ESC:
>>> --
>>> 1.9.1
>>> 
>>> 
>>> ------------------------------------------------------------------------------
>>> One dashboard for servers and applications across Physical-Virtual-Cloud
>>> Widest out-of-the-box monitoring support with 50+ applications
>>> Performance metrics, stats and reports that give you Actionable Insights
>>> Deep dive visibility with transaction tracing using APM Insight.
>>> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
>>> _______________________________________________
>>> edk2-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>>> 
>>> ------------------------------------------------------------------------------
>>> One dashboard for servers and applications across Physical-Virtual-Cloud
>>> Widest out-of-the-box monitoring support with 50+ applications
>>> Performance metrics, stats and reports that give you Actionable Insights
>>> Deep dive visibility with transaction tracing using APM Insight.
>>> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
>>> _______________________________________________
>>> edk2-devel mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> 
>> ------------------------------------------------------------------------------
>> One dashboard for servers and applications across Physical-Virtual-Cloud 
>> Widest out-of-the-box monitoring support with 50+ applications
>> Performance metrics, stats and reports that give you Actionable Insights
>> Deep dive visibility with transaction tracing using APM Insight.
>> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
>> _______________________________________________
>> edk2-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>> 
> 
> 
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud 
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud 
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to