bugGNU GRUB - Bugs: bug #67076, Backspace/Delete keys are messed...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #67076: Backspace/Delete keys are messed up in terminal

Submitter:  Andrey <bam80>
Submitted:  Sat 03 May 2025 12:31:11 PM UTC
   
 
Category:  Terminal Severity:  Major
Priority:  5 - Normal Item Group:  Software Error
Status:  None Privacy:  Public
Assigned to:  None Originator Name: 
Open/Closed:  Open Release:  Git master
Release:  Reproducibility:  Every Time
Planned Release:  None

Sat 03 May 2025 12:31:11 PM UTC, original submission:  

In all nowadays terminal emulators (VTE-based, XTerm, Linux console, etc.) with "standard" settings, Backspace/Delete keys are messed up in Grub:
Backspace key behaves as Delete (erases symbol under cursor) and Delete behaves as Escape (cancels editing screen to menu).

From terminfo command description:

> The currently available terminal types are ‘vt100’, ‘vt100-color’, ‘ieee1275’, and ‘dumb’. If you need other terminal types, please contact us to discuss the best way to include support for these in GRUB.


As a possible solution, please consider adding a VT220 and/or VT420 support.
These more recent VT* variants have  kdch1=\E[3~ ("delete-one-char" key) terminfo capability, which corresponds to a modern emulators behavior:

From XTerm history:

> The preferred terminal description for xterm has evolved over time, so that programs can use more advanced features:
> * For the first ten years of xterm's history (until 1996), the preferred terminal description was based on the VT102.
> * The following eighteen years (until 2012) preferred a description based on VT220.
> * Since 2012, the preferred description is based on VT420.


Note VT100 doesn't have kdch1 capability at all, thus is the problem:

$ infocmp -d vt100 vt220
comparing vt100 to vt220.
    comparing booleans.
        mir: F:T.
    comparing numbers.
    comparing strings.
        blink: '\E[5m$<2>', '\E[5m'.
        bold: '\E[1m$<2>', '\E[1m'.
        civis: NULL, '\E[?25l'.
        clear: '\E[H\E[J$<50>', '\E[H\E[J'.
        cnorm: NULL, '\E[?25h'.
        cuf1: '\E[C$<2>', '\E[C'.
        cup: '\E[%i%p1%d;%p2%dH$<5>', '\E[%i%p1%d;%p2%dH'.
        cuu1: '\E[A$<2>', '\E[A'.
        dch: NULL, '\E[%p1%dP'.
        dch1: NULL, '\E[P'.
        dl: NULL, '\E[%p1%dM'.
        dl1: NULL, '\E[M'.
        ech: NULL, '\E[%p1%dX'.
        ed: '\E[J$<50>', '\E[J'.
        el: '\E[K$<3>', '\E[K'.
        el1: '\E[1K$<3>', '\E[1K'.
        enacs: '\E(B\E)0', '\E)0'.
        flash: NULL, '\E[?5h$<200/>\E[?5l'.
        ich: NULL, '\E[%p1%d@'.
        if: NULL, '/usr/share/tabset/vt100'.
        il: NULL, '\E[%p1%dL'.
        il1: NULL, '\E[L'.
        ind: '\n', '\ED'.
        is2: NULL, '\E[?7h\E[>\E[?1l\E F\E[?4l'.
        ka1: '\EOq', NULL.
        ka3: '\EOs', NULL.
        kb2: '\EOr', NULL.
        kc1: '\EOp', NULL.
        kc3: '\EOn', NULL.
        kcub1: '\EOD', '\E[D'.
        kcud1: '\EOB', '\E[B'.
        kcuf1: '\EOC', '\E[C'.
        kcuu1: '\EOA', '\E[A'.
        kdch1: NULL, '\E[3~'.
        kent: '\EOM', NULL.
        kf0: '\EOy', NULL.
        kf10: '\EOx', '\E[21~'.
        kf11: NULL, '\E[23~'.
        kf12: NULL, '\E[24~'.
        kf13: NULL, '\E[25~'.
        kf14: NULL, '\E[26~'.
        kf17: NULL, '\E[31~'.
        kf18: NULL, '\E[32~'.
        kf19: NULL, '\E[33~'.
        kf20: NULL, '\E[34~'.
        kf5: '\EOt', NULL.
        kf6: '\EOu', '\E[17~'.
        kf7: '\EOv', '\E[18~'.
        kf8: '\EOl', '\E[19~'.
        kf9: '\EOw', '\E[20~'.
        kfnd: NULL, '\E[1~'.
        khlp: NULL, '\E[28~'.
        kich1: NULL, '\E[2~'.
        knp: NULL, '\E[6~'.
        kpp: NULL, '\E[5~'.
        krdo: NULL, '\E[29~'.
        kslt: NULL, '\E[4~'.
        mc0: '\E[0i', '\E[i'.
        nel: NULL, '\EE'.
        rev: '\E[7m$<2>', '\E[7m'.
        ri: '\EM$<5>', '\EM'.
        rmacs: '^O', '\E(B$<4>'.
        rmir: NULL, '\E[4l'.
        rmkx: '\E[?1l\E>', NULL.
        rmso: '\E[m$<2>', '\E[27m'.
        rmul: '\E[m$<2>', '\E[24m'.
        rs1: NULL, '\E[?3l'.
        rs2: '\E<\E>\E[?3;4;5l\E[?7;8h\E[r', NULL.
        sgr: '\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>', '\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>'.
        sgr0: '\E[m\017$<2>', '\E[m\E(B'.
        smacs: '^N', '\E(0$<2>'.
        smir: NULL, '\E[4h'.
        smkx: '\E[?1h\E=', NULL.
        smso: '\E[7m$<2>', '\E[7m'.
        smul: '\E[4m$<2>', '\E[4m'.
        u9: '\EZ', '\E[c'.


Andrey <bam80>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by bam80 (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    No changes have been made to this item

    Back to the top

    Powered by Savane 3.15-e6e5.
    Corresponding source code