Key binding problem

Jeffery Small jeff at cjsa.com
Mon Nov 7 01:03:31 UTC 2022


"Kevin J. McCarthy" <kevin at 8t8.us> writes:

>On Sun, Nov 06, 2022 at 07:31:44PM -0000, Jeffery Small wrote:
>>I just tried that, but the debug file reports the same thing shown on the
>>command line when the key is pressed.  Here are the results:
>>
>>Keypad / key:  <esc>Oo:   Char = A, Octal = 1101, Decimal = 577
>>Keypad * key:  <esc>Oj:   Char = C, Octal = 1103, Decimal = 579
>>Keypad - key:  <esc>Om:   Char = D, Octal = 1104, Decimal = 580
>>Keypad + key:  <esc>Ok:   Char = ?, Octal = 1077, Decimal = 575
>>Keypad Enter:  <esc>OM:   Char = <KeypadEnter>, Octal = 527, \
>>Decimal = 343

>For these large octal values, you can try the syntax <octal number> in
>your muttrc.
>
>e.g.
>bind generic  <1101>        first-entry
>bind generic  <1103>        last-entry
>bind generic  <1104>        select-entry
>bind generic  <1077>        next-entry
>bind generic  <keypadenter> next-entry

Great suggestion.  I was unaware that you could do that for large octal
values.  I made these assignments and the keys are now working in mutt.
One thing to note is that on the help page, these assignments are being
displayed as the characters A, C, D and ? which could generate confusion
since these are not the actual characters which also show up and are bound
to other actions.

>>So what is up with this?  Why is mutt seeing one thing output while other
>>programs such as vim and less see the escape code sequences?

>Mutt uses ncurses for terminal input/output interaction.  Those are the
>values the ncurses getch() function is returning to mutt.  Unfortunately,
>I couldn't tell you why this differs, but I'm fairly sure vim and less
>don't use ncurses.

I had already looked through the terminfo value for xterm-256color and
saw that these escape code sequences were not output for any entry.  In
fact, none of the keypad sequences were defined in the file.  Even the
five numeric keys, ka1, ka3, kb2, kc1 and kc3 had no relationship to the
actual codes issued:

Key:	Terminfo	Actual
7:	ka1=\EOw	<Esc>[44~
9:	ka3=\EOy	<Esc>[46~
5	kb2=\EOu	<Esc>[42~
1	kc1=\EOq	<Esc>[26~
3	kc3=\EOs	<Esc>[31~

Yet, all these keypad keys work.  Why does ncurses report these actual
values, but not those for the rogue keys?  I even tried redefining one of
the function keys in the terminfo definition to issue the <Esc>Ok sequence
for the keypad + key, but even when defined, the key didn't work.

The problem is solved, but just in case you want to investigate further,
I include the terminfo entry below.

Thanks for the help.  It's nice to get the keys working again.  I have
decades od muscle memory working againt change!  :-)


#	Reconstructed via infocmp from file: /lib/terminfo/x/xterm-256color
xterm-256color|xterm with 256 colors,
	am, bce, ccc, km, mc5i, mir, msgr, npc, xenl,
	colors#0x100, cols#80, it#8, lines#24, pairs#0x10000,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
	clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
	csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
	cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
	cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
	cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
	dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
	el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, home=\E[H,
	hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
	il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dS,
	initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
	invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~,
	kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D,
	kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, ka1=\EOw,
	ka3=\EOy, kb2=\EOu, kbeg=\EOE, kbs=^?, kc1=\EOq, kc3=\EOs,
	kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
	kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
	kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q,
	kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
	kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
	kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
	kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
	kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~,
	kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~,
	kf35=\E[23;5~, kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q,
	kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~,
	kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
	kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
	kf48=\E[24;6~, kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q,
	kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
	kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
	kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
	kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
	kf8=\E[19~, kf9=\E[20~, khome=\EOH, kich1=\E[2~,
	kind=\E[1;2B, kmous=\E[<, knp=\E[6~, kpp=\E[5~,
	kri=\E[1;2A, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
	memu=\Em, mgc=\E[?69l, nel=\EE, oc=\E]104\007,
	op=\E[39;49m, rc=\E8, rep=%p1%c\E[%p2%{1}%-%db,
	rev=\E[7m, ri=\EM, rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E(B,
	rmam=\E[?7l, rmcup=\E[?1049l\E[23;0;0t, rmir=\E[4l,
	rmkx=\E[?1l\E>, rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m,
	rs1=\Ec\E]104\007, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
	setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
	setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
	sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
	sgr0=\E(B\E[m, sitm=\E[3m, smacs=\E(0, smam=\E[?7h,
	smcup=\E[?1049h\E[22;0;0t, smglp=\E[?69h\E[%i%p1%ds,
	smglr=\E[?69h\E[%i%p1%d;%p2%ds,
	smgrp=\E[?69h\E[%i;%p1%ds, smir=\E[4h, smkx=\E[?1h\E=,
	smm=\E[?1034h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
	u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
	u9=\E[c, vpa=\E[%i%p1%dd,



More information about the Mutt-users mailing list