URL: <https://savannah.gnu.org/bugs/?67076>
Summary: Backspace/Delete keys are messed up in terminal
Group: GNU GRUB
Submitter: bam80
Submitted: Сб 03 мая 2025 12:31:11
Category: Terminal
Severity: Major
Priority: 5 - Normal
Item Group: Software Error
Status: None
Privacy: Public
Assigned to: None
Originator Name:
Originator Email:
Open/Closed: Open
Discussion Lock: Any
Release: Git master
Release:
Reproducibility: Every Time
Planned Release: None
_______________________________________________________
Follow-up Comments:
-------------------------------------------------------
Date: Сб 03 мая 2025 12:31:11 By: Andrey <bam80>
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 [https://www.gnu.org/software/grub/manual/grub/grub.html#terminfo
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 [https://invisible-island.net/xterm/xterm.html#history 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'.
_______________________________________________________
Reply to this item at:
<https://savannah.gnu.org/bugs/?67076>
_______________________________________________
Сообщение отправлено по Savannah
https://savannah.gnu.org/
signature.asc
Description: PGP signature
