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 |