diff --git a/programs/develop/libraries/console_coff/conscrl.inc b/programs/develop/libraries/console_coff/conscrl.inc index 24944515c..ea65dab51 100644 --- a/programs/develop/libraries/console_coff/conscrl.inc +++ b/programs/develop/libraries/console_coff/conscrl.inc @@ -1,5 +1,5 @@ -; ‚ᯮ¬®£ â¥«ì­ë© ä ©« ¤«ï console.inc - ®¯¨á ­¨¥ scrollbar -; ‚¥à⨪ «ì­ ï ¯à®ªàã⪠ +; Helper file for console.inc - scrollbar definition +; Vertical scrolling virtual at 0 file 'conscrlv.bmp', 36h ; sanity check @@ -28,7 +28,7 @@ if con.vscroll_btn_height*4 + con.vscroll_bgr_height*2 \ error 'conscrlv.bmp: invalid dimensions!' end if -; ‡ £à㦠¥¬ ¤ ­­ë¥ BMP, ­  室㠯८¡à §ãï ¨å ¢ ¤ ­­ë¥ ¤«ï 7-© ä㭪樨 +; Load BMP data, converting it into data for sysfn 7 on the fly con.vscroll: repeat con.vscroll_height file 'conscrlv.bmp':36h + ((con.vscroll_width*3+3) and not 3)*(con.vscroll_height - %),\ diff --git a/programs/develop/libraries/console_coff/console.asm b/programs/develop/libraries/console_coff/console.asm index 1098b4db9..0163ffcf5 100644 --- a/programs/develop/libraries/console_coff/console.asm +++ b/programs/develop/libraries/console_coff/console.asm @@ -1,6 +1,7 @@ -; ”㭪樨 à ¡®âë á ª®­á®«ìî ¤«ï ¯à®£à ¬¬ Š®«¨¡à¨Ž‘ +; SPDX-License-Identifier: GPL-2.0 +; Functions for interaction with the console for KolibriOS programs ; diamond, 2006-2008 - +; Copyright (C) 2006-2025 KolibriOS team format MS COFF @@ -56,7 +57,7 @@ START: or eax, -1 ret 4 -; ˆ­¨æ¨ «¨§ æ¨ï ª®­á®«¨ +; Console initialization ; void __stdcall con_init(dword wnd_width, dword wnd_height, ; dword scr_width, dword scr_height, const char* title); @@ -271,13 +272,13 @@ con_write_length: pop esi ebx ret 8 -; Š ¦¤ë© ᨬ¢®« ª« áá¨ä¨æ¨àã¥âáï ª ª ®¤¨­ ¨§ -con.printfc.normal = 0 ; ­®à¬ «ì­ë© ᨬ¢®« +; Each character is classified as one of the following +con.printfc.normal = 0 ; normal character con.printfc.percent = 1 ; '%' con.printfc.dot = 2 ; '.' con.printfc.asterisk = 3 ; '*' con.printfc.zero = 4 ; '0' -con.printfc.digit = 5 ; ­¥­ã«¥¢ ï æ¨äà  +con.printfc.digit = 5 ; non-null digit con.printfc.plus = 6 ; '+' con.printfc.minus = 7 ; '-' con.printfc.sharp = 8 ; '#' @@ -376,24 +377,24 @@ con_printf: jmp .normal .spec_begin: xor ebx, ebx -; bl = ⨯ ¯®§¨æ¨¨: -; 0 = ­ ç «® -; 1 = ¯à®ç¨â ­ ¢¥¤ã騩 0 ¢ ᯥæ¨ä¨ª æ¨¨ ä®à¬ â  -; 2 = ç¨â ¥¬ ¯®«¥ è¨à¨­ë -; 3 = ç¨â ¥¬ ¯®«¥ â®ç­®á⨠-; 4 = ¯à®ç¨â ­® ¯®«¥ à §¬¥à   à£ã¬¥­â  -; 5 = ç¨â ¥¬ ¯®«¥ ⨯  -; bh = ä« £¨: -; 1 = ä« £ '#', ¢ë¢®¤¨âì 0/0x/0X -; 2 = ä« £ '-', ¢ëà ¢­¨¢ ­¨¥ ¢«¥¢® -; 4 = ä« £ '0', ¤®¯®«­¥­¨¥ ­ã«ï¬¨ -; 8 = ä« £ 'h', ª®à®âª¨©  à£ã¬¥­â +; bl = position type: +; 0 = start +; 1 = read leading 0 in format specification +; 2 = read width field +; 3 = read precision field +; 4 = read argument size field +; 5 = read type field +; bh = flags: +; 1 = flag '#', output 0/0x/0X +; 2 = flag '-', align left +; 4 = flag '0', zero padding +; 8 = flag 'h', short argument push -1 ; dword [esp+8] = precision push -1 ; dword [esp+4] = width push 0 -; byte [esp] = ä« £ 0/'+'/' ' +; byte [esp] = flag 0/'+'/' ' .spec: xor eax, eax lodsb @@ -529,7 +530,7 @@ con_printf: @@: push edx xor edx, edx -; ç¨á«® ¢ eax, ®á­®¢ ­¨¥ á¨á⥬ë áç¨á«¥­¨ï ¢ ecx +; number in eax, radix in ecx @@: cmp dword [esp+16+8], 0 jnz .print_num @@ -1777,10 +1778,10 @@ con.data2image: mov al, [esi+1] push eax and al, 0xF - mov ebx, eax ; 梥â ⥪áâ  + mov ebx, eax ; text color pop eax shr al, 4 - mov ebp, eax ; 梥â ä®­  + mov ebp, eax ; background color sub ebx, ebp lodsb inc esi @@ -2188,7 +2189,7 @@ con_gets2: sub ebx, 1 jle .ret mov byte [esi], 0 - xor ecx, ecx ; ¤«¨­  㦥 ¢¢¥¤ñ­­®© áâப¨ + xor ecx, ecx ; length of the already entered string call con.get_data_ptr .loop: call con_getch2 @@ -2596,15 +2597,15 @@ con.wake: popad ret -; �®â®ª ®ª­  ª®­á®«¨. Ž¡à ¡ â뢠¥â ¢¢®¤ ¨ ¢ë¢®¤. +; Console window thread. Handles input and output. con.thread: -; �®â®ª ॠ£¨àã¥â ­  IPC, ª®â®à®¥ ¨á¯®«ì§ã¥âáï ⮫쪮 ¤«ï ⮣®, çâ®¡ë ¥£® ¬®¦­® ¡ë«® "à §¡ã¤¨âì" +; The thread responds to IPC, which is used only so that it can be "waken up" push 40 pop eax push 0x80000067 ; program dont getting events mouse, when it dont active pop ebx int 0x40 - xor ebx,ebx ;clear ebx + xor ebx,ebx ; clear ebx mov al, 60 mov bl, 1 mov ecx, con.ipc_buf @@ -3212,7 +3213,7 @@ con.draw_image: @@: int 0x40 push edx -; ‚ëç¨á«ï¥¬ ¢ëá®âã ¡¥£ã­ª  +; Calculate the height of the slider mov ax, dx sub eax, con.vscroll_btn_height mov ecx, eax @@ -3222,7 +3223,7 @@ con.draw_image: jae @f mov al, 5 @@: -; eax = ¢ëá®â  ¡¥£ã­ª . ‚ëç¨á«ï¥¬ ¯®«®¦¥­¨¥ ¡¥£ã­ª  +; eax = slider height. Calculate the slider position mov [con.vscrollbar_size], eax xchg eax, ecx sub eax, ecx @@ -3232,7 +3233,7 @@ con.draw_image: div ebx pop edx push edx -; ecx = ¢ëá®â  ¡¥£ã­ª , eax = ¯®«®¦¥­¨¥ +; ecx = slider height, eax = position add eax, con.vscroll_btn_height mov [con.vscrollbar_pos], eax mov ebx, con.vscroll_bgr2 @@ -3331,8 +3332,8 @@ con.extended_numlock: cursor_esc dd 27 + ('[' shl 8) -; ‚ ⥪ã饩 ॠ«¨§ æ¨¨ §­ ç¥­¨ï ¯® 㬮«ç ­¨î â ª®¢ë. -; ‚ ¡ã¤ã饬 ®­¨, ¢®§¬®¦­®, ¡ã¤ãâ áç¨â뢠âìáï ª ª ¯ à ¬¥âàë ¨§ ini-ä ©«  console.ini. +; In the current implementation, the default values are: +; In the future, they may be read as parameters from the console.ini ini file. con.def_wnd_width dd 80 con.def_wnd_height dd 25 con.def_scr_width dd 80 diff --git a/programs/develop/libraries/console_coff/console_ru.txt b/programs/develop/libraries/console_coff/console_ru.txt index dd74634a3..c494d3cee 100644 --- a/programs/develop/libraries/console_coff/console_ru.txt +++ b/programs/develop/libraries/console_coff/console_ru.txt @@ -1,91 +1,91 @@ -console.obj ýêñïîðòèðóåò ñëåäóþùèå ôóíêöèè: +console.obj Ñ�кÑ�портирует Ñ�ледующие функции: -typedef unsigned long dword; /* 32-áèòíîå áåççíàêîâîå öåëîå */ -typedef unsigned short word; /* 16-áèòíîå áåççíàêîâîå öåëîå */ +typedef unsigned long dword; /* 32-битное беззнаковое целое */ +typedef unsigned short word; /* 16-битное беззнаковое целое */ void __stdcall con_init(dword wnd_width, dword wnd_height, dword scr_width, dword scr_height, const char* title); -Èíèöèàëèçàöèÿ êîíñîëè. Âûçûâàåòñÿ îäèí ðàç â íà÷àëå ïðîãðàììû. -wnd_width, wnd_height - âûñîòà è øèðèíà (â ñèìâîëàõ) âèäèìîé â îêíå êîíñîëè - îáëàñòè; -scr_width, scr_height - âûñîòà è øèðèíà (â ñèìâîëàõ) âñåé êîíñîëè; -ëþáûå èç ïåðâûõ 4 ïàðàìåòðîâ ìîãóò áûòü óñòàíîâëåíû â -1 (=0xFFFFFFFF) - - èñïîëüçîâàòü çíà÷åíèÿ ïî óìîë÷àíèþ; -title - çàãîëîâîê îêíà êîíñîëè. +ИнициализациÑ� конÑ�оли. ВызываетÑ�Ñ� один раз в начале программы. +wnd_width, wnd_height - выÑ�ота и ширина (в Ñ�имволах) видимой в окне конÑ�оли + облаÑ�ти; +scr_width, scr_height - выÑ�ота и ширина (в Ñ�имволах) вÑ�ей конÑ�оли; +любые из первых 4 параметров могут быть уÑ�тановлены в -1 (=0xFFFFFFFF) + - иÑ�пользовать значениÑ� по умолчанию; +title - заголовок окна конÑ�оли. void __stdcall con_exit(bool bCloseWindow); -Âûçûâàåòñÿ ïðè çàâåðøåíèè ïðîãðàììû. Åñëè (áàéòîâûé) ïàðàìåòð bCloseWindow -íóëåâîé, òî îêíî êîíñîëè îñòà¸òñÿ íà ýêðàíå äî òîãî ìîìåíòà, êàê ïîëüçîâàòåëü -ïîæåëàåò çàêðûòü åãî, ïðè ýòîì ê çàãîëîâêó äîáàâëÿåòñÿ ñòðîêà " [Finished]". +ВызываетÑ�Ñ� при завершении программы. ЕÑ�ли (байтовый) параметр bCloseWindow +нулевой, то окно конÑ�оли оÑ�таётÑ�Ñ� на Ñ�кране до того момента, как пользователь +пожелает закрыть его, при Ñ�том к заголовку добавлÑ�етÑ�Ñ� Ñ�трока " [Finished]". void __stdcall con_set_title(const char* title); -Óñòàíàâëèâàåò íîâûé çàãîëîâîê îêíà êîíñîëè. +УÑ�танавливает новый заголовок окна конÑ�оли. void __stdcall con_write_asciiz(const char* string); -Âûâîäèò ASCIIZ-ñòðîêó â êîíñîëü â òåêóùóþ ïîçèöèþ, ïðîäâèãàåò òåêóùóþ ïîçèöèþ. +Выводит ASCIIZ-Ñ�троку в конÑ�оль в текущую позицию, продвигает текущую позицию. void __stdcall con_write_string(const char* string, dword length); -Àíàëîãè÷íî con_write_asciiz, íî âûâîäèò ðîâíî length ñèìâîëîâ. +Ð�налогично con_write_asciiz, но выводит ровно length Ñ�имволов. int __cdecl con_printf(const char* format, ...) -Ñòàíäàðòíàÿ printf èç ANSI C. +СтандартнаÑ� printf из ANSI C. dword __stdcall con_get_flags(void); -Ïîëó÷àåò çíà÷åíèå ôëàãîâ âûâîäà. +Получает значение флагов вывода. dword __stdcall con_set_flags(dword new_flags); -Óñòàíàâëèâàåò çíà÷åíèå ôëàãîâ âûâîäà. Âîçâðàùàåò ñòàðîå çíà÷åíèå. -Ôëàãè (áèòîâàÿ ìàñêà): -/* öâåò òåêñòà */ +УÑ�танавливает значение флагов вывода. Возвращает Ñ�тарое значение. +Флаги (битоваÑ� маÑ�ка): +/* цвет текÑ�та */ #define CON_COLOR_BLUE 1 #define CON_COLOR_GREEN 2 #define CON_COLOR_RED 4 #define CON_COLOR_BRIGHT 8 -/* öâåò ôîíà */ +/* цвет фона */ #define CON_BGR_BLUE 0x10 #define CON_BGR_GREEN 0x20 #define CON_BGR_RED 0x40 #define CON_BGR_BRIGHT 0x80 -/* óïðàâëåíèå âûâîäîì */ +/* управление выводом */ #define CON_IGNORE_SPECIALS 0x100 -/* Åñëè ôëàã ñáðîøåí, ôóíêöèÿ èíòåðïðåòèðóåò ñïåöèàëüíûå ñèìâîëû: - 10 ('\n') - ïåðåâîä â íà÷àëî ñëåäóþùåé ñòðîêè - 13 ('\r') - ïåðåâîä â íà÷àëî òåêóùåé ñòðîêè - 8 ('\b') - çàáîé (íà ñèìâîë íàçàä) - 9 ('\t') - òàáóëÿöèÿ - 27 ('\033'='\x1B') - íà÷àëî Esc-ïîñëåäîâàòåëüíîñòè; -èíà÷å âûâîäèò èõ êàê îáû÷íûå ñèìâîëû. */ -/* Ïîääåðæèâàåìûå Esc-ïîñëåäîâàòåëüíîñòè: - Esc[;;m - âûáîð àòðèáóòîâ ñèìâîëîâ: - ìîæíî óêàçûâàòü îäèí, äâà èëè òðè êîäà â ëþáîì ïîðÿäêå; - 0 = íîðìàëüíîå èçîáðàæåíèå (áåëûå ñèìâîëû íà ÷¸ðíîì ôîíå) - 1 = âûäåëåíèå ÿðêîñòüþ - 5 = ÿðêèé ôîí - 7 = ðåâåðñíîå èçîáðàæåíèå (÷¸ðíûå ñèìâîëû íà áåëîì ôîíå) - 30 = ÷¸ðíûå ñèìâîëû - 31 = êðàñíûå ñèìâîëû - 32 = çåë¸íûå ñèìâîëû - 33 = æ¸ëòûå ñèìâîëû - 34 = ñèíèå ñèìâîëû - 35 = ôèîëåòîâûå ñèìâîëû - 36 = áèðþçîâûå ñèìâîëû - 37 = áåëûå ñèìâîëû - 40 = ÷¸ðíûé ôîí - 41 = êðàñíûé ôîí - 42 = çåë¸íûé ôîí - 43 = æ¸ëòûé ôîí - 44 = ñèíèé ôîí - 45 = ôèîëåòîâûé ôîí - 46 = áèðþçîâûé ôîí - 47 = áåëûé ôîí - Ñëåäóþùèå ïîñëåäîâàòåëüíîñòè ïîÿâèëèñü â âåðñèè 5 áèáëèîòåêè: - Esc[A - ïåðåìåñòèòü êóðñîð íà ñòðîê ââåðõ - Esc[B - ïåðåìåñòèòü êóðñîð íà ñòðîê âíèç - Esc[C - ïåðåìåñòèòü êóðñîð íà ïîçèöèé âïðàâî - Esc[D - ïåðåìåñòèòü êóðñîð íà ïîçèöèé âëåâî +/* ЕÑ�ли флаг Ñ�брошен, функциÑ� интерпретирует Ñ�пециальные Ñ�имволы: + 10 ('\n') - перевод в начало Ñ�ледующей Ñ�троки + 13 ('\r') - перевод в начало текущей Ñ�троки + 8 ('\b') - забой (на Ñ�имвол назад) + 9 ('\t') - табулÑ�циÑ� + 27 ('\033'='\x1B') - начало Esc-поÑ�ледовательноÑ�ти; +иначе выводит их как обычные Ñ�имволы. */ +/* Поддерживаемые Esc-поÑ�ледовательноÑ�ти: + Esc[;;m - выбор атрибутов Ñ�имволов: + можно указывать один, два или три кода в любом порÑ�дке; + 0 = нормальное изображение (белые Ñ�имволы на чёрном фоне) + 1 = выделение Ñ�ркоÑ�тью + 5 = Ñ�ркий фон + 7 = реверÑ�ное изображение (чёрные Ñ�имволы на белом фоне) + 30 = чёрные Ñ�имволы + 31 = краÑ�ные Ñ�имволы + 32 = зелёные Ñ�имволы + 33 = жёлтые Ñ�имволы + 34 = Ñ�иние Ñ�имволы + 35 = фиолетовые Ñ�имволы + 36 = бирюзовые Ñ�имволы + 37 = белые Ñ�имволы + 40 = чёрный фон + 41 = краÑ�ный фон + 42 = зелёный фон + 43 = жёлтый фон + 44 = Ñ�иний фон + 45 = фиолетовый фон + 46 = бирюзовый фон + 47 = белый фон + Следующие поÑ�ледовательноÑ�ти поÑ�вилиÑ�ÑŒ в верÑ�ии 5 библиотеки: + Esc[A - перемеÑ�тить курÑ�ор на Ñ�трок вверх + Esc[B - перемеÑ�тить курÑ�ор на Ñ�трок вниз + Esc[C - перемеÑ�тить курÑ�ор на позиций вправо + Esc[D - перемеÑ�тить курÑ�ор на позиций влево Esc[;H = Esc[;f - - óñòàíîâèòü êóðñîð â ïîçèöèþ ñ êîîðäèíàòàìè , - Esc[2J - î÷èñòèòü ýêðàí, ïåðåìåñòèòü êóðñîð â ëåâûé âåðõíèé óãîë - Ñëåäóþùèå ïîñëåäîâàòåëüíîñòè ïîÿâèëèñü â âåðñèè 9 áèáëèîòåêè: + уÑ�тановить курÑ�ор в позицию Ñ� координатами , + Esc[2J - очиÑ�тить Ñ�кран, перемеÑ�тить курÑ�ор в левый верхний угол + Следующие поÑ�ледовательноÑ�ти поÑ�вилиÑ�ÑŒ в верÑ�ии 9 библиотеки: Esc[J or Esc[0J - Erase everything below cursor Esc[1J - Erase everything above cursor Esc[K - Erase in line @@ -107,83 +107,83 @@ dword __stdcall con_set_flags(dword new_flags); Esc]2ST/BEL - Implemented identical as Esc]0. */ -/* ñèãíàë î çàêðûòèè îêíà êîíñîëè; ïîÿâèëñÿ â âåðñèè 6 áèáëèîòåêè; - ôëàã èãíîðèðóåòñÿ ôóíêöèåé con_set_flags */ +/* Ñ�игнал о закрытии окна конÑ�оли; поÑ�вилÑ�Ñ� в верÑ�ии 6 библиотеки; + флаг игнорируетÑ�Ñ� функцией con_set_flags */ #define CON_WINDOW_CLOSED 0x200 -Çíà÷åíèå ïî óìîë÷àíèþ äëÿ ôëàãîâ = 7. +Значение по умолчанию длÑ� флагов = 7. int __stdcall con_get_font_height(void); -Âîçâðàùàåò çíà÷åíèå âûñîòû øðèôòà. +Возвращает значение выÑ�оты шрифта. int __stdcall con_get_cursor_height(void); -Ïîëó÷àåò çíà÷åíèå âûñîòû êóðñîðà. +Получает значение выÑ�оты курÑ�ора. int __stdcall con_set_cursor_height(int new_height); -Óñòàíàâëèâàåò çíà÷åíèå âûñîòû êóðñîðà. Âîçâðàùàåò ñòàðîå çíà÷åíèå. -Ïîïûòêà óñòàíîâèòü çíà÷åíèå âíå êîððåêòíîãî èíòåðâàëà (îò 0 äî font_height-1) -èãíîðèðóåòñÿ. -Êóðñîð âûñîòû 0 íå îòîáðàæàåòñÿ íà ýêðàíå. -Çíà÷åíèå âûñîòû ïî óìîë÷àíèþ - 15% îò âûñîòû øðèôòà. +УÑ�танавливает значение выÑ�оты курÑ�ора. Возвращает Ñ�тарое значение. +Попытка уÑ�тановить значение вне корректного интервала (от 0 до font_height-1) +игнорируетÑ�Ñ�. +КурÑ�ор выÑ�оты 0 не отображаетÑ�Ñ� на Ñ�кране. +Значение выÑ�оты по умолчанию - 15% от выÑ�оты шрифта. int __stdcall con_getch(void); -Ñ÷èòûâàåò îäèí ñèìâîë ñ êëàâèàòóðû. -Äëÿ îáû÷íûõ ñèìâîëîâ âîçâðàùàåòñÿ ASCII-êîä. Äëÿ ðàñøèðåííûõ ñèìâîëîâ -(íàïðèìåð, Fx è ñòðåëî÷åê) ïåðâûé âûçîâ ôóíêöèè âîçâðàùàåò 0, -à ïîâòîðíûé âûçîâ âîçâðàùàåò ðàñøèðåííûé êîä (ïîäîáíî DOS-ôóíêöèÿì ââîäà). -Íà÷èíàÿ ñ âåðñèè 7 áèáëèîòåêè, ïîñëå çàêðûòèÿ îêíà êîíñîëè âîçâðàùàåòñÿ -çíà÷åíèå 0. +Считывает один Ñ�имвол Ñ� клавиатуры. +ДлÑ� обычных Ñ�имволов возвращаетÑ�Ñ� ASCII-код. ДлÑ� раÑ�ширенных Ñ�имволов +(например, Fx и Ñ�трелочек) первый вызов функции возвращает 0, +а повторный вызов возвращает раÑ�ширенный код (подобно DOS-функциÑ�м ввода). +Ð�ачинаÑ� Ñ� верÑ�ии 7 библиотеки, поÑ�ле закрытиÑ� окна конÑ�оли возвращаетÑ�Ñ� +значение 0. word __stdcall con_getch2(void); -Ñ÷èòûâàåò îäèí ñèìâîë ñ êëàâèàòóðû. Ìëàäøèé áàéò ñîäåðæèò ASCII-êîä êëàâèøè -(0 äëÿ ðàñøèðåííûõ ñèìâîëîâ), ñòàðøèé - ðàñøèðåííûé êîä -(ïîäîáíî BIOS-ôóíêöèÿì ââîäà). -Íà÷èíàÿ ñ âåðñèè 7 áèáëèîòåêè, ïîñëå çàêðûòèÿ îêíà êîíñîëè âîçâðàùàåòñÿ -çíà÷åíèå 0. +Считывает один Ñ�имвол Ñ� клавиатуры. Младший байт Ñ�одержит ASCII-код клавиши +(0 длÑ� раÑ�ширенных Ñ�имволов), Ñ�тарший - раÑ�ширенный код +(подобно BIOS-функциÑ�м ввода). +Ð�ачинаÑ� Ñ� верÑ�ии 7 библиотеки, поÑ�ле закрытиÑ� окна конÑ�оли возвращаетÑ�Ñ� +значение 0. int __stdcall con_kbhit(void); -Âîçâðàùàåò 1, åñëè êàêàÿ-òî êëàâèøà áûëà íàæàòà, 0 èíà÷å. Äëÿ ñ÷èòûâàíèÿ -íàæàòîé êëàâèøè ïðåäíàçíà÷åíû ôóíêöèè con_getch è con_getch2. -Íà÷èíàÿ ñ âåðñèè 6 áèáëèîòåêè, ïîñëå çàêðûòèÿ îêíà êîíñîëè âñåãäà âîçâðàùàåò 1. +Возвращает 1, еÑ�ли какаÑ�-то клавиша была нажата, 0 иначе. ДлÑ� Ñ�читываниÑ� +нажатой клавиши предназначены функции con_getch и con_getch2. +Ð�ачинаÑ� Ñ� верÑ�ии 6 библиотеки, поÑ�ле закрытиÑ� окна конÑ�оли вÑ�егда возвращает 1. char* __stdcall con_gets(char* str, int n); -Ñ÷èòûâàåò ñòðîêó ñ êëàâèàòóðû. Ââîä ïðåðûâàåòñÿ ïðè ïîñòóïëåíèè ñèìâîëà -íîâîé ñòðîêè, à òàêæå ïî ïðî÷òåíèè n-1 ñèìâîëà (â çàâèñèìîñòè îò òîãî, ÷òî -ïðîèçîéä¸ò ðàíüøå).  ïåðâîì ñëó÷àå ñèìâîë íîâîé ñòðîêè òàêæå çàïèñûâàåòñÿ â -str. Ñ÷èòàííàÿ ñòðîêà äîïîëíÿåòñÿ íóëåâûì ñèìâîëîì. -Íà÷èíàÿ ñ âåðñèè 6 áèáëèîòåêè, ôóíêöèÿ âîçâðàùàåò óêàçàòåëü íà ââåä¸ííóþ -ñòðîêó ïðè óñïåøíîì ÷òåíèè è NULL, åñëè îêíî êîíñîëè áûëî çàêðûòî. Äî âåðñèè -6 âîçâðàùàåìîå çíà÷åíèå áûëî íåîïðåäåëåíî. +Считывает Ñ�троку Ñ� клавиатуры. Ввод прерываетÑ�Ñ� при поÑ�туплении Ñ�имвола +новой Ñ�троки, а также по прочтении n-1 Ñ�имвола (в завиÑ�имоÑ�ти от того, что +произойдёт раньше). Ð’ первом Ñ�лучае Ñ�имвол новой Ñ�троки также запиÑ�ываетÑ�Ñ� в +str. СчитаннаÑ� Ñ�трока дополнÑ�етÑ�Ñ� нулевым Ñ�имволом. +Ð�ачинаÑ� Ñ� верÑ�ии 6 библиотеки, функциÑ� возвращает указатель на введённую +Ñ�троку при уÑ�пешном чтении и NULL, еÑ�ли окно конÑ�оли было закрыто. До верÑ�ии +6 возвращаемое значение было неопределено. typedef int (__stdcall * con_gets2_callback)(int keycode, char** pstr, int* pn, int* ppos); char* __stdcall con_gets2(con_gets2_callback callback, char* str, int n); -Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 4 áèáëèîòåêè. -Ïîëíîñòüþ àíàëîãè÷íà con_gets çà èñêëþ÷åíèåì òîãî, ÷òî êîãäà ïîëüçîâàòåëü -íàæèìàåò íåðàñïîçíàííóþ êëàâèøó, âûçûâàåòñÿ óêàçàííàÿ callback-ïðîöåäóðà -(êîòîðàÿ ìîæåò, íàïðèìåð, îáðàáàòûâàòü up/down äëÿ èñòîðèè ââîäà è tab äëÿ -àâòîäîïîëíåíèÿ). Ïðîöåäóðå ïåðåäà¸òñÿ êîä êëàâèøè è òðè óêàçàòåëÿ - íà ñòðîêó, -íà ëèìèò è íà òåêóùóþ ïîçèöèþ â ñòðîêå. Ïðîöåäóðà ìîæåò ìåíÿòü ñîäåðæèìîå -ñòðîêè è ìîæåò ìåíÿòü ñàìó ñòðîêó (íàïðèìåð, ïåðåðàñïðåäåëèòü ïàìÿòü äëÿ -óâåëè÷åíèÿ ëèìèòà), ëèìèò, ïîçèöèþ â ñòðîêå - äëÿ ýòîãî è ïåðåäàþòñÿ óêàçàòåëè. -Âîçâðàùàåìîå çíà÷åíèå: 0=ñòðîêà íå ìåíÿëàñü; 1=ñòðîêà èçìåíèëàñü, íåîáõîäèìî -óäàëèòü ñòàðóþ è âûâåñòè íîâóþ; 2=ñòðîêà èçìåíèëàñü, íåîáõîäèìî å¸ âûâåñòè; -3=íåìåäëåííî âûéòè èç ôóíêöèè. -Íà÷èíàÿ ñ âåðñèè 6 áèáëèîòåêè, ôóíêöèÿ âîçâðàùàåò óêàçàòåëü íà ââåä¸ííóþ -ñòðîêó ïðè óñïåøíîì ÷òåíèè è NULL, åñëè îêíî êîíñîëè áûëî çàêðûòî. Äî âåðñèè -6 âîçâðàùàåìîå çíà÷åíèå áûëî íåîïðåäåëåíî. +ФункциÑ� поÑ�вилаÑ�ÑŒ в верÑ�ии 4 библиотеки. +ПолноÑ�тью аналогична con_gets за иÑ�ключением того, что когда пользователь +нажимает нераÑ�познанную клавишу, вызываетÑ�Ñ� указаннаÑ� callback-процедура +(котораÑ� может, например, обрабатывать up/down длÑ� иÑ�тории ввода и tab длÑ� +автодополнениÑ�). Процедуре передаётÑ�Ñ� код клавиши и три указателÑ� - на Ñ�троку, +на лимит и на текущую позицию в Ñ�троке. Процедура может менÑ�ть Ñ�одержимое +Ñ�троки и может менÑ�ть Ñ�аму Ñ�троку (например, перераÑ�пределить памÑ�ть длÑ� +увеличениÑ� лимита), лимит, позицию в Ñ�троке - длÑ� Ñ�того и передаютÑ�Ñ� указатели. +Возвращаемое значение: 0=Ñ�трока не менÑ�лаÑ�ÑŒ; 1=Ñ�трока изменилаÑ�ÑŒ, необходимо +удалить Ñ�тарую и вывеÑ�ти новую; 2=Ñ�трока изменилаÑ�ÑŒ, необходимо её вывеÑ�ти; +3=немедленно выйти из функции. +Ð�ачинаÑ� Ñ� верÑ�ии 6 библиотеки, функциÑ� возвращает указатель на введённую +Ñ�троку при уÑ�пешном чтении и NULL, еÑ�ли окно конÑ�оли было закрыто. До верÑ�ии +6 возвращаемое значение было неопределено. void __stdcall con_cls(); -Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 5 áèáëèîòåêè. -Î÷èùàåò ýêðàí è ïåðåâîäèò êóðñîð â ëåâûé âåðõíèé óãîë. +ФункциÑ� поÑ�вилаÑ�ÑŒ в верÑ�ии 5 библиотеки. +Очищает Ñ�кран и переводит курÑ�ор в левый верхний угол. void __stdcall con_get_cursor_pos(int* px, int* py); -Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 5 áèáëèîòåêè. -Çàïèñûâàåò â *px òåêóùóþ êîîðäèíàòó êóðñîðà ïî îñè x, â *py - ïî îñè y. +ФункциÑ� поÑ�вилаÑ�ÑŒ в верÑ�ии 5 библиотеки. +ЗапиÑ�ывает в *px текущую координату курÑ�ора по оÑ�и x, в *py - по оÑ�и y. void __stdcall con_set_cursor_pos(int x, int y); -Ôóíêöèÿ ïîÿâèëàñü â âåðñèè 5 áèáëèîòåêè. -Óñòàíàâëèâàåò êóðñîð â ïîçèöèþ ñ óêàçàííûìè êîîðäèíàòàìè. Åñëè êàêîé-òî èç -ïàðàìåòðîâ âûõîäèò çà ïðåäåëû ñîîòâåòñòâóþùåãî äèàïàçîíà (îò 0 äî scr_width-1 -äëÿ x, îò 0 äî scr_height-1 äëÿ y, scr_width è scr_height áûëè çàäàíû ïðè -âûçîâå con_init), òî ñîîòâåòñòâóþùàÿ êîîðäèíàòà êóðñîðà íå ìåíÿåòñÿ. +ФункциÑ� поÑ�вилаÑ�ÑŒ в верÑ�ии 5 библиотеки. +УÑ�танавливает курÑ�ор в позицию Ñ� указанными координатами. ЕÑ�ли какой-то из +параметров выходит за пределы Ñ�оответÑ�твующего диапазона (от 0 до scr_width-1 +длÑ� x, от 0 до scr_height-1 длÑ� y, scr_width и scr_height были заданы при +вызове con_init), то Ñ�оответÑ�твующаÑ� координата курÑ�ора не менÑ�етÑ�Ñ�. int __stdcall con_get_input(char* buf, int buflen); Read as many input events as are available and fit in the receive buffer.