diff --git a/modules/inputs/README.md b/modules/inputs/README.md new file mode 100644 index 0000000..1cd3d01 --- /dev/null +++ b/modules/inputs/README.md @@ -0,0 +1,6 @@ +Inputs +====== + +Applys correct bindkeys for inputs. + +Without this module, you may experience oddities in how Zsh interprets input. For example, using the UP key, then using the back arrow and pressing DELETE may capatalize characters rather than delete them. diff --git a/modules/inputs/init.zsh b/modules/inputs/init.zsh new file mode 100644 index 0000000..dadff3c --- /dev/null +++ b/modules/inputs/init.zsh @@ -0,0 +1,64 @@ +# +# Editor and input char assignment +# + + +# Return if requirements are not found. +if [[ "$TERM" == 'dumb' ]]; then + return 1 +fi + +# Use human-friendly identifiers. +zmodload zsh/terminfo +typeset -gA key_info +key_info=( + 'Control' '\C-' + 'ControlLeft' '\e[1;5D \e[5D \e\e[D \eOd' + 'ControlRight' '\e[1;5C \e[5C \e\e[C \eOc' + 'Escape' '\e' + 'Meta' '\M-' + 'Backspace' "^?" + 'Delete' "^[[3~" + 'F1' "$terminfo[kf1]" + 'F2' "$terminfo[kf2]" + 'F3' "$terminfo[kf3]" + 'F4' "$terminfo[kf4]" + 'F5' "$terminfo[kf5]" + 'F6' "$terminfo[kf6]" + 'F7' "$terminfo[kf7]" + 'F8' "$terminfo[kf8]" + 'F9' "$terminfo[kf9]" + 'F10' "$terminfo[kf10]" + 'F11' "$terminfo[kf11]" + 'F12' "$terminfo[kf12]" + 'Insert' "$terminfo[kich1]" + 'Home' "$terminfo[khome]" + 'PageUp' "$terminfo[kpp]" + 'End' "$terminfo[kend]" + 'PageDown' "$terminfo[knp]" + 'Up' "$terminfo[kcuu1]" + 'Left' "$terminfo[kcub1]" + 'Down' "$terminfo[kcud1]" + 'Right' "$terminfo[kcuf1]" + 'BackTab' "$terminfo[kcbt]" +) + +# Bind the keys +bindkey "$key_info[Home]" beginning-of-line +bindkey "$key_info[End]" end-of-line + +bindkey "$key_info[Insert]" overwrite-mode +bindkey "$key_info[Delete]" delete-char +bindkey "$key_info[Backspace]" backward-delete-char + +bindkey "$key_info[Left]" backward-char +bindkey "$key_info[Right]" forward-char + +# Expandpace. +bindkey ' ' magic-space + +# Clear +bindkey "$key_info[Control]L" clear-screen + +# Bind Shift + Tab to go to the previous menu item. +bindkey "$key_info[BackTab]" reverse-menu-complete