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.
64 lines
1.4 KiB
64 lines
1.4 KiB
2 years ago
|
#!/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.
|
||
2 years ago
|
# This script contains all cursor control codes in the POSIX standard.
|
||
|
# You must source this script with 'source ./cursor' or '. ./cursor' to use it.
|
||
2 years ago
|
#
|
||
|
# 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"
|
||
|
}
|