  
      tput rc; echo -n -e "$(printf "\x${table[${columns[$index]}]}")"; tput rc
  
      case "${k^^}" in
          'U'|'D'|'B'|'X')
  		(( undo_count++ )); undo+=(["$undo_count"]="${columns[@]}")
  		if [[ $undo_count -gt $undo_size ]]; then
                    (( undo_count-- )); unset "undo[1]"
                    undo_buf=(); for (( i=1; i<=${#undo[@]}; i++ )); do undo_buf+=(["$i"]=`echo ${undo[$((i+1))]}`); done
                    undo=();     for (( i=1; i<=${#undo_buf[@]}; i++ )); do undo+=(["$i"]=`echo ${undo_buf[$i]}`);   done
                  fi
                  undo_index=$undo_count
  		;;&
  	'U')
  		 (( count++ )); count=$(( count % ${#table[@]} ));
  	         columns[$index]="$count";
  	         ;;
  	'D')
  		 (( count-- )); [[ $count -lt 0 ]] && count=$((${#table[@]}-1));
  		 columns[$index]="$count"
  	 	 ;;
  
  	'L')
  		(( index-- )); [[ $index -lt 0 ]] && index=0;
  	        [ -z "${columns[$index]}" ] && columns[$index]=0;
  	        count=${columns[$index]}; tput cup $ROW $(( index + COLUMN )); tput sc
  	        ;;
  	'R')
  		(( index++ )); [ -z "${columns[$index]}" ] && columns[$index]=0;
  	        count=${columns[$index]}; tput cup $ROW $(( index + COLUMN )); tput sc
  	        ;;
          'A')
  		{ for c in "${columns[@]}"; do printf "\x${table[$c]}"; done | sed 's/[[:blank:]]*$//'; printf "\n"; } > $output_path
                  clear; sleep 1
  		echo -e "'$(cat $output_path)' [$(($(cat $output_path | wc -c)-1))]\t$output_path"
  		return
  		;;
          'B')
                  buffer=("${columns[@]}"); unset "buffer[$index]"; columns=("${buffer[@]}")
                  printf '\033c'
                  for c in "${columns[@]}"; do printf "\x${table[$c]}"; done; tput cup $ROW $(( index + COLUMN )); tput sc
  		;;
          'X')
                  buffer=("${columns[@]:0:index}"); buffer+=( 0 ); buffer+=("${columns[@]:index}"); columns=("${buffer[@]}")
                  printf '\033c'
                  for c in "${columns[@]}"; do printf "\x${table[$c]}"; done; tput cup $ROW $(( index + COLUMN )); tput sc
  		;;
          'Y')
  		for (( k=${#undo[@]}; k>0; k-- )); do
                    if [[ $k -eq $undo_index ]] && [ ! -z "${undo[$k]}" ]; then
                      columns=(`echo ${undo[$k]}`); count=${columns[$index]};
                      [[ $undo_index -gt 1 ]] && (( undo_index-- ))
                      break
                    fi
                  done
  
                  printf '\033c'
                  for c in "${columns[@]}"; do printf "\x${table[$c]}"; done; tput cup $ROW $(( index + COLUMN )); tput sc
  		;;
  
  	'Q')    clear; exit
  		;;
      esac
  
      echo -n -e "\e[7m$(printf "\x${table[${columns[$index]}]}")"; echo -e "\e[0m"; tput rc
