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