Advertisement
v4567

Untitled

Jul 8th, 2017
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.48 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3.  
  4.  
  5.  
  6. # Очистка терминала.
  7. och="\\033[2J"
  8. # Включаем отслеживание мышки.
  9. vklotslm="\\e[?9h"
  10. # Отключаем отслеживание мышки.
  11. otklotslm="\\e[?9l"
  12. # Начальная последовательность символов для эскейп-последовательностей.
  13. nach="\\033["
  14.  
  15. # Концовка для некоторых эскейп-последовательностей, например - задание цвета.
  16. # Отменяет ранее установленный цвет.
  17. vcvet="\\033[0;39m"
  18. # Задание зелёного цвета.
  19. zel="\\033[0;32m"
  20. # Задание красного цвета.
  21. kr="\\033[0;33m"
  22.  
  23. lv="┏"
  24. pv="┓"
  25. ln="┗"
  26. pn="┛"
  27. gor="━"
  28. vert="┃"
  29.  
  30.  
  31. pozllv=1
  32. pozklv=1
  33.  
  34. # Координаты мышки.
  35. declare -i mouseX
  36. declare -i mouseY
  37. # Код нажатой клавиши мышки.
  38. declare -i mouseButton
  39.  
  40. declare -r esc_code=$'\e'
  41. declare -r exit_code='x'
  42.  
  43. declare key
  44.  
  45.  
  46. nachyst()
  47. {
  48.  
  49.  
  50.  # Узнаём размеры текущего терминала.
  51.  # Сколько строк.
  52.  lin=`tput lines`
  53.  # Сколько столбцов.
  54.  col=`tput cols`
  55.  
  56.  echo -ne $och
  57.  echo -ne "${nach}${pozllv};${pozklv}H${zel}${lv}${vcvet}"
  58.  for (( i=2 ; i<"$col" ; i++ ))
  59.   do
  60.     echo -ne "${nach}${pozllv};${i}H${zel}${gor}${vcvet}"
  61.  done
  62.  echo -ne "${nach}${pozllv};${col}H${zel}${pv}${vcvet}"
  63.  for (( i=2 ; i<"$lin" ; i++ ))
  64.   do
  65.     echo -ne "${nach}${i};${pozllv}H${zel}${vert}${vcvet}"
  66.  done
  67.  for (( i=2 ; i<"$lin" ; i++ ))
  68.   do
  69.     echo -ne "${nach}${i};${col}H${zel}${vert}${vcvet}"
  70.  done
  71.  echo -ne "${nach}${lin};${pozklv}H${zel}${ln}${vcvet}"
  72.  for (( i=2 ; i<"$col" ; i++ ))
  73.   do
  74.     echo -ne "${nach}${lin};${i}H${zel}${gor}${vcvet}"
  75.  done
  76.  echo -ne "${nach}${lin};${col}H${zel}${pn}${vcvet}"
  77.  
  78.  
  79. }
  80.  
  81. analizkey()
  82. {
  83.  
  84.  
  85.  case "$key"
  86.   in
  87.     q|e|x)
  88.           vozvrisx
  89.           exit 0
  90.     ;;
  91.     *)
  92.     ;;
  93.  esac
  94.  
  95.  
  96.  return 0
  97.  
  98.  
  99. }
  100.  
  101. vozvrisx()
  102. {
  103.  
  104.  
  105.  tput reset
  106.  # Делаем видимым курсор.
  107.  tput cnorm
  108.  # Включаем эхо.
  109.  stty echo
  110.  
  111.  echo -ne $otklotslm
  112.  
  113.  return 0
  114.  
  115.  
  116. }
  117.  
  118. readMouse()
  119. {
  120.  
  121.  
  122.  local mouseButtonData
  123.  local mouseXData
  124.  local mouseYData
  125.  local -i mouseButtonCode
  126.  local -i mouseXCode
  127.  local -i mouseYCode
  128.  
  129.  read -r -s -n 1 -t 1 mouseButtonData
  130.  read -r -s -n 1 -t 1 mouseXData
  131.  read -r -s -n 1 -t 1 mouseYData
  132.  
  133.  LC_ALL=C printf -v mouseButtonCode '%d' "'$mouseButtonData"
  134.  LC_ALL=C printf -v mouseXCode '%d' "'$mouseXData"
  135.  LC_ALL=C printf -v mouseYCode '%d' "'$mouseYData"
  136.  
  137.  ((mouseButton = mouseButtonCode))
  138.  ((mouseX = mouseXCode - 32))
  139.  ((mouseY = mouseYCode - 32))
  140.  
  141.  
  142. }
  143.  
  144. printMouseInfo()
  145. {
  146.  
  147.  
  148.  echo -ne "${nach}${pozl1};${pozk1}HLANG="$LANG
  149.  echo -ne "${nach}${pozl2};${pozk2}HLC_ALL="$LC_ALL
  150.  echo -ne "${nach}${pozl3};${pozk3}HКод нажатой клавиши мышки равен: "$mouseButton
  151.  echo -ne "${nach}${pozl4};${pozk4}HГоризонтальная координата мышки равна: "$mouseX
  152.  echo -ne "${nach}${pozl5};${pozk5}HВертикальная координата мышки равна: "$mouseY
  153.  
  154.  
  155. }
  156.  
  157.  
  158. trap 'nachyst' SIGWINCH
  159.  
  160. # Отключаем эхо.
  161. stty -echo
  162. tput reset
  163. # Прячем курсор.
  164. tput civis
  165.  
  166. nachyst
  167.  
  168. ((pozl1 = (lin / 2) - 2))
  169. ((pozl2 = (lin / 2) - 1))
  170. ((pozl3 = lin / 2))
  171. ((pozl4 = (lin / 2) + 1))
  172. ((pozl5 = (lin / 2) + 2))
  173.  
  174. ((pozk1 = (col - 16) / 2))
  175. ((pozk2 = (col - 16) / 2))
  176. ((pozk3 = (col / 2) - 32))
  177. ((pozk4 = (col / 2) - 38))
  178. ((pozk5 = (col / 2) - 36))
  179.  
  180.  
  181. echo -ne $vklotslm
  182.  
  183. while true
  184.  do
  185.  
  186. #   key=""
  187. #   read -r -s -t 1 -n 1 key
  188. #   read -r -s -n 1 key
  189.    readMouse
  190.    printMouseInfo
  191.  
  192. #    per1=$(( $RANDOM % $(tput lines)))
  193. #    per2=$(( $RANDOM % $(tput cols)))
  194. #    tput cup $per1 $per2
  195. #    sleep 2 #s second m minuite
  196.  
  197. #   case "$key"
  198. #    in
  199. #      $exit_code)
  200. #                 vozvrisx
  201. #                 break
  202. #                 ;;
  203. #      $esc_code)
  204. #                read -r -s -t 1 -n 1 key
  205. #                if [[ "$key" == '[' ]]
  206. #                 then
  207. #                     read -r -s -t 1 -n 1 key
  208. #                     if [[ "$key" == "M" ]]
  209. #                      then
  210. #                          readMouse
  211. #                          printMouseInfo
  212. #                     fi
  213. #                fi
  214. #                ;;
  215. #   esac
  216.  
  217. #   read -t 1 -n 1 key
  218.    read -r -s -t 1 -n 1 key
  219.    analizkey
  220.  
  221. done
  222.  
  223. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement