1# stty.bash 2# Author: Noah Friedman <friedman@prep.ai.mit.edu> 3# Created: 1992-01-11 4# Last modified: 1993-09-29 5# Public domain 6 7# Conversion to bash v2 syntax done by Chet Ramey 8 9# Commentary: 10# Code: 11 12require remap_keybindings 13 14#:docstring stty: 15# Track changes to certain keybindings with stty, and make those changes 16# reflect in bash's readline bindings as well. 17# 18# This requires bash version 1.10 or newer, since previous versions did not 19# implement the `bind' builtin. 20#:end docstring: 21 22###;;;autoload 23function stty () 24{ 25 local erase="backward-delete-char" 26 local kill="unix-line-discard" 27 local werase="backward-kill-word" 28 local lnext="quoted-insert" 29 local readline_function="" 30 local key="" 31 local stty_command="" 32 33 while [ $# -gt 0 ]; do 34 case "$1" in 35 erase | kill | werase | lnext ) 36 key=$(echo "${2}" | cat -v | sed 's/\^/\\C-/') 37 readline_function=$(eval echo \$${1}) 38 39 # Get rid of any current bindings; the whole point of this 40 # function is to make the distinction between readline 41 # bindings and particular cbreak characters transparent; old 42 # readline keybindings shouldn't hang around. 43 # could use bind -r here instead of binding to self-insert 44 remap_keybindings "${readline_function}" "self-insert" 45 46 # Bind new key to appropriate readline function 47 bind "\"${key}\": ${readline_function}" 48 49 stty_command="${stty_command} ${1} ${2}" 50 shift 2 51 ;; 52 *) 53 stty_command="${stty_command} ${1}" 54 shift 55 ;; 56 esac 57 done 58 59 command stty ${stty_command} 60} 61 62provide stty 63 64# stty.bash ends here 65