Roberto E. Vargas Caballero <k...@shike2.com> writes: > Hi, > >> Our question is probably better stated as the following: >> >> st seems to e.g. send "[P" for delete instead of the '\E[3;2~' in >> terminfo (which fish does use), unless we explicitly do the equivalent >> of "tput smkx". This not only applies to delete, but a few other key >> combinations as well, like insert or ctrl-up. >> >> Of course this is stated in the FAQ, but the question is _why_ is it >> this way and is it possible to change that? > > Because there are two ways of using the terminal, in ASCII mode and in > application mode. Maybe you only use the terminal in application mode, > but some of us (mainly me) use the terminal for other kind of things, > connecting to non POSIX machines, over serial lines, and in these cases > we use this mode. St is not only a Unix place where ppl can write unix > commands (take a look to -l switch of st). > >> From our perspective st is the only terminal (we've found at least) that >> behaves this way - every other term (like xterm, konsole or linux VTs) >> seems to not need this and just always sends the sequences specified in >> terminfo. > > You are wrong: > > $ curl http://www.catb.org/esr/terminfo/termtypes.ti.gz 2>/dev/null | > gunzip | > sed 's/#.*//g' | > grep -c smkx > 111
That's not what I'm talking about. Of course a tone of terminals have smkx defined, but fish currently doesn't send it and works on (as far as I know) anything but st. In other words: If you launch fish in { konsole, xterm, gnome-terminal, linux in-kernel VTs, iTerm2, ... } your keys work, without smkx. If you launch fish in st, your keys don't, until you do "tput smkx". > > There are 111 definitions in the official terminfo definition which > use smkx. Maybe you don't use any of them, but some of use use > some of them. For example I have a physical vt500 that I use as > console in several of my servers, and it has smkx sequence. Are > you saying me that I am going to be able to use fish in this > terminal? and only because you are too lazy to follow the terminfo > standard? > Apparently, st is the only thing that does follow it. >> There's two things we can do on our side - do "tput smkx" and "tput >> rmkx" either only in st or always (which I don't know if it'll break >> stuff elsewhere) or bind both kinds of sequences st sends, neither >> solution being _great_. > > It should not break anything. If the terminal does not define smkx > you will not print anything, and if the terminal define it is because > it needs the sequence. All the application which use curses work > without problems in st when they try to match any key. mainly because > curses follows the terminfo specification perfectly. > I'll probably try that, thank you. > The question here is, why do you want to write a shell knowing > it has bugs and it will not be able of running in all the possible > (current or future) terminals? The only term I currently know of that has a problem with fish is st. Regards, Fabian Homborg
signature.asc
Description: PGP signature