From dc92a66007c3770624f743ca6523a55da6a73fef Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Sun, 24 Jan 2016 16:01:18 +0100 Subject: [PATCH] Fix FreeBSD terminal --- includes/FreeBSD.zsh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 includes/FreeBSD.zsh diff --git a/includes/FreeBSD.zsh b/includes/FreeBSD.zsh new file mode 100644 index 0000000..3dc4bc0 --- /dev/null +++ b/includes/FreeBSD.zsh @@ -0,0 +1,35 @@ +# create a zkbd compatible hash; +# to add other keys to this hash, see: man 5 terminfo +typeset -A key + +key[Home]=${terminfo[khome]} +key[End]=${terminfo[kend]} +key[Insert]=${terminfo[kich1]} +key[Delete]=${terminfo[kdch1]} +key[Up]=${terminfo[kcuu1]} +key[Down]=${terminfo[kcud1]} +key[Left]=${terminfo[kcub1]} +key[Right]=${terminfo[kcuf1]} +key[PageUp]=${terminfo[kpp]} +key[PageDown]=${terminfo[knp]} + +# setup key accordingly +[[ -n "${key[Home]}" ]] && bindkey "${key[Home]}" beginning-of-line +[[ -n "${key[End]}" ]] && bindkey "${key[End]}" end-of-line +[[ -n "${key[Insert]}" ]] && bindkey "${key[Insert]}" overwrite-mode +[[ -n "${key[Delete]}" ]] && bindkey "${key[Delete]}" delete-char +[[ -n "${key[Up]}" ]] && bindkey "${key[Up]}" up-line-or-history +[[ -n "${key[Down]}" ]] && bindkey "${key[Down]}" down-line-or-history +[[ -n "${key[Left]}" ]] && bindkey "${key[Left]}" backward-char +[[ -n "${key[Right]}" ]] && bindkey "${key[Right]}" forward-char + +# Finally, make sure the terminal is in application mode, when zle is +# active. Only then are the values from $terminfo valid. +function zle-line-init () { + echoti smkx +} +function zle-line-finish () { + echoti rmkx +} +zle -N zle-line-init +zle -N zle-line-finish -- 2.39.2