Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Zsh changes on Ubuntu

Guido van Steen wrote:
> I looked into Thorsten's issue. I suspect it is caused by Fizsh being dependent
> on raw directional codes. Newer versions of Ubuntu seem to work with a
> different set of raw directional codes than older versions. For example,

Yes, that's very likely.

> Ubuntu's raw code for "arrow-up" seems to have changed from "^[[A" to "^[0A".

That's probably ^[OA, but that's one possible difference between the
different possible terminal modes.

> This would explain why things work on Debian and Cygwin but not on Ubuntu.
> I agree with Frank's suggestion to revert to more portable code like:
>> bindkey "${key[Up]}"
> This does not work on my Debian system (Stable distribution), but it
> can be made to work like this:
>> typeset -A key
>> key[Up]=${terminfo[kcuu1]}

Yes, that's what Debian's global zshrc is setting up.

However, like I said before, using the values from $terminfo[] is only
valid reliably if the terminal is in keyboard-transmit mode (via smkx).

Finding out if there's a hook in place, that sets that mode while zle is
in place is hard to do reliably.

Then there are other ways in zsh to do setup for special keys, like
‘zkbd’, that doesn't set the mode, but instead let's the user press all
sorts of special keys and records the escape sequences that produces.

‘zkbd’ also uses the $key[] map to store that information; and we used
the same keys in Debian's setup as ‘zkbd’ does.

So... Here's how I'd probably tackle the problem:

  - You want to bind the $foo key.
  - Check if $key[$foo] exists and is non-empty.
  - If so, use that value as the sequence to bind with.
  - If not, fall back to some hard-coded sequence, if you like.

That way you support setups that use Debian's way and zkbd, while
having a fallback in place. I think that's better than having a bunch
of half-assed tries to detect what situation you're in.

Regards, Frank

PS. Yay for terminals, right?

In protocol design, perfection has been reached not when there is
nothing left to add, but when there is nothing left to take away.
                                                  -- RFC 1925

Messages sorted by: Reverse Date, Date, Thread, Author