Π§ΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄.
1: /* slecho.c */
2:
3: #include <ctype.h>
4: #include <slang/slang.h>
5: #include <stdio.h>
6:
7: int main(void) {
8: char ch = '\0';
9:
10: /*
11: ΠΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ SLANG tty ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ:
12: -1 ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΠΎΠ±ΡΡΠ½ΠΎ Ctrl-C)
13: 0 ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π½Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ; Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (ΠΊΡΠΎΠΌΠ΅
14: ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ) Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 1 ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
15: ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ OPOST ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ
16: */
17: SLang_init_tty(-1, 0, 1);
18:
19: while (ch != 'q') {
20: ch = SLang_getkey();
21: printf("ΡΡΠ΅Π½ΠΈΠ΅: %c 0x%x\n", isprint(ch) ? ch : ' ', ch);
22: }
23:
24: SLang_reset_tty();
25:
26: return 0;
27: }
ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ S-Lang ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/include/slang. ΠΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΎΠ½ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎ ΡΠΎΠ³Π΄Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠΎΠ΄ (ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅). ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ -lslang, ΡΡΠΎΠ±Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊ ΠΌΠΎΠ³ Π½Π°ΠΉΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ S-Lang.
24.1.1. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π²ΠΎΠ΄Π° Π² S-Lang
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Slang_init_tty() Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ S-Lang:
int SLang_init_tty(int abort_char, int flow_ctrl, int opost);
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Slang_init_tty() ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ -1 Π±ΡΠ΄Π΅Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ tty (ΠΎΠ±ΡΡΠ½ΠΎ, <Ctrl+C>); Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΄ΡΠΎ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΠΈΠ³Π½Π°Π» SIGINT ΡΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π³Π»Π°Π²Π΅ 12 ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ SIGINT.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. Π£ΠΏΡΠ°Π²Π»ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Ρ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΅Π³ΠΎ. ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ <Ctrl+S> ΠΈ <Ctrl+Q> β Π΄Π»Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π₯ΠΎΡΡ ΡΡΠ° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ΄ΠΎΠ±Π½Π° Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΈΠ»ΠΈΡ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ S-Lang, ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΊΡΠ°Π½ΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ. S-Lang ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΌΠΎΠΆΠ΅Ρ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Stop (Π‘ΡΠΎΠΏ) ΠΈ Start (ΠΡΡΠΊ) Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄. Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ, ΡΡΠ½ΠΊΡΠΈΠΈ SLang_init_tty() Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅. ΠΡΠ±ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ΄ΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ, Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π³Π»Π°Π²Π΅ 16.
24.1.2. ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°
ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π±ΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ SLang_init_tty(), ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΡΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΠΎ Π²ΡΡΠ΄ Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π€ΡΠ½ΠΊΡΠΈΡ SLang_init_tty() Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ <Ctrl+Z>), ΡΠΎ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»Π° SIGTSTP. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΈΠ³Π½Π°Π»Π° SIGTSTP ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π² Π³Π»Π°Π²Π΅ 15.
ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΎ, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ S-Lang Π² Π½ΠΈΡ Π±ΡΠ΄ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ±ΠΎΠΈ, ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. Π‘ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ stty sane.
24.1.3. Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°
ΠΠΎΡΠ»Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ ΡΡΡΠ΄Π°. Π€ΡΠ½ΠΊΡΠΈΡ SLang_getkey() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ΅ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ, Π²Π΅Π΄Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Unix ΠΏΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ VT100 (Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°Ρ , Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Linux) ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ <F1> Π½Π° ΡΠΊΡΠ°Π½ ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° β ESC [ [ Π (ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ slecho, Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ <F1> ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ). Π§ΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ Π½Π°ΠΆΠ°ΡΠΈΡΠΌΠΈ ΠΊΠ»Π°Π²ΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ terminfo [37].
Π€ΡΠ½ΠΊΡΠΈΡ SLang_get_key(), ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ. Π ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0xFFFF[169].
24.1.4. ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΠΆΠΈΠ΄Π°ΡΡΠ΅Π³ΠΎ Π²Π²ΠΎΠ΄Π°
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅, Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠ»Π°Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³ΡΠ°Ρ ). Π€ΡΠ½ΠΊΡΠΈΡ SLang_input_pending() ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
int SLang_input_pending(int timeout);
Π€ΡΠ½ΠΊΡΠΈΡ SLang_input_pending() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ°Π»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ n Π΄Π΅ΡΡΡΡΡ Π΄ΠΎΠ»Π΅ΠΉ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ, ΠΈ false, Π΅ΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ Π·Π°Π΄Π°ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ SLang_input_pending() ΡΠΎΠΎΠ±ΡΠΈΡ ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°Ρ .
ΠΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ½Π°Π±Π»ΡΠ΄Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ slecho.Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π² ΡΠΈΠΊΠ»Π΅ while:
while (ch != 'q' && SLang_input_pending(20))
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΎΠΆΠΈΠ΄Π°ΡΡ Π²Π²ΠΎΠ΄Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡΡ ΡΠ΅ΠΊΡΠ½Π΄. ΠΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π΄Π²ΡΡ ΡΠ΅ΠΊΡΠ½Π΄, Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π±ΡΠ΄ΡΡ Π²Π²Π΅Π΄Π΅Π½Ρ, ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°.
24.2. ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²ΡΠ²ΠΎΠ΄Π°
Π€ΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ S-Lang, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π±ΡΠ²Π°ΡΡ Π΄Π²ΡΡ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ: ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ (ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ SLtt) ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΊΡΠ°Π½ΠΎΠΌ (ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ SLsmg).
Π€ΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Ρ SLtt, ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ; ΠΊ Π½ΠΈΠΌ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΠΈΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΡΡΡΠΎΠ³ΠΎΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°Ρ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈ ΡΠΎΠ½Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ S-Lang.
Π‘Π΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ SLsmg ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. Π₯ΠΎΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° SLtt Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ, ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ.
ΠΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊ, ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΠΊΡΠ°Π½Ρ. Π§ΡΠΎΠ±Ρ Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π·Π°ΠΏΠΈΡΡ Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π±ΡΡΠ΅Ρ, Π° Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ S-Lang Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΠΎΠ½Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ .
24.2.1. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΊΡΠ°Π½ΠΎΠΌ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ S-Lang Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ»Π°ΡΡ S-Lang Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠΈΡΠΊ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° (ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ TERM) Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
void SLtt_get_terminfo(void);
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ Π·Π°Π΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ SLtt_get_terminfo() ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΊΡΠ°Π½Π° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΎΠΊ ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Ρ ΡΠ°Π½ΠΈΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π² SLtt_Screen_Rows ΠΈ SLtt_Screen_Cols. Π₯ΠΎΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½Ρ, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠΈΡΠΎΠΊΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, xterms). ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π±ΡΠ΄Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΠΏΡΠΈΠ½ΡΡΠΎΠΌΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠ»Ρ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΉ Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° S-Lang ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ SLtt_Screen_Rows ΠΈ SLtt_Screen_Cols ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ SLtt_get_terminfo(). Π ΡΠΈΡΡΠ΅ΠΌΠ΅ Unix ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ TIOCGWINSZ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π²ΠΎΠ΄ΠΎΠΌ-Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π² Π³Π»Π°Π²Π΅ 16.