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
