From 79995ae5ee6344c96cb2224eb3a4299657280738 Mon Sep 17 00:00:00 2001 From: Matt Hamilton Date: Wed, 16 Dec 2015 01:15:30 -0500 Subject: [PATCH] add inputs module --- modules/inputs/README.md | 6 ++++ modules/inputs/init.zsh | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 modules/inputs/README.md create mode 100644 modules/inputs/init.zsh 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