On 05/12/15 20:30, Roy Franz wrote:
> 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?

Oh yes, massively.

> What distro
> do you use?

Most of the time, RHEL-7.1 (work laptop); and for much shorter periods,
Debian 7.8 (home desktop, historical choice).

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

I don't know where I should begin to describe my environment. :)
Honestly, I may have already forgotten many of the tweaks I had to do.
In any case we can try this: I'll give a few facts about my setup that I
can think of, and you could see if they help on your side.

(1) So, as terminal emulator I use xterm. On RHEL-7.1, the version is
xterm-295-3.el7.x86_64, on Debian it is 278-4.

(2) In ~/.Xresources on the RHEL-7.1 laptop, I have the following
(relevant) entries:

> xterm*deleteIsDEL: true
> ! xterm*backarrowKeyIsErase: false
> xterm*backarrowKey: true
> xterm*ttyModes: erase ^H

Whereas on the Debian machine I have:

> xterm*deleteIsDEL: true
> ! Undo the debian peculiarity in /usr/X11R6/lib/X11/app-defaults/XTerm
> ! that makes the backarrowKey resource ineffective.
> *backarrowKeyIsErase: false

(This is already a nice example how distros disagree and/or require a
different set of options -- in any case, the comment on Debian is
outdated; that file doesn't exist any longer. ;))

In any case, if I hold down Ctrl + Left-MouseBtn in xterm, xterm
displays a menu with some toggles, and on both machines I get:
- Backarrow Key (BS/DEL): checked -- I think it corresponds to the
  "backarrowKey" resource above (see the manual)
- Delete is DEL: checked -- and this should be the "deleteIsDEL"
  resource

(3) stty reports "erase = ^H" on both machines. I think on RHEL that's
because of the above "ttyModes" xterm resource, and on Debian it's due
to the fact that I have "stty erase ^H" in ~/.bashrc.

(4) In ~/.inputrc I have (for readline-based apps), among other things,
on both machines:

> "\d": delete-char
> "\b": backward-delete-char

... That's all I can think of now.

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

I'm a pedant, but not *for* VTXXX :)

Hope the above settings help.

Cheers
Laszlo

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