Is there an existing issue for this?
Midnight Commander version and build configuration
Operating system
Is this issue reproducible using the latest version of Midnight Commander?
How to reproduce
The bindings of escape sequences are read from the global mc.lib and local ini.
They undergo two levels of unescaping. First, GLib's KeyFile unescapes \\e (three bytes) to \e (two bytes), and \; to \.
Then our code unescapes \e (two bytes) to the escape byte, and ^X (two bytes) to the Ctrl-X byte.
When saving the entries, our own unescaping doesn't have an escaping counterpart.
A sequence ending in ^, e.g. urxvt's Ctrl+Fn, ends up being stored in the file ending in a single ^, which, when read back, is dropped as an incomplete sequence.
See also #5048: using KeyFile's get/set_value() we could probably flatten this to a single layer of escaping/unescaping.
Expected behavior
.
Actual behavior
.
Additional context
No response
Is there an existing issue for this?
Midnight Commander version and build configuration
Operating system
.Is this issue reproducible using the latest version of Midnight Commander?
How to reproduce
The bindings of escape sequences are read from the global
mc.liband localini.They undergo two levels of unescaping. First, GLib's KeyFile unescapes
\\e(three bytes) to\e(two bytes), and\;to\.Then our code unescapes
\e(two bytes) to the escape byte, and^X(two bytes) to the Ctrl-X byte.When saving the entries, our own unescaping doesn't have an escaping counterpart.
A sequence ending in
^, e.g. urxvt's Ctrl+Fn, ends up being stored in the file ending in a single^, which, when read back, is dropped as an incomplete sequence.See also #5048: using KeyFile's
get/set_value()we could probably flatten this to a single layer of escaping/unescaping.Expected behavior
.
Actual behavior
.
Additional context
No response