Roberto E. Vargas Caballero schrieb am 18.03.2014 12:30: > You should read terminfo(5) > > > > I have no idea what the differences between home and khome are or why > two > > > versions for home exist. Anyway, here are my results: > > home is the definition for the home sequence, is the sequence that a > program > has to sent to the terminal to get the home function, and khome is the > sequence generated by the key home, that depend of the keypad mode. There > are two modes: > > - keypad mode: In this mode the keys generate the same sequence that > the function they are labelled. In the case of home key > st generates ^[[H, that is the value of the home > sequence. > > - application mode: In this mode the keys generate some sequence that > identify them, in the case of st ^[1~, that is the value > of the sequence khome, so any application can detect > this key was pressed. > > > > > > > > CTRL-v + HOME: > > > > > > | zsh | bash | ksh | > > > +-------+-------+-------+ > > > st | ^[[H | ^[[H | ^[[H | <- works in bash > > > xterm | ^[OH | ^[[H | ^[[H | <- works in zsh and bash > > > rxvt | ^[[7~ | ^[[7~ | ^[[7~ | <- never works > > The next point you are loosing and you can find in terminfo(5) is the > sequences > rmkx and smkx: > > If the terminal has a keypad that transmits codes when the > keys are pressed, this information can be given. Note > that it is not possible to handle terminals where the keypad > only works in local (this applies, for example, to the > unshifted HP 2621 keys). If the keypad can be set to transmit > or not transmit, give these codes as smkx and rmkx. Otherwise > the keypad is assumed to always transmit. > > > > CTRL-v + DEL: > > > > > > | zsh | bash | ksh | > > > +-------+-------+-------+ > > > st | ^[[P | ^[[P | ^[[P | <- never works > > > xterm | ^? | ^? | ^? | <- deletes backwards in zsh, bash; not in ksh > > > rxvt | ^[[3~ | ^[[3~ | ^[[3~ | <- works in zsh, bash; not in ksh > > so, any program must send the smkx sequence before of testing is the key > was pressed, but there are some ugly applications (as for example zsh) > that don't do it. All this question are answer in the FAQ [1] , and in the > case of bash even it is explained how to fix it. > > > Maybe the problem is rooted in different shell versions emitting > different key > > codes: > > There are some shells that have bugs, and another that don't have bugs. > > I begin to be a bit tired of answer the same question all the times. > > Regards, > > > [1] :http://st.suckless.org/ > > -- > Roberto E. Vargas Caballero > >
Hi Roberto, thanks for your email. Sorry for the trouble, i should have read the FAQ first. As it's a bit hidden on the page, i suggest linking to it in the side-navigation bar (pushed a patch to the repo). Now to my problem: I investigated a bit further, tried the hint from the FAQ and also checked the zshrc that is installed by default on debian. Here's a code snippet from the debian zshrc doing the same as the FAQ suggests: debian$ sed -n '71,89p' /etc/zsh/zshrc # Make sure the terminal is in application mode, when zle is # active. Only then are the values from $terminfo valid. if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then function zle-line-init () { emulate -L zsh printf '%s' ${terminfo[smkx]} } function zle-line-finish () { emulate -L zsh printf '%s' ${terminfo[rmkx]} } zle -N zle-line-init zle -N zle-line-finish else for i in {s,r}mkx; do (( ${+terminfo[$i]} )) || debian_missing_features+=($i) done unset i fi Now, the problem on openbsd is that there is no entry for {r,s}mkx once it gets installed with tic (checked with 'infocmp st'). I have no idea why, and will ask on their mailing list. Thanks again for your help Nils