Code Monkey home page Code Monkey logo

Comments (7)

hannesm avatar hannesm commented on August 20, 2024

I'm sorry to hear this. it looks like this is an issue in the notty library -- and I don't have a system to test this with the macOS terminal. maybe @pqwy has an idea what could be the issue.

from jackline.

Iix avatar Iix commented on August 20, 2024

I further noticed that sometimes using key repetition in a macOS terminal using jackline on a remote server, e.g. scrolling up and down through the user roster, there is "~5" and "~6" shown as an output.

from jackline.

cfcs avatar cfcs commented on August 20, 2024

@LIX ah, interesting. It does indeed sound like notty doesn't handle repeat_char aka rep aka rp from your client.
Could you provide the output of these commands:

echo "$TERM"
infocmp -I
tput rep 65 8 | xxd

from jackline.

Iix avatar Iix commented on August 20, 2024

Hi @cfcs

user@host:~$ echo "$TERM"
xterm-256color
user@host:~$ infocmp -I
#	Reconstructed via infocmp from file: /lib/terminfo/x/xterm-256color
xterm-256color|xterm with 256 colors,
	am, bce, ccc, xenl, km, mir, msgr, npc, mc5i,
	cols#80, it#8, lines#24, colors#256, pairs#32767,
	acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
	cbt=\E[Z, bel=^G, cr=^M, csr=\E[%i%p1%d;%p2%dr, tbc=\E[3g,
	clear=\E[H\E[2J, el1=\E[1K, el=\E[K, ed=\E[J,
	hpa=\E[%i%p1%dG, cup=\E[%i%p1%d;%p2%dH, cud1=^J,
	home=\E[H, civis=\E[?25l, cub1=^H, cnorm=\E[?12l\E[?25h,
	cuf1=\E[C, cuu1=\E[A, cvvis=\E[?12;25h, dch1=\E[P,
	dl1=\E[M, smacs=\E(0, smam=\E[?7h, blink=\E[5m, bold=\E[1m,
	smcup=\E[?1049h, dim=\E[2m, smir=\E[4h, sitm=\E[3m,
	rev=\E[7m, invis=\E[8m, smso=\E[7m, smul=\E[4m,
	ech=\E[%p1%dX, rmacs=\E(B, rmam=\E[?7l, sgr0=\E(B\E[m,
	rmcup=\E[?1049l, rmir=\E[4l, ritm=\E[23m, rmso=\E[27m,
	rmul=\E[24m, flash=\E[?5h$<100/>\E[?5l,
	is2=\E[!p\E[?3;4l\E[4l\E>,
	initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
	il1=\E[L, kb2=\EOE, kbs=\177, kcbt=\E[Z, kdch1=\E[3~,
	kcud1=\EOB, 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,a
	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~,
	kcub1=\EOD, kmous=\E[M, knp=\E[6~, kpp=\E[5~, kcuf1=\EOC,
	kDC=\E[3;2~, kEND=\E[1;2F, kind=\E[1;2B, kHOM=\E[1;2H,
	kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~,
	kri=\E[1;2A, kRIT=\E[1;2C, kcuu1=\EOA, rmkx=\E[?1l\E>,
	smkx=\E[?1h\E=, meml=\El, memu=\Em, oc=\E]104\007,
	op=\E[39;49m, dch=\E[%p1%dP, dl=\E[%p1%dM, cud=\E[%p1%dB,
	ich=\E[%p1%d@, indn=\E[%p1%dS, il=\E[%p1%dL,
	cub=\E[%p1%dD, cuf=\E[%p1%dC, rin=\E[%p1%dT,
	cuu=\E[%p1%dA, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
	rs1=\Ec\E]104\007, rs2=\E[!p\E[?3;4l\E[4l\E>, rc=\E8,
	vpa=\E[%i%p1%dd, sc=\E7, ind=^J, ri=\EM,
	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,
	hts=\EH, ht=^I, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c,
	u9=\E[c,
user@host:~$ tput rep 65 8 | xxd
user@host:~$

from jackline.

cfcs avatar cfcs commented on August 20, 2024

I checked the code for notty, the let csi function does not parse the xterm repeat_char, and for osx it seems to not be defined, which makes me wonder what generates it in this case.
I wonder what the repeat_char that your machine ends up sending out looks like. When you see the ~5 and ~6 and so on, are they followed by b? like ~5b?
Maybe you can trigger it by ssh'ing to a machine, running xxd > foo.txt and holding down a button for a while, then pressing control + d to end the input.

Anyway, to conclude, this is definitely in notty land and not a jackline issue. In the C world all this stuff would be handled in ncurses. Too bad notty is not maintained anymore.

from jackline.

Iix avatar Iix commented on August 20, 2024

Thanks for investigating on it, @cfcs
I have no strange output in xxd when repeating a key. Just within Jackline. Btw. it also occurs sometimes when I paste something into Jackline.

from jackline.

cfcs avatar cfcs commented on August 20, 2024

@Iix Pasting should be handled by notty, at least it works pretty well for me on Linux.
I'm sorry, it's tricky for me to investigate, but I'll try to look into it next time I see someone who's got a mac.
But if someone finds this at a latter point, the issue seems to be a mix of:

  • notty seems to ignore termcap/terminfo for the purpose of ignoring escapes it doesn't know
  • notty does not implement repeat_char aka rep aka rp, which seems easy enough to add, but would require buffering the last char somewhere.
  • OSX seems to have its own incompatible termcap definition of xterm-256color which lies about its capabilities. This is not causing the bug here, but it does mean that it won't work to use the OS termcap database in a potential fix.

from jackline.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.