On Fri, May 8, 2015 at 2:50 AM, Laszlo Ersek <[email protected]> wrote:
> 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".

xev reports the same for me.
>
> 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.

Have you you changed any terminal/keyboard settings? What distro
do you use? Your experience of working backspace of the QEMU serial port
is the first report of this working I have had - it has always been broken for
me and everyone I have asked about it.


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

Yeah, this was my first real trip down into the terminal rabbit hole,
and it does
seem to be a mess.

>
> <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>
I have a feeling that 'proper' VTXXX terminal emulation discussions bring out
all the pedants :)

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

Reply via email to