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
