> 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