On Tue, May 12, 2015 at 10:42 AM, Andrew Fish <[email protected]> wrote:
>
>> 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'll take a look at this method of making it configurable.  There are
so many 'default' terminals in Linux depending on distro, etc. that I
don't know what this should be called.  I'm not really focused
on 'proper' emulation of a specific terminal - I just want the common
stuff to work under Linux.  I'll put a patch together adding a new
terminal type to move the discussion along.

Thanks,
Roy

>
> 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