рд╣рдмреЗрд░реЗ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧреЗрдо рдСрди рдмреИрд╢ рдХреЗ рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рдпреЗ рд╣реИрдВ
рд╢рддрд░рдВрдЬ ,
рдЬрд╝реЛрдирд┐рдХреНрд╕ ,
рд╕реЛрдХреЛрдмрди ,
рд╕реА рдмреИрдЯрд▓ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐
рдЫрджреНрдо 3 рдбреА рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╡рд╛рд▓реЗ рд╢реВрдЯрд░ рднреАред рд▓реЗрдХрд┐рди рдЗрди рд╕рднреА рдЦреЗрд▓реЛрдВ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдг рдХреАрдмреЛрд░реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЖрдЧреЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдмреИрд╢ рдкрд░ рдПрдХ рдЧреЗрдо рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдорд╛рдЙрд╕ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рд╕рд╛рде рд╣реА, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдЦреЗрд▓ рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдкреНрд░рддрд┐рд░реЛрдз рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░рддрд┐рд░реЛрдзреА рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рддреЛ, рдЪрд▓реЛ рдПрдХ Quadronix рдЦреЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдХреНрд╡рд╛рдбреНрд░реЛрдирд┐рдХреНрд╕ рдЧреЗрдо рджреЗрдЦрд╛ рдерд╛ рдЬреЛ рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдлреЛрди рдкрд░ рдореЗрд░реЗ рднрд╛рдИ рдХреЗ рд╕рд╛рде рдерд╛, рдФрд░ рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЗрд╕реЗ рдЦреЗрд▓рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореЗрд░реЗ рднрд╛рдИ рдиреЗ рд▓рдЧрднрдЧ рдЕрдкрдирд╛ рдлреЛрди рдореБрдЭреЗ рдирд╣реАрдВ рджрд┐рдпрд╛, рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рдЬрд╛рд╡рд╛ рдПрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЗрд▓ рдХреЗ рдХреНрд▓реЛрди рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд┐рдпрд╛, рдЬрдмрдХрд┐ рдореИрдВ рд╕рд┐рд░реНрдл рдЬрд╛рд╡рд╛ рд╕реАрдЦ рд░рд╣рд╛ рдерд╛ред
рдФрд░ рдЕрдм, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐
рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░
3 рдбреА рдЧреЗрдо рдХреЗ рдЗрдореНрдпреВрд▓реЗрдЯрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреИрд╢ рдкрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдмреИрд╢ рдкрд░ рдПрдХреНрд╕реЛрдирд┐рдХреНрд╕ рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реА рд╢рддрд╛рдмреНрджреА рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдмреИрд╢ рдкрд░ рдХреНрд╡рд╛рдбреНрд░реЛрдирд┐рдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рджрд┐рдорд╛рдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд░реНрдХрдЖрдЙрдЯ рд╣реЛрдЧрд╛ред
рдЦреЗрд▓ рдХреЗ рдирд┐рдпрдо рд╕рд░рд▓ рд╣реИрдВред рдЖрдкрдХреЛ рдЖрдпрддреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рднреА рдЪрд╛рд░ рдХреЛрдиреЗ рдПрдХ рд╣реА рд░рдВрдЧ рдХреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдЖрдпрдд рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддрд┐рд░рдЫреЗ рд╡рд┐рдкрд░реАрдд рддрд┐рд░рдЫреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдпрдд рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдЖрдиреБрдкрд╛рддрд┐рдХ рд╣реИред рдФрд░ рдирд╖реНрдЯ рдХрд┐рдП рдЧрдП рдЖрдпрдд рдХреЗ рд╕реНрдерд╛рди рдкрд░, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░рдВрдЧ рдХреЗ рдирдП рд╡рд░реНрдЧ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдЦреЗрд▓ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛, рдЕрдзрд┐рдХ рдЕрдВрдХ, рддреЗрдЬреА рд╕реЗ рд╕рдордп рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдХрд┐рд╕реА рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдПрдХ рдЖрдпрдд рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢реЗрд╖ рд╕рдордп рдореЗрдВ рд╕реЗ рдПрдХ рджрдВрдб рдХрд╛рдЯ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рд╢реАрд░реНрд╖ рдХреЛ рдЕрдЪрдпрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдорд╛рдЙрд╕ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЦреЗрд▓ рдЦреЗрд▓рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдЦреИрд░, рд╣рдореЗрдВ рдорд╛рдЙрд╕ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реИред рд╣рдо
man console_codes
рджреЗрддреЗ
man console_codes
рдФрд░ рд╡рд╣рд╛рдВ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкрд▓рд╛рдпрди рдХреНрд░рдо
ESC [ ? 9 h
ESC [ ? 9 h
рдорд╛рдЙрд╕ рдЯреНрд░реИрдХрд┐рдВрдЧ рдореЛрдб рд╕рдХреНрд╖рдо рдХрд░реЗрдВ,
рдФрд░ рднрд╛рдЧрдиреЗ рдХрд╛ рдХреНрд░рдо
ESC [ ? 9 l
ESC [ ? 9 l
рдЗрд╕ рдореЛрдб рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЬрдм рдЯреНрд░реИрдХрд┐рдВрдЧ рдореЛрдб рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдорд╛рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рддреЛ рдорд╛рдЙрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдг рдЕрдиреБрдХреНрд░рдо рдХрдВрд╕реЛрд▓ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдкрд░ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред рдЙрдирдХреЗ рдкрд╛рд╕
ESC [ M bxy
рдкреНрд░рд╛рд░реВрдк
ESC [ M bxy
, рдЬрд╣рд╛рдБ
b
рдореЗрдВ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рдмрдЯрди рдФрд░ рд╕рдВрд╢реЛрдзрдХ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдФрд░
x
рдФрд░
y
ESC [ M bxy
рдорд╛рдЙрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ
ESC [ M bxy
рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдкреНрд░рддреАрдХ
b
рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рдФрд░ рдорд╛рдЙрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
x
рдФрд░
y
рджреЛрдиреЛрдВ рд╕реЗ
32
рдХреЛ рдШрдЯрд╛рдирд╛ рд╣реЛрдЧрд╛ред
рд▓реЗрдХрд┐рди рдмреИрд╢ рдкрд░ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдХрд╛рдо рдЪрд░рд┐рддреНрд░ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╕рдмрд╕реЗ рд╕рд░рд▓, рдХрдорд╛рдВрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдЧрд╛, рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
LC_ALL=C printf -v code '%d' "'$data"
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдбреЙрд▓рд░ рдХреЗ рд╕рдВрдХреЗрдд рд╕реЗ рдкрд╣рд▓реЗ рдПрдХрд▓ рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреЛрдбред рдФрд░
LC_ALL=C
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ 127 рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрдб рд╡рд╛рд▓реЗ рдЪрд░рд┐рддреНрд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рдПрдХ рдорд▓реНрдЯреАрдмрд╛рдЗрдЯ рдЪрд░рд┐рддреНрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВред
рддреЛ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдпрд╣ рдХрд╣рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
$ ./mouse.sh button=0 column=46 row=17 button=0 column=61 row=19 button=0 column=64 row=15 button=0 column=59 row=11 button=0 column=43 row=9 button=0 column=36 row=10 button=0 column=42 row=17 button=0 column=63 row=23 button=0 column=75 row=22 button=0 column=91 row=19 $
рдпрджрд┐ рдЖрдк рдмрдЪ рдХреНрд░рдо
ESC [ ? 1000 h
рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
ESC [ ? 1000 h
ESC [ ? 1000 h
, рдЖрдк рдорд╛рдЙрд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдФрд░ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрдо рдирд╛рдЬреБрдХ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЕрдЧрд░ рдЖрдк Ctrl + C рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдкрд╣рд▓реА рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЖрдк
reset
рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕реЗ
reset
рдХрдорд╛рдВрдб рдХрд╣реЗрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЧреЗрдо рдореЗрдВ рд░рдВрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рджрдмрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЬрдм рддрдХ рдЖрдк рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░
reset
рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрдм рддрдХ рдЯрд░реНрдорд┐рдирд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реЛрдЧрд╛ред
рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрдд рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
trap
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
trap
trap -l
рдЯрд╛рдЗрдк рдХрд░рдХреЗ
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐
рдкреИрд░рд╛рдореАрдЯрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗрдЯ рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рдЖрдк
EXIT
рдХреЛ
рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
function initApplication() { stty -echo echo -ne $HIDE_CURSOR_CODE trap finishApplication EXIT ... } function finishApplication() { trap EXIT reset } initApplication runApplication finishApplication
рджреВрд╕рд░рд╛ рдорд╛рдорд▓рд╛ рдЬрдм рд╣рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рд╕рднреА рд╕реБрдВрджрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреНрд░реЙрд▓ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЯрд░реНрдорд┐рдирд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЖрдк
SIGWINCH
рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
function repaint() { LINES=`tput lines` COLUMNS=`tput cols` mapXPosition=$(((COLUMNS - CELL_WIDTH * MAP_WIDTH) / 2 + 1)) mapYPosition=$(((LINES - CELL_HEIGHT * MAP_HEIGHT) / 2 + 1)) timerXPosition=$((MAP_WIDTH * CELL_WIDTH + mapXPosition + 6)) timerYPosition=$((mapYPosition)) echo -ne "\e[0m" clear drawMap drawHeader drawFooter ((isInvalidated = 0)) } function initApplication() { ... trap "((isInvalidated = 1))" SIGWINCH } function runGame() { local key ... while true; do if ((isInvalidated)); then repaint fi ... key="" ... case "$key" in $NEW_GAME_CODE) continue 2;; $EXIT_CODE) break 2;; $ESC_CODE) ... esac ... done }
рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк
DEBUG
рдХреЛ
рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХрднреА-рдХрднреА рдпрд╣ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред
рдЦреИрд░, рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ:
quadronix.sh ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐
man bash
,
man console_codes
рдФрд░ рдПрдмреАрдПрд╕ рдХреЛ рдЕрдВрддрд╣реАрди рд░реВрдк рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рд░ рдмрд╛рд░ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдирдП рдкрд╣рд▓реБрдУрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреИрд╢ рдореЗрдВред