Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Очистка терминала.
- och="\\033[2J"
- # Включаем отслеживание мышки.
- vklotslm="\\e[?9h"
- # Отключаем отслеживание мышки.
- otklotslm="\\e[?9l"
- # Начальная последовательность символов для эскейп-последовательностей.
- nach="\\033["
- # Концовка для некоторых эскейп-последовательностей, например - задание цвета.
- # Отменяет ранее установленный цвет.
- vcvet="\\033[0;39m"
- # Задание зелёного цвета.
- zel="\\033[0;32m"
- # Задание красного цвета.
- kr="\\033[0;33m"
- lv="┏"
- pv="┓"
- ln="┗"
- pn="┛"
- gor="━"
- vert="┃"
- pozllv=1
- pozklv=1
- # Координаты мышки.
- declare -i mouseX
- declare -i mouseY
- # Код нажатой клавиши мышки.
- declare -i mouseButton
- declare -r esc_code=$'\e'
- declare -r exit_code='x'
- declare key
- nachyst()
- {
- # Узнаём размеры текущего терминала.
- # Сколько строк.
- lin=`tput lines`
- # Сколько столбцов.
- col=`tput cols`
- echo -ne $och
- echo -ne "${nach}${pozllv};${pozklv}H${zel}${lv}${vcvet}"
- for (( i=2 ; i<"$col" ; i++ ))
- do
- echo -ne "${nach}${pozllv};${i}H${zel}${gor}${vcvet}"
- done
- echo -ne "${nach}${pozllv};${col}H${zel}${pv}${vcvet}"
- for (( i=2 ; i<"$lin" ; i++ ))
- do
- echo -ne "${nach}${i};${pozllv}H${zel}${vert}${vcvet}"
- done
- for (( i=2 ; i<"$lin" ; i++ ))
- do
- echo -ne "${nach}${i};${col}H${zel}${vert}${vcvet}"
- done
- echo -ne "${nach}${lin};${pozklv}H${zel}${ln}${vcvet}"
- for (( i=2 ; i<"$col" ; i++ ))
- do
- echo -ne "${nach}${lin};${i}H${zel}${gor}${vcvet}"
- done
- echo -ne "${nach}${lin};${col}H${zel}${pn}${vcvet}"
- }
- analizkey()
- {
- case "$key"
- in
- q|e|x)
- vozvrisx
- exit 0
- ;;
- *)
- ;;
- esac
- return 0
- }
- vozvrisx()
- {
- tput reset
- # Делаем видимым курсор.
- tput cnorm
- # Включаем эхо.
- stty echo
- echo -ne $otklotslm
- return 0
- }
- readMouse()
- {
- local mouseButtonData
- local mouseXData
- local mouseYData
- local -i mouseButtonCode
- local -i mouseXCode
- local -i mouseYCode
- read -r -s -n 1 -t 1 mouseButtonData
- read -r -s -n 1 -t 1 mouseXData
- read -r -s -n 1 -t 1 mouseYData
- LC_ALL=C printf -v mouseButtonCode '%d' "'$mouseButtonData"
- LC_ALL=C printf -v mouseXCode '%d' "'$mouseXData"
- LC_ALL=C printf -v mouseYCode '%d' "'$mouseYData"
- ((mouseButton = mouseButtonCode))
- ((mouseX = mouseXCode - 32))
- ((mouseY = mouseYCode - 32))
- }
- printMouseInfo()
- {
- echo -ne "${nach}${pozl1};${pozk1}HLANG="$LANG
- echo -ne "${nach}${pozl2};${pozk2}HLC_ALL="$LC_ALL
- echo -ne "${nach}${pozl3};${pozk3}HКод нажатой клавиши мышки равен: "$mouseButton
- echo -ne "${nach}${pozl4};${pozk4}HГоризонтальная координата мышки равна: "$mouseX
- echo -ne "${nach}${pozl5};${pozk5}HВертикальная координата мышки равна: "$mouseY
- }
- trap 'nachyst' SIGWINCH
- # Отключаем эхо.
- stty -echo
- tput reset
- # Прячем курсор.
- tput civis
- nachyst
- ((pozl1 = (lin / 2) - 2))
- ((pozl2 = (lin / 2) - 1))
- ((pozl3 = lin / 2))
- ((pozl4 = (lin / 2) + 1))
- ((pozl5 = (lin / 2) + 2))
- ((pozk1 = (col - 16) / 2))
- ((pozk2 = (col - 16) / 2))
- ((pozk3 = (col / 2) - 32))
- ((pozk4 = (col / 2) - 38))
- ((pozk5 = (col / 2) - 36))
- echo -ne $vklotslm
- while true
- do
- # key=""
- # read -r -s -t 1 -n 1 key
- # read -r -s -n 1 key
- readMouse
- printMouseInfo
- # per1=$(( $RANDOM % $(tput lines)))
- # per2=$(( $RANDOM % $(tput cols)))
- # tput cup $per1 $per2
- # sleep 2 #s second m minuite
- # case "$key"
- # in
- # $exit_code)
- # vozvrisx
- # break
- # ;;
- # $esc_code)
- # read -r -s -t 1 -n 1 key
- # if [[ "$key" == '[' ]]
- # then
- # read -r -s -t 1 -n 1 key
- # if [[ "$key" == "M" ]]
- # then
- # readMouse
- # printMouseInfo
- # fi
- # fi
- # ;;
- # esac
- # read -t 1 -n 1 key
- read -r -s -t 1 -n 1 key
- analizkey
- done
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement