# Example from page 98 typeset -A Keytable trap 'eval "${Keytable[${.sh.edchar}]}"' KEYBD function keybind # key [action] { typeset key=$(print -f "%q" "$2") case $# in 2) Keytable[$1]=' .sh.edchar=${.sh.edmode}'"$key" ;; 1) unset Keytable[$1] ;; *) print -u2 "Usage: $0 key [action]" return 2 # usage errors return 2 by default ;; esac }