60 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# A function that works as a front end for both stty and the `bind'
							 | 
						||
| 
								 | 
							
								# builtin, so the tty driver and readline see the same changes
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Convert between the stty ^H control character form and the readline \C-H
							 | 
						||
| 
								 | 
							
								# form
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								cvt()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									echo "$@" | cat -v | sed 's/\^/\\C-/'
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# stty front-end.  Parses the argument list and creates two command strings,
							 | 
						||
| 
								 | 
							
								# one for stty, another for bind.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								fstty()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									local	cmd="" bargs=""
							 | 
						||
| 
								 | 
							
									local	e
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									while [ $# -gt 0 ]
							 | 
						||
| 
								 | 
							
									do
							 | 
						||
| 
								 | 
							
										case "$1" in
							 | 
						||
| 
								 | 
							
										-a)	cmd="$cmd everything"
							 | 
						||
| 
								 | 
							
											;;
							 | 
						||
| 
								 | 
							
										erase)	shift;
							 | 
						||
| 
								 | 
							
											e=$(cvt "$1")
							 | 
						||
| 
								 | 
							
											cmd="$cmd erase $1"
							 | 
						||
| 
								 | 
							
											bargs="$bargs '\"$e\": backward-delete-char'"
							 | 
						||
| 
								 | 
							
											;;
							 | 
						||
| 
								 | 
							
										kill)	shift
							 | 
						||
| 
								 | 
							
											e=$(cvt "$1")
							 | 
						||
| 
								 | 
							
											cmd="$cmd kill $1"
							 | 
						||
| 
								 | 
							
											bargs="$bargs '\"$e\": unix-line-discard'"
							 | 
						||
| 
								 | 
							
											;;
							 | 
						||
| 
								 | 
							
										werase)	shift;
							 | 
						||
| 
								 | 
							
											e=$(cvt "$1")
							 | 
						||
| 
								 | 
							
											cmd="$cmd erase $1"
							 | 
						||
| 
								 | 
							
											bargs="$bargs '\"$e\": backward-kill-word'"
							 | 
						||
| 
								 | 
							
											;;
							 | 
						||
| 
								 | 
							
										lnext)	shift;
							 | 
						||
| 
								 | 
							
											e=$(cvt "$1")
							 | 
						||
| 
								 | 
							
											cmd="$cmd erase $1"
							 | 
						||
| 
								 | 
							
											bargs="$bargs '\"$e\": quoted-insert'"
							 | 
						||
| 
								 | 
							
											;;
							 | 
						||
| 
								 | 
							
										*)	cmd="$cmd $1"
							 | 
						||
| 
								 | 
							
											;;
							 | 
						||
| 
								 | 
							
										esac
							 | 
						||
| 
								 | 
							
										shift
							 | 
						||
| 
								 | 
							
									done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									command stty $cmd
							 | 
						||
| 
								 | 
							
									if [ -n "$bargs" ]; then
							 | 
						||
| 
								 | 
							
										builtin bind $bargs
							 | 
						||
| 
								 | 
							
									fi
							 | 
						||
| 
								 | 
							
								}
							 |