43 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Stolen from ArchWiki
 | |
| 
 | |
| # 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
 | |
| [[ -n "${key[PageUp]}"   ]]  && bindkey  "${key[PageUp]}"   beginning-of-buffer-or-history
 | |
| [[ -n "${key[PageDown]}" ]]  && bindkey  "${key[PageDown]}" end-of-buffer-or-history
 | |
| 
 | |
| # Finally, 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 () {
 | |
|         printf '%s' "${terminfo[smkx]}"
 | |
|     }
 | |
|     function zle-line-finish () {
 | |
|         printf '%s' "${terminfo[rmkx]}"
 | |
|     }
 | |
|     zle -N zle-line-init
 | |
|     zle -N zle-line-finish
 | |
| fi
 | 
