#!/bin/sh # char width: 7 # char height: 15 # clear screen printf '\033[2J' # set color printf '\033[46;31;3m' #move to 2,0 printf '\033[2H' # set text TEXT="The path of the righteous man is beset on all sides by the iniquities of the selfish and the tyranny of evil men. Blessed is he who, in the name of charity and good will, shepherds the weak through the valley of darkness, for he is truly his brother's keeper and the finder of lost children. And I will strike down upon thee with great vengeance and furious anger those who would attempt to poison and destroy My brothers. And you will know My name is the Lord when I lay My vengeance upon thee." # display text printf "%s\r\n%s\r\n%s" "$TEXT" "$TEXT" "$TEXT" # force render printf '\033}tr\0' ## full paragraph printf '\033}td;2;50;1;0;0\0' printf '\033}tu;2;50;1;0;0\0' printf '\033}td;2;50;1;0;1\0' printf '\033}tu;2;50;1;0;1\0' printf '\033}td;2;50;1;0;2\0' printf '\033}tu;2;50;1;0;2\0' # force render printf '\033}tr\0' # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0' # mouse down to start selection printf '\033}td;395;148;1;0;0\0' # mouse move printf '\033}tm;525;148;0\0' # mouse up printf '\033}tu;525;148;1;0;0\0' # force render printf '\033}tr\0' # selection is printf '\033}tsthe name of charity\0' # scroll 30 lines for L in $(seq 30); do printf '\r\n%s' "$L" done # force render printf '\033}tr\0' ## simple selection printf '\033}td;0;14;1;0;0\0' printf '\033}tm;8;14\0' printf '\033}tm;7;14\0' printf '\033}tu;7;14;1;0;0\0' # force render printf '\033}tr\0' # selection is '7' printf '\033}ts7\0' # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0' # one wheel up printf '\033}tw;0;0;1;1;0\0' ## simple selection printf '\033}td;0;14;1;0;0\0' printf '\033}tm;8;14\0' printf '\033}tm;7;14\0' printf '\033}tu;7;14;1;0;0\0' # force render printf '\033}tr\0' # selection is '3' printf '\033}ts3\0' # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0' # mouse wheel up for _ in $(seq 5); do printf '\033}tw;0;0;1;1;0\0' done # force render printf '\033}tr\0' ## normal selection # mouse down to start selection printf '\033}td;35;118;1;0;0\0' # mouse move printf '\033}tm;125;135;0\0' # mouse up printf '\033}tu;125;135;1;0;0\0' # force render printf '\033}tr\0' # selection is printf '\033}tsother\047s keeper and the finder of lost children. And I will strike down upon thee with great ve\0' # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0' ## double click: word selection printf '\033}td;230;134;1;0;0\0' printf '\033}tu;230;134;1;0;0\0' printf '\033}td;230;134;1;0;1\0' printf '\033}tu;230;134;1;0;1\0' # force render printf '\033}tr\0' # selection is printf '\033}tsfurious\0' # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0' ## triple click: full paragraph selection printf '\033}td;236;132;1;0;0\0' printf '\033}tu;236;132;1;0;0\0' printf '\033}td;236;132;1;0;1\0' printf '\033}tu;236;132;1;0;1\0' printf '\033}td;236;132;1;0;2\0' printf '\033}tu;236;132;1;0;2\0' # force render printf '\033}tr\0' # selection is printf '\033}ts%s\0' "$TEXT" # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0' ## empty selection # mouse down to start selection printf '\033}td;35;320;1;0;0\0' # mouse move printf '\033}tm;35;305;0\0' # mouse up printf '\033}tu;35;305;1;0;0\0' # force render printf '\033}tr\0' # selection is printf '\033}ts\n4\n\0' # remove selection printf '\033}td;0;0;1;0;0\0\033}tu;0;0;1;0;0\0' printf '\033}tr\0\033}tn\0'