
    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
