Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ программирования Π² LinuxΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 97

Автор ΠœΡΡ‚ΡŒΡŽ НСйл

Π£ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ curses Π΅ΡΡ‚ΡŒ свой ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…

chtype
, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ большС разрядов, Ρ‡Π΅ΠΌ стандартный Ρ‚ΠΈΠΏ
char
. Π’ стандартной вСрсии ncurses для ОБ Linux
chtype
Π½Π° самом Π΄Π΅Π»Π΅ β€” синоним стандартного Ρ‚ΠΈΠΏΠ°
unsigned long
.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

addch
ΠΈ
addchstr
Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ символ ΠΈΠ»ΠΈ строку Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° экранС. Ѐункция
printw
Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ строку Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ функция
printf
, ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π² Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° экранС. Ѐункция
refresh
Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ физичСского экрана, возвращая
OK
Π² случаС успСха ΠΈ
ERR
ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки. Ѐункция
box
позволяСт Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΠΌΠΊΡƒ Π²ΠΎΠΊΡ€ΡƒΠ³ ΠΎΠΊΠ½Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ curses Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ "ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅" символы для рисования Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ. Π’ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ вСрсии Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° опрСдСлСния,

ASC_VLINE
ΠΈ
ACS_HLINE
, для Π²Ρ‹Π²ΠΎΠ΄Π° символов Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ соотвСтствСнно, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ внСшнС Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ. Для этого ваш Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ символы псСвдографики. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΎΠΊΠ½Π΅ эмулятора xterm, Ρ‡Π΅ΠΌ Π½Π° стандартной консоли, Π½ΠΎ ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠΎΠ»Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ "Π·Π°ΠΏΠ»Π°Ρ‚", поэтому ΠΌΡ‹ ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚ ΠΈΡ… примСнСния, Ссли Π²Π°ΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Ѐункция

insch
вставляСт символ, сдвигая ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ символы Π²ΠΏΡ€Π°Π²ΠΎ. ΠŸΡ€ΠΈ этом Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π² ΠΊΠΎΠ½Ρ†Π΅ строки, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°. Ѐункция
insertln
вставляСт ΠΏΡƒΡΡ‚ΡƒΡŽ строку, пСрСмСщая ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ строки Π½Π° ΠΎΠ΄Π½Ρƒ Π²Π½ΠΈΠ·. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ
delch
ΠΈ
deleteln
Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ функциям
insert
.

Для получСния Π·Π²ΡƒΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

beep
. НСмногиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Ρ‹ Π½Π΅ способны ΠΈΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΈ, Π² этом случаС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ установки Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ curses ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅
beep
заставят экран ΠΌΠΈΠ³Π°Ρ‚ΡŒ. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² густонасСлСнном офисС ΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ сигналы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ сочтСтС ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ. Как ΠΈ оТидалось, функция
flash
Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠΈΠ³Π°Π½ΠΈΠ΅ экрана, Ссли это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΠ·Π΄Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ сигнал Π²Π·Π°ΠΌΠ΅Π½.

Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ с экрана

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ символы с экрана, хотя эта Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСняСтся нСчасто, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ выводится. Если Π²Π°ΠΌ всС-Ρ‚Π°ΠΊΠΈ это потрСбуСтся, выполняйтС считываниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

<b>#include &lt;curses.h&gt;</b>

<b>chtype inch(void);</b>

<b>int instr(char *string);</b>

<b>int innstr(char *string, int number_of_characters);</b>

Ѐункция

inch
Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ всСгда доступна, Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
instr
ΠΈ
innstr
Π½Π΅ всСгда ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ. Ѐункция
inch
Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ символ ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ курсора Π½Π° экранС ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ…. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅
char
, a
chtype
, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
instr
ΠΈ
innstr
ΠΏΠΈΡˆΡƒΡ‚ Π² массивы с элСмСнтами Ρ‚ΠΈΠΏΠ°
char
.

ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° экрана

БущСствуСт Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ основных способа очистки области экрана:

<b>#include &lt;curses.h&gt;</b>

<b>int erase (void);</b>

<b>int clear(void);</b>

<b>int clrtobot(void);</b>

<b>int clrtoeol(void);</b>

Ѐункция

erase
записываСт ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π²ΠΎ всС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ экрана. Ѐункция
clear
, ΠΊΠ°ΠΊ ΠΈ
erase
, ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран, Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСрисовку экрана с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ clear
o
k, которая выполняСт ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ очистки экрана ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ экрана ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅
refresh
.

Ѐункция

clear
ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ примСняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, которая ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ вСсь экран, Π° Π½Π΅ пытаСтся ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π½Π΅ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы Π²ΠΎ всСх Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… экрана. Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
clear
Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ срСдством очистки экрана. Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
clear
с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ
refresh
ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ пСрСрисовки экрана Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° экранС бСспорядочно ΠΈΠ»ΠΈ испорчСно ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Ѐункция

clrtobot
ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран, начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ курсора ΠΈ Π΄Π°Π»Π΅Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° экрана, Π° функция
clrtoeol
ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ экран, начиная с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ курсора Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится курсор.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ курсора

Для пСрСмСщСния курсора примСняСтся СдинствСнная функция с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ курсора послС обновлСния экрана.

<b>#include &lt;curses.h&gt;</b>

<b>int move(int new_y, int new_x);</b>

<b>int leaveok(WINDOW *window_ptr, bool leave_flag);</b>

Ѐункция

move
просто пСрСносит ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ логичСского курсора Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ мСсто Π½Π° экранС. НапоминаСм ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ экранных ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ (0, 0) находится Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ экрана. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ вСрсий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ curses Π΄Π²Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ цСлочислСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅,
LINES
ΠΈ
COLUMNS
, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ физичСского экрана ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для опрСдСлСния максимально допустимых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²
new_y
ΠΈ
new_x
. Π’Ρ‹Π·ΠΎΠ²
move
сам ΠΏΠΎ сСбС Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ физичСского курсора. Он Ρ‚ΠΎΠ»ΡŒΠΊΠΎ измСняСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° логичСском экранС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ экранный курсор пСрСмСстился Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ послС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ move, Π²ΡΡ‚Π°Π²ΡŒΡ‚Π΅ слСдом Π·Π° Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
refresh
.

Ѐункция

leaveok
устанавливаСт Ρ„Π»Π°Π³, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ курсора Π½Π° физичСском экранС послС Π΅Π³ΠΎ обновлСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ„Π»Π°Π³ Ρ€Π°Π²Π΅Π½
false
, ΠΈ послС Π²Ρ‹Π·ΠΎΠ²Π°
refresh
Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ курсор остаСтся Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠ΅ экрана, Ρ‡Ρ‚ΠΎ ΠΈ логичСский курсор. Если Ρ„Π»Π°Π³ Ρ€Π°Π²Π΅Π½
true
, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΉ курсор ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² случайно Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ экрана. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, устанавливаСмоС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ, Ρ‚.ΠΊ. курсор остаСтся Π² Π½Π΅ лишСнной смысла ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.