ao-mud is a spellbook of well-commented atomic bash scripts that each do one thing. we are building semantic building blocks for an autonomously-evolving digital spellcasting language.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.4 KiB

#!/usr/bin/env sh
# This magical knowledge of textual cantrips allows for powerful cursor prestidigitation,
# allowing you to control the position and appearance of the terminal cursor.
# Use these variables to move the cursor around the screen,
# hide and show it, and save and restore its position.
# This script contains all cursor control codes in the POSIX standard.
# You must source this script with 'source ./cursor' or '. ./cursor' to use it.
#
# Example usage:
# printf "$SAVE_CURSOR"
# printf "$MOVE_UP"
# printf "$MOVE_LEFT"
# printf "Hello, world!"
# printf "$RESTORE_CURSOR"
# Clearing
CLEAR_SCREEN="\033[2J"
CLEAR_LINE="\033[K"
# Save cursor position
SAVE_CURSOR="\033[s"
# Restore cursor position
RESTORE_CURSOR="\033[u"
# Move cursor (one line/column)
MOVE_UP="\033[A"
MOVE_DOWN="\033[B"
MOVE_RIGHT="\033[C"
MOVE_LEFT="\033[D"
# Move cursor to column n
# usage: move_to_column n
move_to_column() {
echo -en "\033[${1}G"
}
# Move cursor to row n
# usage: move_to_row n
move_to_row() {
echo -en "\033[${1}H"
}
# Move cursor to row n, column m
# usage: move_to_xy n m
move_to_xy() {
echo -en "\033[${1};${2}H"
}
# Hide and show cursor
HIDE_CURSOR="\033[?25l"
SHOW_CURSOR="\033[?25h"
# Scrolling
SCROLL_SCREEN="\033[S"
REVERSE_SCROLL_SCREEN="\033[T"
# Set scrolling region
# usage: set_scroll_region top bottom
set_scroll_region() {
echo -en "\033[${1};${2}r"
}