'\" t .\" DO NOT EDIT THIS FILE BY HAND! .\" man/MKterminfo.sh generated it from: .\" terminfo.head, ./../include/Caps, ./../include/Caps-ncurses, .\" and terminfo.tail. .\" .\" Note: this document must be run through tbl before nroff or troff. .\" Some man(1) programs recognize the token in the first-line comment .\" as directing them to arrange such a pipeline. .\"*************************************************************************** .\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" $Id: terminfo.head,v 1.69 2025/08/16 21:50:23 tom Exp $ .TH terminfo 5 2025-08-16 "ncurses 6.6" "File formats" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq .ds ' \(aq .ds ^ \(ha .ds ~ \(ti .\} .el \{\ .ie t .ds `` `` .el .ds `` "" .ie t .ds '' '' .el .ds '' "" .ds ' ' .ds ^ ^ .ds ~ ~ .\} . .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. . .SH "نام (NAME)" terminfo \- پایگاه داده قابلیتهای پایانه (terminal capability database) .SH "خلاصه دستور (SYNOPSIS)" /usr/share/terminfo/*/* .SH "توضیحات (DESCRIPTION)" .I Terminfo یک پایگاه داده برای توصیف پایانه‌ها است که توسط برنامه‌های مبتنی بر صفحه مانند \fBnvi\fP(1)، \fBlynx\fP(1)، \fBmutt\fP(1) و دیگر برنامه‌های curses، با استفاده از فراخوانی‌های سطح بالا به کتابخانه‌هایی مانند \fBcurses\fP(3X) به کار می‌رود. همچنین از طریق فراخوانی‌های سطح پایین توسط برنامه‌های غیر curses که ممکن است مبتنی بر صفحه باشند (مانند \fBclear\fP(1)) یا غیر مبتنی بر صفحه (مانند \fBtabs\fP(1)) استفاده می‌شود. .PP .I Terminfo پایانه‌ها را با ارائهٔ مجموعه‌ای از قابلیت‌هایی که دارند، با مشخص کردن نحوهٔ انجام عملیات صفحه، و با تعیین نیازمندی‌های فاصله‌گذاری (padding) و توالی‌های مقداردهی اولیه توصیف می‌کند. .PP این سند نسخهٔ 6.6 از .I \%ncurses (وصلهٔ 20251230) را توصیف می‌کند. .SS "نحو ورودی terminfo (terminfo Entry Syntax)" ورودی‌ها در .I terminfo از دنباله‌ای از فیلدها تشکیل شده‌اند: .bP هر فیلد با یک کاما \*(``,\*('' پایان می‌یابد (کاماهای درون متن را می‌توان با یک اسلش وارونه گریز داد یا به صورت \*(``\e054\*('' نوشت). .bP فاصله‌های خالی (white space) میان فیلدها نادیده گرفته می‌شوند. .bP نخستین فیلد در یک ورودی \fIterminfo\fP از ستون اول آغاز می‌شود. .bP از خطوط جدید و فاصله‌های خالی ابتدای سطر (فاصله‌ها یا تب‌ها) می‌توان برای قالب‌بندی ورودی‌ها جهت خوانایی بهتر استفاده کرد. این موارد از ورودی‌های تجزیه‌شده حذف می‌شوند. .IP گزینه‌های \fB\-f\fP و \fB\-W\fP در \fBinfocmp\fP برای قالب‌بندی عبارات if-then-else یا اعمال حداکثر پهنای خط به این ویژگی تکیه دارند. شرح پایانهٔ قالب‌بندی‌شدهٔ حاصل می‌تواند توسط \fBtic\fP خوانده شود. .bP نخستین فیلد برای هر پایانه، نام‌هایی را مشخص می‌کند که پایانه با آن‌ها شناخته می‌شود، که با نویسه‌های \*(``|\*('' از یکدیگر جدا شده‌اند. .IP نخستین نام ارائه‌شده، متداول‌ترین کوته‌نوشت برای پایانه (نام اصلی آن) است، آخرین نام ارائه‌شده باید نامی طولانی باشد که پایانه را به طور کامل مشخص کند (نگاه کنید به \fBlongname\fP(3X))، و تمامی نام‌های دیگر به عنوان هم‌نام‌ها (نام‌های مستعار یا aliases) برای نام پایانهٔ اصلی در نظر گرفته می‌شوند. .IP استاندارد X/Open Curses توصیه می‌کند که تمام نام‌ها به جز نام آخر باید با حروف کوچک و بدون فاصله باشند؛ نام آخر ممکن است برای خوانایی شامل حروف بزرگ و فاصله‌ها باشد. .IP این پیاده‌سازی چندان سخت‌گیر نیست؛ حروف بزرگ و کوچک ترکیبی را در نام اصلی و نام‌های مستعار مجاز می‌داند. اگر آخرین نام فاقد فاصله‌های درونی باشد، به آن اجازه می‌دهد تا هم یک نام مستعار و هم یک نام تفصیلی باشد (اما در مورد این ابهام هشدار خواهد داد). .bP سطرهایی که با \*(``#\*('' در ستون اول آغاز می‌شوند، به عنوان توضیح (کامنت) تلقی می‌گردند. .IP در حالی که سطرهای توضیح در هر نقطه‌ای معتبر هستند، خروجی \fBcaptoinfo\fP و \fBinfotocap\fP (نام‌های مستعار برای \fBtic\fP) توضیحات را جابه‌جا می‌کنند تا فقط میان ورودی‌ها قرار گیرند. .PP نام‌های پایانه (به جز آخرین ورودی تفصیلی) باید با استفاده از قراردادهای زیر انتخاب شوند. قطعهٔ سخت‌افزاری خاصی که پایانه را تشکیل می‌دهد باید یک نام ریشه داشته باشد، مانند \*(``hp2621\*(''. این نام نباید حاوی خط تیره باشد. حالت‌هایی که سخت‌افزار می‌تواند در آن‌ها قرار گیرد، یا اولویت‌های کاربر، باید با افزودن یک خط تیره و پسوند حالت نشان داده شوند. بنابراین، یک vt100 در حالت ۱۳۲ ستونی vt100\-w خواهد بود. در صورت امکان، پسوندهای زیر باید استفاده شوند: .PP .TS center; Lb Lb Lb L L Lx. پسوند مثال معنا _ \-\fInn\fP aaa\-60 تعداد خطوط روی صفحه \-\fIn\fPp c100\-4p تعداد صفحات حافظه \-am vt100\-am با حاشیه‌های خودکار (معمولاً پیش‌فرض) \-m ansi\-m حالت تک‌رنگ (mono)؛ حذف رنگ \-mc wy30\-mc کوکی جادویی؛ فاصله‌ها هنگام برجسته‌سازی \-na c100\-na بدون کلیدهای پیکان (باقی گذاشتن آن‌ها در حالت محلی) \-nam vt100\-nam بدون حاشیه‌های خودکار \-nl hp2621\-nl بدون خط وضعیت \-ns hp2626\-ns بدون خط وضعیت \-rv c100\-rv ویدئوی معکوس (reverse video) \-s vt100\-s فعال‌سازی خط وضعیت \-vb wy370\-vb استفاده از زنگ بصری به‌جای بوق \-w vt100\-w حالت عریض (بیش از ۸۰ ستون، معمولاً ۱۳۲) .TE .PP برای اطلاعات بیشتر در مورد قراردادهای نام‌گذاری پایانه، صفحهٔ راهنمای \fBterm\fP(7) را ببینید. .SS "نحو قابلیتهای terminfo (terminfo Capabilities Syntax)" ورودی terminfo از چندین \fIقابلیت\fP تشکیل شده است، یعنی ویژگی‌هایی که پایانه دارد، یا روش‌هایی برای به کار انداختن ویژگی‌های پایانه. .PP پس از فیلد اول (که نام یا نام‌های ورودی پایانه را مشخص می‌کند)، باید یک یا چند فیلد \fIقابلیت\fP وجود داشته باشد. این‌ها نام‌های بولی، عددی یا رشته‌ای به همراه مقادیر متناظر هستند: .bP قابلیت‌های بولی زمانی که حضور دارند مقدار درستی (true) و در صورت عدم حضور نادرستی (false) دارند. هیچ مقدار صریحی برای قابلیت‌های بولی وجود ندارد. .bP قابلیت‌های عددی دارای یک \*(``#\*('' در پسِ نام خود هستند، که به دنبال آن یک مقدار عدد صحیح ده‌دهی بدون علامت می‌آید. .bP قابلیت‌های رشته‌ای دارای یک \*(``=\*('' در پسِ نام خود هستند، که به دنبال آن یک رشته از نویسه‌ها که مقدار قابلیت را می‌سازند قرار می‌گیرد. .IP قابلیت‌های رشته‌ای را می‌توان به چندین خط تقسیم کرد، درست همان‌طور که فیلدهای تشکیل‌دهندهٔ یک ورودی پایانه می‌توانند به چندین خط تقسیم شوند. در حالی که فاصله‌ها میان فیلدها نادیده گرفته می‌شوند، فاصله‌های قرارگرفته در درون یک مقدار رشته‌ای حفظ می‌شوند، به جز فاصله‌های ابتدایی یک سطر. .PP هر قابلیتی را می‌توان \fIلغو\fP (cancel) کرد، یعنی از ورودی پایانه حذف نمود، با قرار دادن \*(``@\*('' در پسِ نام آن به‌جای مقدار قابلیت. .SS "پایانههای مشابه (Similar Terminals)" اگر دو پایانهٔ بسیار مشابه وجود داشته باشد، یکی (گونه یا variant) را می‌توان به عنوان عیناً همانند دیگری (پایه یا base) با برخی استثناها تعریف کرد. در تعریف گونه، قابلیت رشته‌ای \fBuse\fP را می‌توان همراه با نام پایانهٔ پایه آورد: .bP قابلیت‌هایی که پیش از .B use آورده شده‌اند، بر قابلیت‌های نوع پایه که توسط .BR use نام‌گذاری شده است، اولویت دارند (آن‌ها را رونویسی می‌کنند). .bP اگر چندین قابلیت \fBuse\fP وجود داشته باشد، آن‌ها به ترتیب معکوس ادغام می‌شوند. یعنی، راست‌ترین ارجاع \fBuse\fP ابتدا پردازش می‌شود، سپس ارجاع سمت چپ آن، و به همین ترتیب. .bP قابلیت‌هایی که به‌طور صریح در ورودی مشخص شده‌اند بر قابلیت‌هایی که از طریق ارجاعات \fBuse\fP وارد می‌شوند اولویت دارند. .PP یک قابلیت را می‌توان با قرار دادن \fBxx@\fP در سمت چپِ ارجاعِ use که آن را وارد می‌کند لغو کرد، که در آن \fIxx\fP همان قابلیت است. به عنوان مثال، ورودیِ .RS .PP 2621\-nl, smkx@, rmkx@, use=2621, .RE .PP پایانهٔ 2621\-nl را تعریف می‌کند که فاقد قابلیت‌های \fBsmkx\fP یا \fBrmkx\fP است، و بنابراین برچسب‌های کلیدهای تابعی را هنگام قرار داشتن در حالت بصری روشن نمی‌کند. این ویژگی برای حالت‌های مختلف یک پایانه، یا برای ترجیحات مختلف کاربر مفید است. .PP ورودیِ گنجانده‌شده از طریق \fBuse\fP می‌تواند حاوی قابلیت‌های لغو شده باشد، که همان اثری را دارد که گویی آن لغوها درونِ خودِ ورودی پایانهٔ استفاده‌کننده قرار داشته‌اند. .SS "قابلیتهای استاندارد (Standard Capabilities)" .\" Head of terminfo man page ends here .ps -1 جداول قابلیت‌هایی که .I \%ncurses در توصیف نوع پایانهٔ .I \%term\%info شناسایی می‌کند و در دسترسِ کدهای استفاده‌کننده از .IR \%term\%info قرار می‌دهد، در ادامه آمده‌اند. .bP نام قابلیت نمادی را مشخص می‌کند که برنامه‌نویس با استفاده از رابط برنامه‌نویسی کاربردی (API) .I \%term\%info به آن قابلیت دسترسی پیدا می‌کند. .bP کد TI .RI ( \%term\%info ) نام کوتاهی است که فرد هنگام تدوین یا به‌روزرسانی ورودی نوع پایانه استفاده می‌کند. .IP در صورت امکان، این کدها همانند یا مشابه کدهای استاندارد ANSI X3.64-1979 هستند (که اکنون با ECMA-48 جایگزین شده است، که از نام‌های یکسان یا بسیار مشابه استفاده می‌کند). همچنین معناشناسی آن‌ها برای مطابقت با آن مشخصات در نظر گرفته شده است. .IP کدهای .I \%term\%info محدودیت سخت‌گیرانه‌ای برای طول ندارند، اما .I \%ncurses یک محدودیت غیررسمی ۵ نویسه‌ای را حفظ می‌کند تا آن‌ها را کوتاه نگه دارد و امکان دهد که تب‌ها در پروندهٔ مبدأ .I Caps به‌خوبی تراز شوند. (با این حال، برخی از کدهای استاندارد از این حد فراتر می‌روند.) .bP کد TC .RI ( termcap ) کدی است که توسط API متناظر در .IR \%ncurses استفاده می‌شود. (برخی از قابلیت‌ها جدید هستند، و نام‌هایی دارند که از BSD .I termcap سرچشمه نگرفته‌اند.) .bP فیلد توضیحات تلاش می‌کند معنای هر قابلیت را بیان کند. .PP فیلد توضیحات از چند نشانه‌گذاری بهره می‌برد. .TP .B (P) نشان می‌دهد که می‌توان فاصله‌گذاری (padding) را مشخص کرد. .TP .B (P*) نشان می‌دهد که فاصله‌گذاری ممکن است متناسب با تعداد خطوط خروجیِ تحت تأثیر تغییر کند. .TP .BI # i نشان‌دهندهٔ .IR i \-امین پارامتر یک قابلیت رشته‌ای است؛ برنامه‌نویس باید رشته را به همراه پارامترهای فهرست‌شده به \fB\%tparm\fP(3X) ارسال کند. .IP اگر در توضیحات هیچ پارامتری ذکر نشده باشد، ارسال رشته به \fB\%tparm\fP(3X) ممکن است رفتار غیرمنتظره‌ای ایجاد کند، برای نمونه اگر رشته شامل علامت‌های درصد باشد. . .br .if n .ne 4v .if t .ne 3v .PP .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& Code \& Boolean Capability Name TI TC Description _ auto_left_margin bw bw T{ .na حرکت cub1 از ستون ۰ به آخرین ستون می‌پیچد T} auto_right_margin am am T{ .na پایانه دارای حاشیه‌های خودکار است T} no_esc_ctlc xsb xb T{ .na beehive (کلید f1=escape، کلید f2=ctrl C) T} ceol_standout_glitch xhp xs T{ .na حالت برجسته با بازنویسی پاک نمی‌شود (hp) T} eat_newline_glitch xenl xn T{ .na خط جدید پس از ۸۰ ستون نادیده گرفته می‌شود (concept) T} erase_overstrike eo eo T{ .na می‌تواند روی‌نویسی‌ها را با فاصله پاک کند T} generic_type gn gn T{ .na نوع خط عمومی T} hard_copy hc hc T{ .na پایانه با نسخهٔ چاپی سخت (hardcopy) T} has_meta_key km km T{ .na دارای کلید متا است (یعنی بیت هشتم را تنظیم می‌کند) T} has_status_line hs hs T{ .na دارای خط وضعیت اضافی است T} insert_null_glitch in in T{ .na حالت درج میان نویسه‌های تهی تمایز قائل می‌شود T} memory_above da da T{ .na نمایش ممکن است در بالای صفحه حفظ شود T} memory_below db db T{ .na نمایش ممکن است در پایین صفحه حفظ شود T} move_insert_mode mir mi T{ .na حرکت در حالت درج ایمن است T} move_standout_mode msgr ms T{ .na حرکت در حالت برجسته ایمن است T} over_strike os os T{ .na پایانه می‌تواند روی‌نویسی کند T} status_line_esc_ok eslok es T{ .na می‌توان از کلید گریز در خط وضعیت استفاده کرد T} dest_tabs_magic_smso xt xt T{ .na تب‌های مخرب، نویسهٔ جادویی standout (t1061) T} tilde_glitch hz hz T{ .na نمی‌تواند ~ را چاپ کند (Hazeltine) T} transparent_underline ul ul T{ .na نویسهٔ زیرخط روی‌نویسی می‌کند T} xon_xoff xon xo T{ .na پایانه از دست‌تکانی xon/xoff استفاده می‌کند T} needs_xon_xoff nxon nx T{ .na فاصله‌گذاری (padding) کار نخواهد کرد، xon/xoff الزامی است T} prtr_silent mc5i 5i T{ .na چاپگر بر روی صفحه انعکاس نخواهد داشت T} hard_cursor chts HC T{ .na مکان‌نما به‌سختی دیده می‌شود T} non_rev_rmcup nrrmc NR T{ .na دستور smcup اثر rmcup را معکوس نمی‌کند T} no_pad_char npc NP T{ .na نویسهٔ فاصله‌گذاری وجود ندارد T} non_dest_scroll_region ndscr ND T{ .na ناحیهٔ پیمایش غیرمخرب است T} can_change ccc cc T{ .na پایانه می‌تواند رنگ‌های موجود را بازتعریف کند T} back_color_erase bce ut T{ .na صفحه با رنگ پس‌زمینه پاک می‌شود T} hue_lightness_saturation hls hl T{ .na پایانه فقط از نشانه‌گذاری رنگ HLS استفاده می‌کند (Tektronix) T} col_addr_glitch xhpa YA T{ .na فقط حرکت مثبت برای قابلیت‌های hpa/mhpa T} cr_cancels_micro_mode crxm YB T{ .na استفاده از cr حالت ریز (micro) را خاموش می‌کند T} has_print_wheel daisy YC T{ .na چاپگر برای تغییر مجموعه‌نویسه نیاز به اپراتور دارد T} row_addr_glitch xvpa YD T{ .na فقط حرکت مثبت برای قابلیت‌های vpa/mvpa T} semi_auto_right_margin sam YE T{ .na چاپ در آخرین ستون باعث بازگشت به ابتدای سطر (cr) می‌شود T} cpi_changes_res cpix YF T{ .na تغییر گام نویسه باعث تغییر وضوح می‌شود T} lpi_changes_res lpix YG T{ .na تغییر گام خط باعث تغییر وضوح می‌شود T} .TE .PP . .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& Code \& Numeric Capability Name TI TC Description _ columns cols co T{ .na تعداد ستون‌ها در یک سطر T} init_tabs it it T{ .na تب‌ها در ابتدا در هر # فاصله تنظیم می‌شوند T} lines lines li T{ .na تعداد خطوط روی صفحه یا برگه T} lines_of_memory lm lm T{ .na خطوط حافظه اگر > line باشد. ۰ یعنی متغیر است T} magic_cookie_glitch xmc sg T{ .na تعداد نویسه‌های خالی به‌جامانده توسط smso یا rmso T} padding_baud_rate pb pb T{ .na کمترین نرخ باد که در آن فاصله‌گذاری مورد نیاز است T} virtual_terminal vt vt T{ .na شمارهٔ پایانهٔ مجازی (CB/unix) T} width_status_line wsl ws T{ .na تعداد ستون‌ها در خط وضعیت T} num_labels nlab Nl T{ .na تعداد برچسب‌ها روی صفحه T} label_height lh lh T{ .na تعداد سطرها در هر برچسب T} label_width lw lw T{ .na تعداد ستون‌ها در هر برچسب T} max_attributes ma ma T{ .na حداکثر ویژگی‌های ترکیبی که پایانه می‌تواند مدیریت کند T} maximum_windows wnum MW T{ .na حداکثر تعداد پنجره‌های قابل‌تعریف T} max_colors colors Co T{ .na حداکثر تعداد رنگ‌ها روی صفحه T} max_pairs pairs pa T{ .na حداکثر تعداد جفت‌رنگ‌ها روی صفحه T} no_color_video ncv NC T{ .na ویژگی‌های ویدئویی که نمی‌توان با رنگ‌ها استفاده کرد T} .TE .PP . قابلیت‌های عددی زیر در ساختار term مربوط به SVr4.0 وجود دارند، اما هنوز در صفحهٔ راهنما مستند نشده‌اند. آن‌ها همراه با پشتیبانی چاپگر در SVr4 اضافه شدند. . .PP .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& Code \& Numeric Capability Name TI TC Description _ buffer_capacity bufsz Ya T{ .na تعداد بایت‌های بافرشده پیش از چاپ T} dot_vert_spacing spinv Yb T{ .na فاصله‌گذاری پین‌ها به‌صورت عمودی بر حسب پین در اینچ T} dot_horz_spacing spinh Yc T{ .na فاصله‌گذاری نقطه‌ها به‌صورت افقی بر حسب نقطه در اینچ T} max_micro_address maddr Yd T{ .na حداکثر مقدار در micro_..._address T} max_micro_jump mjump Ye T{ .na حداکثر مقدار در parm_..._micro T} micro_col_size mcs Yf T{ .na اندازهٔ گام نویسه هنگام قرار داشتن در حالت ریز (micro) T} micro_line_size mls Yg T{ .na اندازهٔ گام خط هنگام قرار داشتن در حالت ریز (micro) T} number_of_pins npins Yh T{ .na تعداد پین‌ها در سرِ چاپگر T} output_res_char orc Yi T{ .na وضوح افقی بر حسب واحد در هر خط T} output_res_line orl Yj T{ .na وضوح عمودی بر حسب واحد در هر خط T} output_res_horz_inch orhi Yk T{ .na وضوح افقی بر حسب واحد در هر اینچ T} output_res_vert_inch orvi Yl T{ .na وضوح عمودی بر حسب واحد در هر اینچ T} print_rate cps Ym T{ .na نرخ چاپ بر حسب نویسه در ثانیه T} wide_char_size widcs Yn T{ .na اندازهٔ گام نویسه هنگام قرار داشتن در حالت پهن مضاعف T} buttons btns BT T{ .na تعداد دکمه‌های ماوس T} bit_image_entwining bitwin Yo T{ .na تعداد پاس‌ها برای هر ردیف تصویر بیتی T} bit_image_type bitype Yp T{ .na نوع دستگاه تصویر بیتی T} .TE .PP . .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& Code \& String Capability Name TI TC Description _ back_tab cbt bt T{ .na تب رو به عقب (P) T} bell bel bl T{ .na سیگنال صوتی (زنگ) (P) T} carriage_return cr cr T{ .na بازگشت به ابتدای سطر (P*) (P*) T} change_scroll_region csr cs T{ .na تغییر ناحیه به خط 1# تا خط 2# (P) T} clear_all_tabs tbc ct T{ .na پاک کردن تمام نقاط توقف تب (P) T} clear_screen clear cl T{ .na پاک کردن صفحه و انتقال مکان‌نما به مبدا (P*) T} clr_eol el ce T{ .na پاک کردن تا انتهای خط (P) T} clr_eos ed cd T{ .na پاک کردن تا انتهای صفحه (P*) T} column_address hpa ch T{ .na موقعیت افقی 1#، مطلق (P) T} command_character cmdch CC T{ .na نویسهٔ دستوری قابل‌تنظیم پایانه در پیش‌نمونه !? T} cursor_address cup cm T{ .na انتقال به سطر 1# ستون 2# T} cursor_down cud1 do T{ .na یک خط به پایین T} cursor_home home ho T{ .na مبدا مکان‌نما (اگر بدون cup باشد) T} cursor_invisible civis vi T{ .na نامرئی کردن مکان‌نما T} cursor_left cub1 le T{ .na یک فضا به چپ T} cursor_mem_address mrcup CM T{ .na آدرس‌دهی مکان‌نما وابسته به حافظه، انتقال به سطر 1# ستون 2# T} cursor_normal cnorm ve T{ .na بازگرداندن مکان‌نما به حالت عادی (لغو civis/cvvis) T} cursor_right cuf1 nd T{ .na یک فضا به راست T} cursor_to_ll ll ll T{ .na انتقال به گوشهٔ پایین سمت چپ T} cursor_up cuu1 up T{ .na یک خط به بالا T} cursor_visible cvvis vs T{ .na بسیار قابل‌مشاهده کردن مکان‌نما T} delete_character dch1 dc T{ .na حذف نویسه (P*) T} delete_line dl1 dl T{ .na حذف خط (P*) T} dis_status_line dsl ds T{ .na غیرفعال کردن خط وضعیت T} down_half_line hd hd T{ .na نیم خط به پایین T} enter_alt_charset_mode smacs as T{ .na آغاز مجموعه نویسهٔ جایگزین (P) T} enter_blink_mode blink mb T{ .na روشن کردن چشمک‌زن T} enter_bold_mode bold md T{ .na روشن کردن حالت پررنگ (bold) T} enter_ca_mode smcup ti T{ .na رشته برای آغاز برنامه‌هایی که از cup استفاده می‌کنند T} enter_delete_mode smdc dm T{ .na ورود به حالت حذف T} enter_dim_mode dim mh T{ .na روشن کردن حالت کم‌نور (dim) T} enter_insert_mode smir im T{ .na ورود به حالت درج T} enter_secure_mode invis mk T{ .na روشن کردن حالت امن (پنهان) T} enter_protected_mode prot mp T{ .na روشن کردن حالت حفاظت‌شده T} enter_reverse_mode rev mr T{ .na روشن کردن حالت ویدئوی معکوس T} enter_standout_mode smso so T{ .na آغاز حالت برجسته (standout) T} enter_underline_mode smul us T{ .na آغاز حالت زیرخط‌دار T} erase_chars ech ec T{ .na پاک کردن 1# نویسه (P) T} exit_alt_charset_mode rmacs ae T{ .na پایان مجموعه نویسهٔ جایگزین (P) T} exit_attribute_mode sgr0 me T{ .na خاموش کردن تمام ویژگی‌ها T} exit_ca_mode rmcup te T{ .na رشته برای پایان برنامه‌هایی که از cup استفاده می‌کنند T} exit_delete_mode rmdc ed T{ .na پایان حالت حذف T} exit_insert_mode rmir ei T{ .na پایان حالت درج T} exit_standout_mode rmso se T{ .na پایان حالت برجسته (standout) T} exit_underline_mode rmul ue T{ .na پایان حالت زیرخط‌دار T} flash_screen flash vb T{ .na فلش زدن قابل‌مشاهدهٔ صفحه (زنگ بصری) T} form_feed ff ff T{ .na تغذیهٔ برگه (form feed) سخت‌کپی (P*) T} from_status_line fsl fs T{ .na بازگشت از خط وضعیت T} init_1string is1 i1 T{ .na رشتهٔ مقداردهی اولیه پایانه T} init_2string is2 is T{ .na رشتهٔ مقداردهی اولیه پایانه T} init_3string is3 i3 T{ .na رشتهٔ مقداردهی اولیه پایانه T} init_file if if T{ .na نام پروندهٔ مقداردهی اولیه T} insert_character ich1 ic T{ .na درج نویسه (P) T} insert_line il1 al T{ .na درج سطر (P*) T} insert_padding ip ip T{ .na درج فاصله‌گذاری پس از نویسهٔ درج‌شده T} key_backspace kbs kb T{ .na کلید پس‌بر (backspace) T} key_catab ktbc ka T{ .na کلید پاک کردن تمام تب‌ها T} key_clear kclr kC T{ .na کلید پاک کردن صفحه یا محو کردن T} key_ctab kctab kt T{ .na کلید پاک کردن تب T} key_dc kdch1 kD T{ .na کلید حذف نویسه T} key_dl kdl1 kL T{ .na کلید حذف سطر T} key_down kcud1 kd T{ .na کلید پیکان پایین T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_eic krmir kM T{ .na ارسال‌شده توسط rmir یا smir در حالت درج T} key_eol kel kE T{ .na کلید پاک کردن تا انتهای سطر T} key_eos ked kS T{ .na کلید پاک کردن تا انتهای صفحه T} key_f0 kf0 k0 T{ .na کلید تابعی F0 T} key_f1 kf1 k1 T{ .na کلید تابعی F1 T} key_f10 kf10 k; T{ .na کلید تابعی F10 T} key_f2 kf2 k2 T{ .na کلید تابعی F2 T} key_f3 kf3 k3 T{ .na کلید تابعی F3 T} key_f4 kf4 k4 T{ .na کلید تابعی F4 T} key_f5 kf5 k5 T{ .na کلید تابعی F5 T} key_f6 kf6 k6 T{ .na کلید تابعی F6 T} key_f7 kf7 k7 T{ .na کلید تابعی F7 T} key_f8 kf8 k8 T{ .na کلید تابعی F8 T} key_f9 kf9 k9 T{ .na کلید تابعی F9 T} key_home khome kh T{ .na کلید مبدا (home) T} key_ic kich1 kI T{ .na کلید درج نویسه T} key_il kil1 kA T{ .na کلید درج سطر T} key_left kcub1 kl T{ .na کلید پیکان چپ T} key_ll kll kH T{ .na کلید پایین-چپ (مبدا پایین) T} key_npage knp kN T{ .na کلید صفحه بعد T} key_ppage kpp kP T{ .na کلید صفحه قبل T} key_right kcuf1 kr T{ .na کلید پیکان راست T} key_sf kind kF T{ .na کلید پیمایش به جلو T} key_sr kri kR T{ .na کلید پیمایش به عقب T} key_stab khts kT T{ .na کلید تنظیم تب T} key_up kcuu1 ku T{ .na کلید پیکان بالا T} keypad_local rmkx ke T{ .na خروج از حالت ارسال صفحه‌کلید عددی T} keypad_xmit smkx ks T{ .na ورود به حالت ارسال صفحه‌کلید عددی T} lab_f0 lf0 l0 T{ .na برچسب کلید تابعی f0 اگر روی کلید f0 نباشد T} lab_f1 lf1 l1 T{ .na برچسب کلید تابعی f1 اگر روی کلید f1 نباشد T} lab_f10 lf10 la T{ .na برچسب کلید تابعی f10 اگر روی کلید f10 نباشد T} lab_f2 lf2 l2 T{ .na برچسب کلید تابعی f2 اگر روی کلید f2 نباشد T} lab_f3 lf3 l3 T{ .na برچسب کلید تابعی f3 اگر روی کلید f3 نباشد T} lab_f4 lf4 l4 T{ .na برچسب کلید تابعی f4 اگر روی کلید f4 نباشد T} lab_f5 lf5 l5 T{ .na برچسب کلید تابعی f5 اگر روی کلید f5 نباشد T} lab_f6 lf6 l6 T{ .na برچسب کلید تابعی f6 اگر روی کلید f6 نباشد T} lab_f7 lf7 l7 T{ .na برچسب کلید تابعی f7 اگر روی کلید f7 نباشد T} lab_f8 lf8 l8 T{ .na برچسب کلید تابعی f8 اگر روی کلید f8 نباشد T} lab_f9 lf9 l9 T{ .na برچسب کلید تابعی f9 اگر روی کلید f9 نباشد T} meta_off rmm mo T{ .na خروج از حالت متا T} meta_on smm mm T{ .na ورود به حالت متا (بیت هشتم روشن) T} newline nel nw T{ .na خط جدید (مانند cr و lf) T} pad_char pad pc T{ .na نویسهٔ فاصله‌گذاری (به‌جای تهی) T} parm_dch dch DC T{ .na حذف 1# نویسه (P*) T} parm_delete_line dl DL T{ .na حذف 1# سطر (P*) T} parm_down_cursor cud DO T{ .na پایین بردن مکان‌نما به اندازهٔ 1# خط (P*) T} parm_ich ich IC T{ .na درج 1# نویسه (P*) T} parm_index indn SF T{ .na پیمایش به جلو به اندازهٔ 1# سطر (P) T} parm_insert_line il AL T{ .na درج 1# سطر (P*) T} parm_left_cursor cub LE T{ .na انتقال مکان‌نما به چپ به اندازهٔ 1# فضا (P*) T} parm_right_cursor cuf RI T{ .na انتقال مکان‌نما به راست به اندازهٔ 1# فضا (P*) T} parm_rindex rin SR T{ .na پیمایش به عقب به اندازهٔ 1# سطر (P) T} parm_up_cursor cuu UP T{ .na بالا بردن مکان‌نما به اندازهٔ 1# خط (P*) T} pkey_key pfkey pk T{ .na برنامه‌ریزی کلید تابعی 1# برای تایپ رشتهٔ 2# T} pkey_local pfloc pl T{ .na برنامه‌ریزی کلید تابعی 1# برای اجرای رشتهٔ 2# به‌صورت محلی T} pkey_xmit pfx px T{ .na برنامه‌ریزی کلید تابعی 1# برای ارسال رشتهٔ 2# به رایانه T} print_screen mc0 ps T{ .na چاپ محتویات صفحه T} prtr_off mc4 pf T{ .na خاموش کردن چاپگر T} prtr_on mc5 po T{ .na روشن کردن چاپگر T} repeat_char rep rp T{ .na تکرار نویسهٔ 1# به تعداد 2# بار (P*) T} reset_1string rs1 r1 T{ .na رشتهٔ بازنشانی پایانه T} reset_2string rs2 r2 T{ .na رشتهٔ بازنشانی پایانه T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. reset_3string rs3 r3 T{ .na رشتهٔ بازنشانی پایانه T} reset_file rf rf T{ .na نام پروندهٔ بازنشانی پایانه T} restore_cursor rc rc T{ .na بازیابی موقعیت مکان‌نما به آخرین حالت ذخیره‌شده T} row_address vpa cv T{ .na موقعیت عمودی 1#، مطلق (P) T} save_cursor sc sc T{ .na ذخیرهٔ موقعیت فعلی مکان‌نما (P) T} scroll_forward ind sf T{ .na پیمایش متن به بالا (P) T} scroll_reverse ri sr T{ .na پیمایش متن به پایین (P) T} set_attributes sgr sa T{ .na تعریف ویژگی‌های ویدئویی 1# تا 9# (PG9) T} set_tab hts st T{ .na تنظیم تب در هر سطر، ستون‌های جاری T} set_window wind wi T{ .na پنجرهٔ جاری خطوط 1#-2# ستون‌های 3#-4# است T} tab ht ta T{ .na تب به نقطهٔ توقف تب بعدی T} to_status_line tsl ts T{ .na رفتن به خط وضعیت، ستون 1# T} underline_char uc uc T{ .na زیرخط‌دار کردن نویسهٔ جاری و حرکت به راست T} up_half_line hu hu T{ .na نیم خط به بالا T} init_prog iprog iP T{ .na مسیر برنامه برای مقداردهی اولیه T} key_a1 ka1 K1 T{ .na بالا سمت چپ صفحه‌کلید عددی T} key_a3 ka3 K3 T{ .na بالا سمت راست صفحه‌کلید عددی T} key_b2 kb2 K2 T{ .na مرکز صفحه‌کلید عددی T} key_c1 kc1 K4 T{ .na پایین سمت چپ صفحه‌کلید عددی T} key_c3 kc3 K5 T{ .na پایین سمت راست صفحه‌کلید عددی T} prtr_non mc5p pO T{ .na روشن کردن چاپگر به اندازهٔ 1# بایت T} char_padding rmp rP T{ .na مانند ip اما هنگام عدم قرارگیری در حالت درج T} acs_chars acsc ac T{ .na جفت‌نویسه‌های گرافیکی که به نویسه‌های acs نگاشت می‌شوند T} plab_norm pln pn T{ .na برنامه‌ریزی برچسب 1# برای نمایش رشتهٔ 2# T} key_btab kcbt kB T{ .na کلید تب رو به عقب T} enter_xon_mode smxon SX T{ .na روشن کردن کنترل جریان xon/xoff T} exit_xon_mode rmxon RX T{ .na خاموش کردن کنترل جریان xon/xoff T} enter_am_mode smam SA T{ .na روشن کردن حاشیه‌های خودکار T} exit_am_mode rmam RA T{ .na خاموش کردن حاشیه‌های خودکار T} xon_character xonc XN T{ .na نویسهٔ XON T} xoff_character xoffc XF T{ .na نویسهٔ XOFF T} ena_acs enacs eA T{ .na فعال‌سازی مجموعه نویسهٔ جایگزین T} label_on smln LO T{ .na روشن کردن برچسب‌های نرم (soft labels) T} label_off rmln LF T{ .na خاموش کردن برچسب‌های نرم T} key_beg kbeg @1 T{ .na کلید شروع (begin) T} key_cancel kcan @2 T{ .na کلید لغو (cancel) T} key_close kclo @3 T{ .na کلید بستن (close) T} key_command kcmd @4 T{ .na کلید دستور (command) T} key_copy kcpy @5 T{ .na کلید رونوشت (copy) T} key_create kcrt @6 T{ .na کلید ایجاد (create) T} key_end kend @7 T{ .na کلید پایان (end) T} key_enter kent @8 T{ .na کلید ورود/ارسال (enter/send) T} key_exit kext @9 T{ .na کلید خروج (exit) T} key_find kfnd @0 T{ .na کلید جستجو (find) T} key_help khlp %1 T{ .na کلید راهنما (help) T} key_mark kmrk %2 T{ .na کلید علامت‌گذاری (mark) T} key_message kmsg %3 T{ .na کلید پیام (message) T} key_move kmov %4 T{ .na کلید انتقال (move) T} key_next knxt %5 T{ .na کلید بعدی (next) T} key_open kopn %6 T{ .na کلید باز کردن (open) T} key_options kopt %7 T{ .na کلید گزینه‌ها (options) T} key_previous kprv %8 T{ .na کلید قبلی (previous) T} key_print kprt %9 T{ .na کلید چاپ (print) T} key_redo krdo %0 T{ .na کلید انجام مجدد (redo) T} key_reference kref &1 T{ .na کلید مرجع (reference) T} key_refresh krfr &2 T{ .na کلید بازآوری (refresh) T} key_replace krpl &3 T{ .na کلید جایگزینی (replace) T} key_restart krst &4 T{ .na کلید راه‌اندازی مجدد (restart) T} key_resume kres &5 T{ .na کلید ازسرگیری (resume) T} key_save ksav &6 T{ .na کلید ذخیره (save) T} key_suspend kspd &7 T{ .na کلید تعلیق (suspend) T} key_undo kund &8 T{ .na کلید واگرد (undo) T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG &9 T{ .na کلید شروع تبدیل‌شده (shifted begin) T} key_scancel kCAN &0 T{ .na کلید لغو تبدیل‌شده (shifted cancel) T} key_scommand kCMD *1 T{ .na کلید دستور تبدیل‌شده (shifted command) T} key_scopy kCPY *2 T{ .na کلید رونوشت تبدیل‌شده (shifted copy) T} key_screate kCRT *3 T{ .na کلید ایجاد تبدیل‌شده (shifted create) T} key_sdc kDC *4 T{ .na کلید حذف نویسهٔ تبدیل‌شده (shifted delete-character) T} key_sdl kDL *5 T{ .na کلید حذف سطر تبدیل‌شده (shifted delete-line) T} key_select kslt *6 T{ .na کلید انتخاب (select) T} key_send kEND *7 T{ .na کلید پایان تبدیل‌شده (shifted end) T} key_seol kEOL *8 T{ .na کلید پاک‌کردن تا انتهای سطر تبدیل‌شده T} key_sexit kEXT *9 T{ .na کلید خروج تبدیل‌شده (shifted exit) T} key_sfind kFND *0 T{ .na کلید جستجوی تبدیل‌شده (shifted find) T} key_shelp kHLP #1 T{ .na کلید راهنمای تبدیل‌شده (shifted help) T} key_shome kHOM #2 T{ .na کلید مبدا تبدیل‌شده (shifted home) T} key_sic kIC #3 T{ .na کلید درج نویسهٔ تبدیل‌شده (shifted insert-character) T} key_sleft kLFT #4 T{ .na کلید پیکان چپ تبدیل‌شده (shifted left-arrow) T} key_smessage kMSG %a T{ .na کلید پیام تبدیل‌شده (shifted message) T} key_smove kMOV %b T{ .na کلید انتقال تبدیل‌شده (shifted move) T} key_snext kNXT %c T{ .na کلید بعدی تبدیل‌شده (shifted next) T} key_soptions kOPT %d T{ .na کلید گزینه‌های تبدیل‌شده (shifted options) T} key_sprevious kPRV %e T{ .na کلید قبلی تبدیل‌شده (shifted previous) T} key_sprint kPRT %f T{ .na کلید چاپ تبدیل‌شده (shifted print) T} key_sredo kRDO %g T{ .na کلید انجام مجدد تبدیل‌شده (shifted redo) T} key_sreplace kRPL %h T{ .na کلید جایگزینی تبدیل‌شده (shifted replace) T} key_sright kRIT %i T{ .na کلید پیکان راست تبدیل‌شده (shifted right-arrow) T} key_srsume kRES %j T{ .na کلید ازسرگیری تبدیل‌شده (shifted resume) T} key_ssave kSAV !1 T{ .na کلید ذخیرهٔ تبدیل‌شده (shifted save) T} key_ssuspend kSPD !2 T{ .na کلید تعلیق تبدیل‌شده (shifted suspend) T} key_sundo kUND !3 T{ .na کلید واگرد تبدیل‌شده (shifted undo) T} req_for_input rfi RF T{ .na ارسال پاسخ کد وضعیت بعدی به ترمینال T} key_f11 kf11 F1 T{ .na کلید تابعی F11 T} key_f12 kf12 F2 T{ .na کلید تابعی F12 T} key_f13 kf13 F3 T{ .na کلید تابعی F13 T} key_f14 kf14 F4 T{ .na کلید تابعی F14 T} key_f15 kf15 F5 T{ .na کلید تابعی F15 T} key_f16 kf16 F6 T{ .na کلید تابعی F16 T} key_f17 kf17 F7 T{ .na کلید تابعی F17 T} key_f18 kf18 F8 T{ .na کلید تابعی F18 T} key_f19 kf19 F9 T{ .na کلید تابعی F19 T} key_f20 kf20 FA T{ .na کلید تابعی F20 T} key_f21 kf21 FB T{ .na کلید تابعی F21 T} key_f22 kf22 FC T{ .na کلید تابعی F22 T} key_f23 kf23 FD T{ .na کلید تابعی F23 T} key_f24 kf24 FE T{ .na کلید تابعی F24 T} key_f25 kf25 FF T{ .na کلید تابعی F25 T} key_f26 kf26 FG T{ .na کلید تابعی F26 T} key_f27 kf27 FH T{ .na کلید تابعی F27 T} key_f28 kf28 FI T{ .na کلید تابعی F28 T} key_f29 kf29 FJ T{ .na کلید تابعی F29 T} key_f30 kf30 FK T{ .na کلید تابعی F30 T} key_f31 kf31 FL T{ .na کلید تابعی F31 T} key_f32 kf32 FM T{ .na کلید تابعی F32 T} key_f33 kf33 FN T{ .na کلید تابعی F33 T} key_f34 kf34 FO T{ .na کلید تابعی F34 T} key_f35 kf35 FP T{ .na کلید تابعی F35 T} key_f36 kf36 FQ T{ .na کلید تابعی F36 T} key_f37 kf37 FR T{ .na کلید تابعی F37 T} key_f38 kf38 FS T{ .na کلید تابعی F38 T} key_f39 kf39 FT T{ .na کلید تابعی F39 T} key_f40 kf40 FU T{ .na کلید تابعی F40 T} key_f41 kf41 FV T{ .na کلید تابعی F41 T} key_f42 kf42 FW T{ .na کلید تابعی F42 T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_f43 kf43 FX T{ .na کلید تابعی F43 T} key_f44 kf44 FY T{ .na کلید تابعی F44 T} key_f45 kf45 FZ T{ .na کلید تابعی F45 T} key_f46 kf46 Fa T{ .na کلید تابعی F46 T} key_f47 kf47 Fb T{ .na کلید تابعی F47 T} key_f48 kf48 Fc T{ .na کلید تابعی F48 T} key_f49 kf49 Fd T{ .na کلید تابعی F49 T} key_f50 kf50 Fe T{ .na کلید تابعی F50 T} key_f51 kf51 Ff T{ .na کلید تابعی F51 T} key_f52 kf52 Fg T{ .na کلید تابعی F52 T} key_f53 kf53 Fh T{ .na کلید تابعی F53 T} key_f54 kf54 Fi T{ .na کلید تابعی F54 T} key_f55 kf55 Fj T{ .na کلید تابعی F55 T} key_f56 kf56 Fk T{ .na کلید تابعی F56 T} key_f57 kf57 Fl T{ .na کلید تابعی F57 T} key_f58 kf58 Fm T{ .na کلید تابعی F58 T} key_f59 kf59 Fn T{ .na کلید تابعی F59 T} key_f60 kf60 Fo T{ .na کلید تابعی F60 T} key_f61 kf61 Fp T{ .na کلید تابعی F61 T} key_f62 kf62 Fq T{ .na کلید تابعی F62 T} key_f63 kf63 Fr T{ .na کلید تابعی F63 T} clr_bol el1 cb T{ .na پاک کردن تا ابتدای خط T} clear_margins mgc MC T{ .na پاک کردن حاشیه‌های چپ و راست نرم T} set_left_margin smgl ML T{ .na تنظیم حاشیهٔ نرم چپ در ستون جاری (در BSD termcap وجود ندارد) T} set_right_margin smgr MR T{ .na تنظیم حاشیهٔ نرم راست در ستون جاری T} label_format fln Lf T{ .na قالب برچسب T} set_clock sclk SC T{ .na تنظیم ساعت به زمان 1# ساعت، 2# دقیقه، 3# ثانیه T} display_clock dclk DK T{ .na نمایش ساعت T} remove_clock rmclk RC T{ .na حذف ساعت T} create_window cwin CW T{ .na تعریف پنجرهٔ 1# از 2#,3# تا 4#,5# T} goto_window wingo WG T{ .na رفتن به پنجرهٔ 1# T} hangup hup HU T{ .na قطع تماس تلفنی T} dial_phone dial DI T{ .na شماره‌گیری تلفن 1# T} quick_dial qdial QD T{ .na شماره‌گیری سریع تلفن 1# T} tone tone TO T{ .na انتخاب شماره‌گیری تن T} pulse pulse PU T{ .na انتخاب شماره‌گیری پالسی T} flash_hook hook fh T{ .na فلش قلاب تلفن T} fixed_pause pause PA T{ .na مکث به مدت ۲-۳ ثانیه T} wait_tone wait WA T{ .na انتظار برای تن شماره‌گیری T} user0 u0 u0 T{ .na رشتهٔ کاربر شماره ۰ T} user1 u1 u1 T{ .na رشتهٔ کاربر شماره ۱ T} user2 u2 u2 T{ .na رشتهٔ کاربر شماره ۲ T} user3 u3 u3 T{ .na رشتهٔ کاربر شماره ۳ T} user4 u4 u4 T{ .na رشتهٔ کاربر شماره ۴ T} user5 u5 u5 T{ .na رشتهٔ کاربر شماره ۵ T} user6 u6 u6 T{ .na رشتهٔ کاربر شماره ۶ T} user7 u7 u7 T{ .na رشتهٔ کاربر شماره ۷ T} user8 u8 u8 T{ .na رشتهٔ کاربر شماره ۸ T} user9 u9 u9 T{ .na رشتهٔ کاربر شماره ۹ T} orig_pair op op T{ .na بازنشانی جفت‌رنگ پیش‌فرض به مقادیر اصلی T} orig_colors oc oc T{ .na بازنشانی تمام رنگ‌ها به مقادیر اصلی T} initialize_color initc Ic T{ .na مقداردهی اولیه رنگ 1# به مقادیر (2#,3#,4#) T} initialize_pair initp Ip T{ .na مقداردهی اولیه جفت‌رنگ 1# به پیش‌زمینه=(2#,3#,4#) و پس‌زمینه=(5#,6#,7#) T} set_color_pair scp sp T{ .na تنظیم جفت‌رنگ جاری روی 1# T} set_foreground setf Sf T{ .na تنظیم رنگ پیش‌زمینه 1# T} set_background setb Sb T{ .na تنظیم رنگ پس‌زمینه 1# T} change_char_pitch cpi ZA T{ .na تغییر تعداد نویسه‌ها در هر اینچ به 1# T} change_line_pitch lpi ZB T{ .na تغییر تعداد خطوط در هر اینچ به 1# T} change_res_horz chr ZC T{ .na تغییر وضوح افقی به 1# T} change_res_vert cvr ZD T{ .na تغییر وضوح عمودی به 1# T} define_char defc ZE T{ .na تعریف یک نویسهٔ 1# به پهنای 2# نقطه، با پایین‌آمدگی 3# T} enter_doublewide_mode swidm ZF T{ .na ورود به حالت پهن مضاعف (double-wide) T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq ZG T{ .na ورود به کیفیت پیش‌نویس (draft) T} enter_italics_mode sitm ZH T{ .na فعال‌سازی حالت ایتالیک T} enter_leftward_mode slm ZI T{ .na فعال‌سازی حرکت به چپ T} enter_micro_mode smicm ZJ T{ .na فعال‌سازی حرکت ریز (micro) T} enter_near_letter_quality snlq ZK T{ .na ورود به کیفیت نزدیک به نامه (NLQ) T} enter_normal_quality snrmq ZL T{ .na ورود به کیفیت معمولی T} enter_shadow_mode sshm ZM T{ .na فعال‌سازی چاپ سایه‌دار T} enter_subscript_mode ssubm ZN T{ .na فعال‌سازی حالت زیرنویس T} enter_superscript_mode ssupm ZO T{ .na فعال‌سازی حالت بالانویس T} enter_upward_mode sum ZP T{ .na فعال‌سازی حرکت به بالا T} exit_doublewide_mode rwidm ZQ T{ .na خروج از حالت پهن مضاعف T} exit_italics_mode ritm ZR T{ .na خروج از حالت ایتالیک T} exit_leftward_mode rlm ZS T{ .na خروج از حالت حرکت به چپ T} exit_micro_mode rmicm ZT T{ .na خروج از حالت حرکت ریز (micro) T} exit_shadow_mode rshm ZU T{ .na خروج از چاپ سایه‌دار T} exit_subscript_mode rsubm ZV T{ .na خروج از حالت زیرنویس T} exit_superscript_mode rsupm ZW T{ .na خروج از حالت بالانویس T} exit_upward_mode rum ZX T{ .na خروج از حالت حرکت به بالا T} micro_column_address mhpa ZY T{ .na مانند column_address در حالت ریز T} micro_down mcud1 ZZ T{ .na مانند cursor_down در حالت ریز T} micro_left mcub1 Za T{ .na مانند cursor_left در حالت ریز T} micro_right mcuf1 Zb T{ .na مانند cursor_right در حالت ریز T} micro_row_address mvpa Zc T{ .na مانند row_address در حالت ریز T} micro_up mcuu1 Zd T{ .na مانند cursor_up در حالت ریز T} order_of_pins porder Ze T{ .na تطابق پین‌ها در سر چاپگر با بیت‌ها در بایت T} parm_down_micro mcud Zf T{ .na مانند parm_down_cursor در حالت ریز T} parm_left_micro mcub Zg T{ .na مانند parm_left_cursor در حالت ریز T} parm_right_micro mcuf Zh T{ .na مانند parm_right_cursor در حالت ریز T} parm_up_micro mcuu Zi T{ .na مانند parm_up_cursor در حالت ریز T} select_char_set scs Zj T{ .na انتخاب مجموعه‌نویسه، 1# T} set_bottom_margin smgb Zk T{ .na تنظیم حاشیهٔ پایین در خط جاری T} set_bottom_margin_parm smgbp Zl T{ .na تنظیم حاشیه پایین در خط 1# یا (در صورت مشخص نشدن smgtp) به اندازهٔ 2# خط از پایین T} set_left_margin_parm smglp Zm T{ .na تنظیم حاشیهٔ چپ در ستون 1# T} set_right_margin_parm smgrp Zn T{ .na تنظیم حاشیهٔ راست در ستون 1# T} set_top_margin smgt Zo T{ .na تنظیم حاشیهٔ بالا در سطر جاری T} set_top_margin_parm smgtp Zp T{ .na تنظیم حاشیه بالا در خط 1# T} start_bit_image sbim Zq T{ .na آغاز تصویر بیتی در حالت 1# T} start_char_set_def scsd Zr T{ .na آغاز تعریف مجموعه‌نویسهٔ 1#، با 2# نویسه در مجموعه T} stop_bit_image rbim Zs T{ .na توقف تصویر بیتی T} stop_char_set_def rcsd Zt T{ .na پایان تعریف مجموعه‌نویسهٔ 1# T} subscript_characters subcs Zu T{ .na فهرست نویسه‌های زیرنویس T} superscript_characters supcs Zv T{ .na فهرست نویسه‌های بالانویس T} these_cause_cr docr Zw T{ .na چاپ هر یک از این نویسه‌ها باعث بازگشت به ابتدای سطر (cr) می‌شود T} zero_motion zerom Zx T{ .na بدون حرکت برای چاپ نویسهٔ بعدی T} .TE .PP . قابلیت‌های رشته‌ای زیر در ساختار term مربوط به SVr4.0 وجود دارند، اما در ابتدا در صفحهٔ راهنما مستند نشده بودند. . .PP .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& Code \& String Capability Name TI TC Description _ char_set_names csnm Zy T{ .na تولید مورد 1#ـم از فهرست نام‌های مجموعه‌نویسه T} key_mouse kmous Km T{ .na رویداد ماوس رخ داده است T} mouse_info minfo Mi T{ .na کد وضعیت ماوس خوانده شده است T} req_mouse_pos reqmp RQ T{ .na درخواست موقعیت ماوس T} get_mouse getm Gm T{ .na curses باید رویدادهای دکمه ماوس را دریافت کند؛ پارامتر 1# مستند نشده است T} set_a_foreground setaf AF T{ .na تنظیم رنگ پیش‌زمینه به 1#، با استفاده از گریز ANSI T} set_a_background setab AB T{ .na تنظیم رنگ پس‌زمینه به 1#، با استفاده از گریز ANSI T} pkey_plab pfxl xl T{ .na برنامه‌ریزی کلید تابعی 1# برای تایپ رشتهٔ 2# و نمایش رشتهٔ 3# T} device_type devt dv T{ .na نشان‌دهندهٔ پشتیبانی از زبان و مجموعه‌کد T} code_set_init csin ci T{ .na توالی مقداردهی اولیه برای چندین مجموعه‌کد T} set0_des_seq s0ds s0 T{ .na تغییر به مجموعه‌کد ۰ (مجموعه EUC 0، اسکی) T} set1_des_seq s1ds s1 T{ .na تغییر به مجموعه‌کد ۱ T} set2_des_seq s2ds s2 T{ .na تغییر به مجموعه‌کد ۲ T} set3_des_seq s3ds s3 T{ .na تغییر به مجموعه‌کد ۳ T} set_lr_margin smglr ML T{ .na تنظیم هر دو حاشیهٔ چپ و راست روی 1# و 2#. (ML در termcap بی‌اس‌دی وجود ندارد) T} set_tb_margin smgtb MT T{ .na تنظیم هر دو حاشیهٔ بالا و پایین روی 1# و 2# T} bit_image_repeat birep Xy T{ .na تکرار سلول تصویر بیتی 1# به تعداد 2# بار T} bit_image_newline binel Zz T{ .na حرکت به ردیف تصویر بیتی بعدی T} bit_image_carriage_return bicr Yv T{ .na حرکت به ابتدای ردیف تصویر بیتی جاری T} color_names colornm Yw T{ .na ارائهٔ مورد 1#ـم از فهرست نام‌های رنگ T} define_bit_image_region defbi Yx T{ .na تعریف ناحیه مستطیلی تصویر بیتی T} end_bit_image_region endbi Yy T{ .na پایان ناحیه مستطیلی تصویر بیتی T} set_color_band setcolor Yz T{ .na تغییر به نوار روبان شماره 1# T} set_page_length slines YZ T{ .na تنظیم طول صفحه به 1# خط T} display_pc_char dispc S1 T{ .na نمایش نویسهٔ PC 1# T} enter_pc_charset_mode smpch S2 T{ .na ورود به حالت مجموعه‌نویسهٔ PC T} exit_pc_charset_mode rmpch S3 T{ .na خروج از حالت مجموعه‌نویسهٔ PC T} enter_scancode_mode smsc S4 T{ .na ورود به حالت کد اسکن (scancode) T} exit_scancode_mode rmsc S5 T{ .na خروج از حالت کد اسکن T} pc_term_options pctrm S6 T{ .na گزینه‌های پایانهٔ PC T} scancode_escape scesc S7 T{ .na پیشوند گریز برای کد اسکن T} alt_scancode_esc scesa S8 T{ .na پیشوند گریز متناوب برای کد اسکن T} .TE .PP . استاندارد XSI Curses این قابلیت‌های نسخهٔ چاپی سخت (hardcopy) را اضافه کرد. آن‌ها در برخی از نسخه‌های بعد از 4.1 از curses متعلق به System V استفاده می‌شدند، مانند Solaris 2.5 و IRIX 6.x. به جز \fBYI\fP، نام‌های termcap در \fBncurses\fR برای آن‌ها ابداعی است. طبق استاندارد XSI Curses، آن‌ها هیچ نام termcapای ندارند. اگر ورودی‌های terminfo کامپایل‌شدهٔ شما از این موارد استفاده کنند، ممکن است با ورودی‌های terminfo در System V پس از SVr4.1 سازگاری باینری نداشته باشند؛ مراقب باشید! . .PP .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& Code \& String Capability Name TI TC Description _ enter_horizontal_hl_mode ehhlm Xh T{ .na ورود به حالت برجسته‌سازی افقی T} enter_left_hl_mode elhlm Xl T{ .na ورود به حالت برجسته‌سازی چپ T} enter_low_hl_mode elohlm Xo T{ .na ورود به حالت برجسته‌سازی پایین T} enter_right_hl_mode erhlm Xr T{ .na ورود به حالت برجسته‌سازی راست T} enter_top_hl_mode ethlm Xt T{ .na ورود به حالت برجسته‌سازی بالا T} enter_vertical_hl_mode evhlm Xv T{ .na ورود به حالت برجسته‌سازی عمودی T} set_a_attributes sgr1 sA T{ .na تعریف مجموعهٔ دوم ویژگی‌های ویدئویی 1# تا 6# T} set_pglen_inch slength YI T{ .na تنظیم طول صفحه به اندازهٔ 1# صدم اینچ (برخی پیاده‌سازی‌ها از sL برای termcap استفاده می‌کنند) T} .TE .\"*************************************************************************** .\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" $Id: terminfo.tail,v 1.163 2025/11/12 01:01:34 Branden.Robinson Exp $ .ps +1 .SS "قابلیتهای تعریفشده توسط کاربر (User-Defined Capabilities)" . بخش پیشین قابلیت‌های .I استاندارد را فهرست کرد. برخی از آن‌ها تخصصی هستند، و از قابلیت‌هایی پشتیبانی می‌کنند که شبیه‌سازهای پایانه آن‌ها را پیاده‌سازی نمی‌کنند، یا ممکن است هرگز در سخت‌افزارهای تولیدشده تحقق نیافته باشند. گاهی اوقات، شبیه‌سازها ویژگی‌های خاصی دارند که نمایش آن‌ها با استفاده از قابلیت‌های استاندارد، دشوار یا ناممکن است. .PP .I \%ncurses این محدودیت را با امکان‌پذیر ساختن قابلیت‌های تعریف‌شده توسط کاربر برطرف می‌کند. برنامه‌های .B \%tic و .B \%infocmp گزینهٔ .B \-x را برای این منظور ارائه می‌دهند. هنگامی که .B \-x به کار می‌رود، .B \%tic با قابلیت‌های ناشناخته به عنوان قابلیت‌های تعریف‌شده توسط کاربر رفتار می‌کند. به این معنا که اگر .B \%tic با نام قابلیتی روبرو شود که آن را بازنمی‌شناسد، برنامه نوع قابلیت (بولی، عددی، یا رشته‌ای) را از نحو مقدار قابلیت استنباط کرده و یک مدخل جدول گسترش‌یافته برای آن قابلیت می‌سازد. \fBuse_extended_names\fP(3X) این اطلاعات را به صورت مشروط در دسترس برنامه‌ها قرار می‌دهد. توابع کتابخانهٔ .I \%ncurses داده‌های قابلیت را در اختیار فراخوان‌ها قرار می‌دهند، که تفسیر آن‌ها تا حد زیادی بر عهدهٔ برنامهٔ کاربردی است. .bP .I \%ncurses با قابلیت‌های رشته‌ای تعریف‌شده توسط کاربر که نام آن‌ها با \*(``k\*('' آغاز می‌شود به عنوان کلیدهای تابع رفتار می‌کند. .bP انواع قابلیت (بولی، عددی، یا رشته‌ای) که توسط .B \%tic تعیین می‌شوند، می‌توانند از طریق فراخوانی‌های موفق \fB\%tigetflag\fP(3X)، \fB\%tigetnum\fP(3X) و \fB\%tigetstr\fP(3X) استنباط شوند. .bP اگر نام قابلیت تصادفاً دو نویسه‌ای باشد، آن قابلیت از طریق واسط termcap نیز در دسترس خواهد بود. .PP اگرچه گفته می‌شود .I termcap گسترش‌پذیر است زیرا هیچ قابلیتی را تحمیل نمی‌کند، اما در عمل به مواردی محدود شده است که توسط پیاده‌سازی‌های .I \%term\%info تعریف شده‌اند. به عنوان یک قاعده، تنها قابلیت‌های تعریف‌شده توسط کاربر از نوع بولی و عددی را با برنامه‌های .I termcap به کار ببرید تا از سرریز شدن حد ۱۰۲۳ بایتی که توسط پیاده‌سازی‌های .I termcap و برنامه‌های آن‌ها فرض می‌شود، جلوگیری گردد. به‌ویژه، پشتیبانی از مجموعه‌های گسترش‌یافتهٔ کلیدهای تابع (فراتر از ۶۰ کلید شماره‌دار و اندک کلیدهای با نام خاص) بهتر است با نام‌های طولانی‌تر موجود در .IR \%term\%info انجام پذیرد. .PP کتابخانهٔ .I \%ncurses از تعداد اندکی از این قابلیت‌های تعریف‌شده توسط کاربر استفاده می‌کند، همان‌طور که در \fBuser_caps\fR(5) شرح داده شده است. برای سایر قابلیت‌های تعریف‌شده توسط کاربر، از جمله کلیدهای تابع، به فرم منبع پایگاه داده پایانه، یعنی .IR \%terminfo.src "،" زیر عنوان \*(``NCURSES USER-DEFINABLE CAPABILITIES\*('' مراجعه کنید. . .SS "یک ورودی نمونه (A Sample Entry)" . ورودی زیر که یک پایانهٔ استاندارد ANSI\ X3.64- (یا ECMA-48-) (از این پس برای اختصار \*(``استاندارد ANSI\*('') را توصیف می‌کند، نمونه‌ای شاخص از شکل ظاهری معمول یک ورودی .I \%term\%info برای یک پایانهٔ مدرن است. .PP .EX .nf \s-2ansi|ansi/pc\-term compatible with color, am, mc5i, mir, msgr, colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, acsc=+\e020\e,\e021\-\e030.\*^Y0\e333\(ga\e004a\e261f\e370g\e361h\e260 j\e331k\e277l\e332m\e300n\e305o\*~p\e304q\e304r\e304s_t\e303 u\e264v\e301w\e302x\e263y\e363z\e362{\e343|\e330}\e234\*~\e376, bel=\*^G, blink=\eE[5m, bold=\eE[1m, cbt=\eE[Z, clear=\eE[H\eE[J, cr=\*^M, cub=\eE[%p1%dD, cub1=\eE[D, cud=\eE[%p1%dB, cud1=\eE[B, cuf=\eE[%p1%dC, cuf1=\eE[C, cup=\eE[%i%p1%d;%p2%dH, cuu=\eE[%p1%dA, cuu1=\eE[A, dch=\eE[%p1%dP, dch1=\eE[P, dl=\eE[%p1%dM, dl1=\eE[M, ech=\eE[%p1%dX, ed=\eE[J, el=\eE[K, el1=\eE[1K, home=\eE[H, hpa=\eE[%i%p1%dG, ht=\eE[I, hts=\eEH, ich=\eE[%p1%d@, il=\eE[%p1%dL, il1=\eE[L, ind=\*^J, indn=\eE[%p1%dS, invis=\eE[8m, kbs=\*^H, kcbt=\eE[Z, kcub1=\eE[D, kcud1=\eE[B, kcuf1=\eE[C, kcuu1=\eE[A, khome=\eE[H, kich1=\eE[L, mc4=\eE[4i, mc5=\eE[5i, nel=\er\eE[S, op=\eE[39;49m, rep=%p1%c\eE[%p2%{1}%\-%db, rev=\eE[7m, rin=\eE[%p1%dT, rmacs=\eE[10m, rmpch=\eE[10m, rmso=\eE[m, rmul=\eE[m, s0ds=\eE(B, s1ds=\eE)B, s2ds=\eE*B, s3ds=\eE+B, setab=\eE[4%p1%dm, setaf=\eE[3%p1%dm, sgr=\eE[0;10%?%p1%t;7%; %?%p2%t;4%; %?%p3%t;7%; %?%p4%t;5%; %?%p6%t;1%; %?%p7%t;8%; %?%p9%t;11%;m, sgr0=\eE[0;10m, smacs=\eE[11m, smpch=\eE[11m, smso=\eE[7m, smul=\eE[4m, tbc=\eE[3g, u6=\eE[%i%d;%dR, u7=\eE[6n, u8=\eE[?%[;0123456789]c, u9=\eE[c, vpa=\eE[%i%p1%dd, .fi .EE .PP ورودی‌ها می‌توانند با قرار دادن فاصلهٔ خالی در ابتدای هر سطر به جز سطر نخست، در چندین سطر ادامه یابند. توضیحات (کامنت‌ها) را می‌توان در سطرهایی که با \*(``#\*('' آغاز می‌شوند گنجاند. قابلیت‌ها در .I terminfo بر سه نوع هستند: .bP قابلیت‌های بولی که نشان می‌دهند پایانه دارای یک ویژگی به خصوص است، .bP قابلیت‌های عددی که اندازهٔ پایانه یا اندازهٔ تأخیرهای خاص را مشخص می‌کنند، و .bP قابلیت‌های رشته‌ای که توالی‌ای را ارائه می‌دهند که می‌توان برای انجام عملیات به خصوص پایانه از آن استفاده کرد. .SS "انواع قابلیتها (Types of Capabilities)" همهٔ قابلیت‌ها دارای نام هستند. برای نمونه، این واقعیت که پایانه‌های استاندارد ANSI دارای .I "حاشیه‌های خودکار (automatic margins)" (یعنی بازگشت سطر و سطرجدید خودکار با رسیدن به انتهای سطر) هستند، با قابلیت \fBam\fP مشخص می‌شود. از این رو توصیف ansi شامل \fBam\fP است. قابلیت‌های عددی با نویسهٔ \*(``#\*('' و سپس یک مقدار مثبت دنبال می‌شوند. بدین ترتیب، \fBcols\fP که تعداد ستون‌های پایانه را نشان می‌دهد، مقدار \*(``80\*('' را برای ansi مشخص می‌کند. مقادیر قابلیت‌های عددی را می‌توان بر اساس قراردادهای زبان برنامه‌نویسی C به صورت ده‌دهی، هشت‌هشتی، یا شانزده‌شانزدهی (مانند 255، 0377 و 0xff یا 0xFF) مشخص کرد. .PP در نهایت، قابلیت‌های با مقدار رشته‌ای، مانند \fBel\fP (دنبالهٔ پاک‌کردن تا انتهای سطر) با کد دو نویسه‌ای، یک \*(``=\*(''، و سپس رشته‌ای که به کامای بعدی \*(``,\*('' ختم می‌شود، مشخص می‌گردند. .PP تعدادی توالی گریز در قابلیت‌های با مقدار رشته‌ای برای کدگذاری آسان نویسه‌ها در آن ارائه شده است: .bP هر دو مورد \fB\eE\fP و \fB\ee\fP به یک نویسهٔ \s-1ESCAPE\s0 نگاشت می‌شوند، .bP \fB\*^\f(BIx\fR به یک control-\fIx\fP برای هر \fIx\fP مناسب نگاشت می‌شود، و .bP توالی‌های .RS 6 .PP \fB\en\fP، \fB\el\fP، \fB\er\fP، \fB\et\fP، \fB\eb\fP، \fB\ef\fP، و \fB\es\fP .RE .IP تولیدکنندهٔ .RS 6 .PP \fInewline\fP، \fIline-feed\fP، \fIreturn\fP، \fItab\fP، \fIbackspace\fP، \fIform-feed\fP، و \fIspace\fP .RE .IP به ترتیب هستند. .PP استاندارد X/Open Curses مشخص نمی‌کند که \*(``\fIx\fP مناسب\*('' چه چیزی می‌تواند باشد. در عمل، آن یک نویسهٔ گرافیکی اسکی چاپ‌پذیر است. حالت خاص \*(``\*^?\*('' به عنوان DEL (127) تفسیر می‌شود. در تمامی حالات دیگر، مقدار نویسه به صورت منطقی با 0x1f عملیات \*(``and\*('' می‌شود، و به کدهای کنترلی اسکی در محدودهٔ ۰ تا ۳۱ نگاشت می‌گردد. .PP سایر گریزها عبارتند از: .bP \fB\e\*^\fP برای \fB\*^\fP، .bP \fB\e\e\fP برای \fB\e\fP، .bP \fB\e\fP, برای کاما، .bP \fB\e:\fP برای \fB:\fP، .bP و \fB\e0\fP برای تهی (null). .IP \fB\e0\fP مقدار \e200 را تولید می‌کند، که رشته را پایان نمی‌دهد اما در بیشتر پایانه‌ها در صورت مشخص بودن CS7، مانند یک نویسهٔ null رفتار می‌کند. به \fBstty\fP(1) مراجعه کنید. .IP دلیل این رفتار خاص، حفظ سازگاری باینری فایل‌های کامپایل‌شدهٔ terminfo با سایر پیاده‌سازی‌ها است؛ برای نمونه سیستم‌های SVr4 که این مورد را مستند کرده‌اند. فایل‌های کامپایل‌شدهٔ terminfo از رشته‌های با پایان تهی (null-terminated)، بدون طول مشخص استفاده می‌کنند. اصلاح این مورد نیازمند قالب باینری جدیدی بود، که با سایر پیاده‌سازی‌ها کار نمی‌کرد. .PP در نهایت، نویسه‌ها را می‌توان به صورت سه رقم هشت‌هشتی پس از یک \fB\e\fP مشخص کرد. .PP یک تأخیر بر حسب میلی‌ثانیه می‌تواند در هر جای یک قابلیت رشته‌ای، درون براکت‌های $<..> ظاهر شود، مانند \fBel\fP=\eEK$<5>، و نویسه‌های لایی (padding) توسط \fBtputs\fP(3X) برای تأمین این تأخیر فراهم می‌شوند. .bP تأخیر باید عددی با حداکثر یک رقم اعشار باشد؛ ممکن است پسوندهای \*(``*\*('' یا \*(``/\*('' یا هر دو را به دنبال داشته باشد. .bP یک \*(``*\*('' نشان می‌دهد که لایه‌گذاری (padding) مورد نیاز متناسب با تعداد سطرهای تحت تأثیر عملیات است، و مقدار داده‌شده، لایه‌گذاری مورد نیاز به ازای هر واحدِ تحت تأثیر است. (در مورد نویسهٔ درج، این ضریب همچنان تعداد \fIسطرهای\fP تحت تأثیر است.) .IP به طور معمول، اگر دستگاه دارای قابلیت \fBxon\fP باشد، لایه‌گذاری جنبهٔ توصیه‌ای دارد؛ برای محاسبهٔ هزینه استفاده می‌شود اما موجب ایجاد تأخیر نمی‌گردد. .bP یک پسوند \*(``/\*('' نشان می‌دهد که لایه‌گذاری اجباری است و تأخیری به میزان میلی‌ثانیهٔ داده‌شده را تحمیل می‌کند، حتی روی دستگاه‌هایی که \fBxon\fP برای نشان دادن کنترل جریان در آن‌ها وجود دارد. .PP گاهی اوقات باید قابلیت‌های منفرد را به صورت نظر (توضیح) درآورد. برای این کار، یک نقطه پیش از نام قابلیت قرار دهید. برای نمونه، به دومین .B ind در مثال بالا نگاه کنید. .br .ne 5 .SS "واکشی شرحهای کامپایلشده (Fetching Compiled Descriptions)" شرح‌های پایانه در \fI\%ncurses\fP در پایگاه‌های دادهٔ پایانه ذخیره می‌شوند. این پایگاه‌های داده که با نام مسیرشان پیدا می‌شوند، ممکن است به صورت درخت‌های دایرکتوری یا پایگاه‌های دادهٔ درهم‌سازی‌شده (hashed) پیکربندی شده باشند (به \fBterm\fR(5) نگاه کنید)، .PP کتابخانه از فهرستی از نام‌های مسیر که در هنگام کامپایل درون آن تعبیه شده استفاده می‌کند، که می‌توان آن‌ها را توسط متغیرهای محیطی بازنویسی (override) کرد. پیش از آغاز جستجو، \fI\%ncurses\fP فهرست جستجو را بررسی می‌کند، و موارد تکراری و مسیرهایی را که هیچ پایگاه داده پایانه‌ای در آن‌ها یافت نمی‌شود، حذف می‌نماید. کتابخانهٔ \fI\%ncurses\fP نخستین شرحی را که از آزمون‌های سازگاری‌اش با موفقیت بگذرد، می‌خواند. .bP ابتدا متغیر محیطی \fBTERMINFO\fR برای یافتن یک پایگاه داده پایانهٔ حاوی شرح پایانه بررسی می‌شود. .bP سپس، \fI\%ncurses\fP در \fI$HOME/.terminfo\fP به دنبال یک شرح کامپایل‌شده می‌گردد. .IP این یک ویژگی اختیاری است که ممکن است به طور کامل از کتابخانه حذف شده باشد، یا برای جلوگیری از استفادهٔ تصادفی توسط برنامه‌های ممتاز محدود شده باشد. .bP سپس، اگر متغیر محیطی \fI\%TERMINFO_DIRS\fP تنظیم شده باشد، \fI\%ncurses\fP محتوای آن متغیر را به عنوان فهرستی از مسیرهای پایگاه‌های داده پایانه جداشده با دونقطه برای جستجو تفسیر می‌کند. .IP یک نام مسیر خالی (یعنی اگر متغیر با یک دونقطه آغاز شود یا پایان یابد، یا حاوی دونقطه‌های مجاور باشد) به عنوان مکان سیستمی \fI/usr/share/terminfo\fP تفسیر می‌شود. .bP در نهایت، \fI\%ncurses\fP این مکان‌های تعبیه‌شده در زمان کامپایل را جستجو می‌کند: .RS .bP فهرستی از دایرکتوری‌ها (/usr/share/terminfo)، و .bP دایرکتوری سیستمی terminfo، یعنی \fI/usr/share/terminfo\fP .RE .PP متغیر \fBTERMINFO\fR می‌تواند به جای نام مسیر یک پایگاه داده پایانه، مستقیماً حاوی شرح پایانه باشد. اگر این متغیر با \*(``hex:\*('' یا \*(``b64:\*('' آغاز شود، آنگاه \fI\%ncurses\fP شرح پایانه را از داده‌های کدگذاری‌شده با هگزادسیمال یا base64 می‌خواند، و اگر آن شرح با نام مورد نظر مطابقت داشته باشد، از آن استفاده خواهد کرد. این داده‌های کدگذاری‌شده را می‌توان با استفاده از گزینهٔ \*(``\-Q\*('' در \fBtic\fR یا \fBinfocmp\fR تنظیم کرد. .PP مطالب پیشین به پیکربندی معمول \fI\%ncurses\fP مربوط می‌شود، که از شرح‌های پایانهٔ آماده‌شده در قالب \fIterminfo\fP استفاده می‌کند. اگرچه \fItermcap\fP بیانگری کمتری دارد، \fI\%ncurses\fP می‌تواند برای خواندن شرح‌های \fItermcap\fP نیز پیکربندی شود. در آن پیکربندی، این کتابخانه متغیرهای \fI\%TERMCAP\fP و \fI\%TERMPATH\fP را (به ترتیب برای محتوا و مسیر جستجو) پس از پایگاه داده پایانهٔ سیستم بررسی می‌کند. .SS "آمادهسازی شرحها (Preparing Descriptions)" اکنون چگونگی آماده‌سازی شرح‌های پایانه‌ها را به طور خلاصه شرح می‌دهیم. کارآمدترین راه برای آماده‌سازی یک شرح پایانه، تقلید از شرح یک پایانهٔ مشابه در .I terminfo و ساخت تدریجی یک شرح با استفاده از شرح‌های جزئی در کنار .I vi یا برنامه‌ای دیگر از برنامه‌های مبتنی بر صفحه برای بررسی درستی آن‌هاست. آگاه باشید که یک پایانهٔ بسیار نامتعارف ممکن است کمبودهای موجود در توانایی فایل .I terminfo برای توصیف آن، یا اشکالات موجود در کد مدیریت صفحهٔ برنامهٔ آزمایش را آشکار سازد. .PP برای تنظیم دقیق لایه‌گذاری (padding) مربوط به سطر درج (insert line) (اگر سازندهٔ پایانه آن را مستند نکرده باشد)، یک آزمون دشوار این است که فایلی بزرگ را با سرعت ۹۶۰۰ باود ویرایش کنید، حدود ۱۶ سطر را از میانهٔ صفحه حذف کنید، و سپس کلید \*(``u\*('' را چندین بار به سرعت فشار دهید. اگر پایانه به هم ریخت، معمولاً به لایه‌گذاری بیشتری نیاز است. آزمون مشابهی را می‌توان برای نویسهٔ درج (insert character) به کار برد. .SS "قابلیتهای پایهای (Basic Capabilities)" تعداد ستون‌ها در هر سطر برای پایانه با قابلیت عددی \fBcols\fP مشخص می‌شود. اگر پایانه یک \s-1CRT\s0 باشد، آنگاه تعداد سطرهای روی صفحه با قابلیت \fBlines\fP مشخص می‌شود. اگر پایانه با رسیدن به حاشیهٔ راست به آغاز سطر بعدی بپیچد (wrap around)، باید قابلیت \fBam\fP را داشته باشد. اگر پایانه بتواند صفحه‌اش را پاک کند و مکان‌نما را در موقعیت آغازین (home) قرار دهد، این با قابلیت رشته‌ای \fBclear\fP مشخص می‌شود. اگر پایانه روچاپ (overstrike) انجام می‌دهد (به جای پاک کردن یک موقعیت هنگام چاپ روی نویسه) آنگاه باید قابلیت \fBos\fP را داشته باشد. اگر پایانه یک پایانهٔ چاپی بدون واحد تصویر نرم (نمایشگر) باشد، هر دو قابلیت .B hc و .B os را به آن بدهید. .RB ( os برای پایانه‌های صفحه ذخیره‌ساز، مانند سری \s-1TEKTRONIX\s+1 4010، و نیز پایانه‌های نسخهٔ چاپی و APL کاربرد دارد.) اگر کدی برای انتقال مکان‌نما به لبهٔ چپ سطر جاری وجود دارد، آن را به صورت .B cr مشخص کنید. (معمولاً این carriage return، یعنی control/M خواهد بود.) اگر کدی برای تولید هشدار صوتی (زنگ، بوق و غیره) وجود دارد، آن را به صورت .B bel مشخص کنید. .PP اگر کدی برای انتقال مکان‌نما به اندازهٔ یک موقعیت به چپ وجود دارد (مانند پس‌بر یا backspace)، آن قابلیت باید به صورت .B cub1 مشخص شود. به همین ترتیب، کدهای انتقال به راست، بالا و پایین باید به صورت .BR cuf1 ، .BR cuu1 ، و .B cud1 مشخص شوند. این حرکت‌های محلی مکان‌نما نباید متنی را که از روی آن عبور می‌کنند تغییر دهند؛ برای نمونه، معمولاً نباید از \*(``\fBcuf1\fP=\ \*('' استفاده کنید زیرا فاصله، نویسه‌ای را که از روی آن عبور کرده پاک می‌کند. .PP یک نکتهٔ بسیار مهم در اینجا این است که حرکت‌های محلی مکان‌نما که در .I terminfo کدگذاری شده‌اند، در لبه‌های چپ و بالای یک پایانهٔ \s-1CRT\s0 تعریف‌نشده هستند. برنامه‌ها هرگز نباید تلاش کنند که در لبهٔ چپ به عقب برگردند (backspace کنند)، مگر اینکه .B bw داده شده باشد، و هرگز نباید تلاش کنند که به صورت محلی از بالا به بیرون بروند. برای پیمایش متن به سمت بالا، برنامه به گوشهٔ پایین چپ صفحه می‌رود و رشتهٔ .B ind (index) را ارسال می‌کند. .PP برای پیمایش متن به سمت پایین، برنامه به گوشهٔ بالا چپ صفحه می‌رود و رشتهٔ .B ri (reverse index) را ارسال می‌کند. رشته‌های .B ind و .B ri هنگامی که در گوشه‌های مربوط به خود روی صفحه نباشند، تعریف‌نشده هستند. .PP نسخه‌های پارامتردار توالی‌های پیمایش عبارتند از .B indn و .B rin که همان معنای .B ind و .B ri را دارند، با این تفاوت که یک پارامتر دریافت می‌کنند و به همان تعداد سطر پیمایش انجام می‌دهند. این‌ها نیز به جز در لبهٔ مناسب صفحه تعریف‌نشده هستند. .PP قابلیت \fBam\fP مشخص می‌کند که آیا هنگام خروج متن، مکان‌نما در لبهٔ راست صفحه متوقف می‌شود یا خیر، اما این امر لزوماً برای یک .B cuf1 از ستون آخر صدق نمی‌کند. تنها حرکت محلی که از لبهٔ چپ تعریف شده این است که اگر .B bw داده شده باشد، آنگاه یک .B cub1 از لبهٔ چپ به لبهٔ راست سطر پیشین منتقل خواهد شد. اگر .B bw داده نشده باشد، اثر آن تعریف‌نشده است. این برای نمونه برای رسم یک جعبه به دور لبهٔ صفحه مفید است. اگر پایانه دارای حاشیه‌های خودکار قابل انتخاب با سوییچ باشد، فایل .I terminfo معمولاً فرض می‌کند که این ویژگی روشن است؛ یعنی \fBam\fP. اگر پایانه دستوری دارد که به ستون نخست سطر بعدی می‌رود، آن دستور را می‌توان به صورت .B nel (newline) مشخص کرد. مهم نیست که آیا دستور بقیهٔ سطر جاری را پاک می‌کند یا خیر، بنابراین اگر پایانه فاقد .B cr و .B lf باشد، ممکن است همچنان بتوان یک .B nel کارآمد را از یکی از آن‌ها یا هر دو ساخت. .PP این قابلیت‌ها برای توصیف پایانه‌های نسخهٔ چاپی و \*(``glass-tty\*('' کفایت می‌کنند. بدین ترتیب تله‌تایپ مدل ۳۳ به صورت زیر توصیف می‌شود: .PP .EX .\".in -2 \s-133\||\|tty33\||\|tty\||\|model 33 teletype, bel=\*^G, cols#72, cr=\*^M, cud1=\*^J, hc, ind=\*^J, os,\s+1 .\".in +2 .EE .PP در حالی که Lear Siegler \s-1ADM-3\s0 به این صورت توصیف می‌شود: .PP .EX .nf .\".in -2 \s-1adm3\||\|3\||\|lsi adm3, am, bel=\*^G, clear=\*^Z, cols#80, cr=\*^M, cub1=\*^H, cud1=\*^J, ind=\*^J, lines#24,\s+1 .\".in +2 .fi .EE .SS "رشتههای پارامتردار (Parameterized Strings)" آدرس‌دهی مکان‌نما و سایر رشته‌های نیازمند پارامتر در پایانه توسط یک قابلیت رشته‌ای پارامتردار توصیف می‌شوند، همراه با گریزهای شبه-\fIprintf\fP مانند \fI%x\fP در آن. برای نمونه، برای آدرس‌دهی مکان‌نما، قابلیت .B cup با استفاده از دو پارامتر مشخص می‌شود: سطر و ستونی که باید به آن آدرس‌دهی شود. (سطرها و ستون‌ها از صفر شماره‌گذاری می‌شوند و به صفحهٔ فیزیکی قابل مشاهده توسط کاربر اشاره دارند، نه به هرگونه حافظهٔ نادیدنی.) اگر پایانه دارای آدرس‌دهی مکان‌نمای نسبی نسبت به حافظه باشد، می‌توان آن را با .BR mrcup نشان داد. .PP سازوکار پارامتر از یک پشته و کدهای ویژهٔ \fB%\fP برای دستکاری آن استفاده می‌کند. به طور معمول یک توالی یکی از پارامترها را روی پشته می‌گذارد (push می‌کند) و سپس آن را در قالبی چاپ می‌کند. چاپ کردن (مانند \*(``%d\*('') یک حالت خاص است. سایر عملیات، از جمله \*(``%t\*('' عملوند خود را از پشته برمی‌دارند (pop می‌کنند). باید توجه داشت که اغلب عملیات پیچیده‌تری لازم است، برای نمونه در رشتهٔ \fBsgr\fP. .PP کدگذاری‌های \fB%\fP معانی زیر را دارند: .TP 5 \fB%%\fP خروجی دادن \*(``%\*('' .TP \fB%\fI[[\fR:\fI]flags][width[.precision]][\fBdoxXs\fI]\fR مانند \fBprintf\fP(3)، پرچم‌ها عبارتند از \fI[\-+#]\fP و \fIفاصله\fP. از یک \*(``:\*('' برای مجاز کردن نویسهٔ بعدی به عنوان پرچم \*(``\-\*('' استفاده کنید، تا از تفسیر \*(``%\-\*('' به عنوان یک عملگر جلوگیری شود. .TP \fB%c\fP چاپ \fIpop()\fP مانند %c در \fBprintf\fP .TP \fB%s\fP چاپ \fIpop()\fP مانند %s در \fBprintf\fP .TP \fB%p\fI[1\-9]\fR قرار دادن (push) پارامتر \fIi\fPام در پشته .TP \fB%P\fI[a\-z]\fR تنظیم متغیر پویای \fI[a\-z]\fP با مقدار \fIpop()\fP .TP \fB%g\fI[a\-z]\fR دریافت متغیر پویای \fI[a\-z]\fP و قرار دادن آن در پشته .TP \fB%P\fI[A\-Z]\fR تنظیم متغیر ایستای \fI[a\-z]\fP با مقدار \fIpop()\fP .TP \fB%g\fI[A\-Z]\fR دریافت متغیر ایستای \fI[a\-z]\fP و قرار دادن آن در پشته .IP اصطلاحات \*(``ایستا\*('' (static) و \*(``پویا\*('' (dynamic) گمراه‌کننده هستند. از نظر تاریخی، این‌ها صرفاً دو مجموعهٔ متفاوت از متغیرها هستند، که مقادیر آن‌ها بین فراخوانی‌های \fBtparm\fP(3X) بازنشانی نمی‌شود. با این حال، این واقعیت در سایر پیاده‌سازی‌ها مستند نشده است. تکیه بر آن تأثیر منفی بر سازگاری با سایر پیاده‌سازی‌ها خواهد گذاشت: .RS .bP کتابخانهٔ SVr2 curses از متغیرهای \fIپویا\fP پشتیبانی می‌کرد. آن‌ها فقط توسط عملگر \fB%P\fP تنظیم می‌شوند. یک \fB%g\fP برای متغیری مشخص بدون تنظیم اولیهٔ آن با \fB%P\fP نتایج غیرقابل پیش‌بینی خواهد داد، زیرا متغیرهای پویا یک آرایهٔ محلی مقداردهی‌نشده روی پشته در تابع \fBtparm\fP هستند. .bP کتابخانهٔ SVr3.2 curses از متغیرهای \fIایستا\fP پشتیبانی می‌کرد. آن‌ها یک آرایه در ساختار \fI\%TERMINAL\fP (تعریف‌شده در \fBterm.h\fP) هستند، و هنگامی که تابع \fBsetupterm\fP داده‌ها را تخصیص می‌دهد به طور خودکار صفر می‌شوند. .bP کتابخانهٔ SVr4 curses هیچ بهبود دیگری در ویژگی متغیرهای \fIپویا/ایستا\fP ایجاد نکرد. .bP کتابخانهٔ Solaris XPG4 curses تفاوتی میان متغیرهای \fIپویا\fP و \fIایستا\fP قائل نمی‌شود. آن‌ها یکی هستند. همانند SVr4 curses، استاندارد XPG4 curses این‌ها را به طور صریح مقداردهی اولیه نمی‌کند. .bP پیش از نسخهٔ 6.3، \fI\%ncurses\fP هم متغیرهای \fIپویا\fP و هم \fIایستا\fP را در حافظهٔ پایدار ذخیره می‌کرد که با صفر مقداردهی اولیه می‌شدند. .bP با آغاز نسخهٔ 6.3، \fI\%ncurses\fP متغیرهای \fIایستا\fP و \fIپویا\fP را به همان شیوهٔ SVr4 ذخیره می‌کند. .RS .bP برخلاف سایر پیاده‌سازی‌ها، \fI\%ncurses\fP متغیرهای پویا را پیش از نخستین عملگر \fB%g\fP یا \fB%P\fP صفر می‌کند. .bP مانند SVr2، حوزهٔ (scope) متغیرهای پویا در \fI\%ncurses\fP درون فراخوانی جاری به \fBtparm\fP است. اگر حافظهٔ پایدار مورد نیاز است از متغیرهای ایستا استفاده کنید. .RE .RE .TP \fB%\*'\fIc\fB\*'\fR ثابت نویسه‌ای \fIc\fP .TP \fB%{\fInn\fB}\fR ثابت عدد صحیح \fInn\fP .TP \fB%l\fP قرار دادن strlen(pop) در پشته .TP \fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP محاسبات ریاضی (%m همان \fImod\fP است): \fIpush(pop() op pop())\fP .TP \fB%&\fP, \fB%|\fP, \fB%\*^\fP عملیات بیتی (\*(``and\*(''، \*(``or\*('' و \*(``or\*('' مانعةالجمع [xor]): \fIpush(pop() op pop())\fP .TP \fB%=\fP, \fB%>\fP, \fB%<\fP عملیات منطقی: \fIpush(pop() op pop())\fP .TP \fB%A\fP, \fB%O\fP عملیات منطقی \*(``and\*('' و \*(``or\*('' (برای شرط‌ها) .TP \fB%!\fP, \fB%\*~\fP عملیات یگانی (متمم منطقی و بیتی): \fIpush(op pop())\fP .TP \fB%i\fP افزودن ۱ به دو پارامتر نخست (برای پایانه‌های ANSI) .TP \fB%?\fP \fIexpr\fP \fB%t\fP \fIthenpart\fP \fB%e\fP \fIelsepart\fP \fB%;\fP این ساختار یک if-then-else تشکیل می‌دهد. بخش \fB%e\fP \fIelsepart\fP اختیاری است. معمولاً بخش \fB%?\fP \fIexpr\fP مقداری را روی پشته می‌گذارد، و \fB%t\fP آن را از پشته برمی‌دارد و بررسی می‌کند که آیا غیرصفر (درست) است یا خیر. اگر صفر (نادرست) باشد، کنترل به بخش \fB%e\fP (else) منتقل می‌شود. .IP امکان تشکیل else-ifها به سبک Algol 68 وجود دارد: .RS \fB%?\fP c\d1\u \fB%t\fP b\d1\u \fB%e\fP c\d2\u \fB%t\fP b\d2\u \fB%e\fP c\d3\u \fB%t\fP b\d3\u \fB%e\fP c\d4\u \fB%t\fP b\d4\u \fB%e\fP \fB%;\fP .RE .IP که در آن c\di\u شرط‌ها و b\di\u بدنه‌ها هستند. .IP از گزینهٔ \fB\-f\fP در \fBtic\fR یا \fBinfocmp\fR برای دیدن ساختار if-then-elseها استفاده کنید. برخی رشته‌ها، برای نمونه \fBsgr\fP هنگامی که در یک سطر نوشته شوند می‌توانند بسیار پیچیده باشند. گزینهٔ \fB\-f\fP رشته را به چندین سطر می‌شکند و بخش‌های آن را با تورفتگی مرتب می‌کند. .PP عملیات دوتایی به صورت پسوندی (postfix) همراه با عملوندها به ترتیب معمول هستند. به این معنا که برای به دست آوردن x\-5 باید از \*(``%gx%{5}%\-\*('' استفاده کرد. متغیرهای \fB%P\fP و \fB%g\fP در بین ارزیابی‌های رشته‌های گریز پایدار هستند. .PP پایانهٔ HP2645 را در نظر بگیرید که برای رفتن به سطر ۳ و ستون ۱۲، نیاز است که \eE&a12c03Y همراه با ۶ میلی‌ثانیه لایه‌گذاری برای آن ارسال شود. ترتیب سطرها و ستون‌ها در اینجا معکوس است، و سطر و ستون به صورت دو رقم چاپ می‌شوند. شرح پایانهٔ مربوطه به این صورت بیان می‌شود: .RS cup=\eE&a%p2%dc%p1%dY$<6>, .RE .PP پایانهٔ Microterm \s-1ACT-IV\s0 نیازمند ارسال سطر و ستون جاری با پیشوند یک \fB\*^T\fP است، در حالی که سطر و ستون صرفاً به صورت باینری کدگذاری شده‌اند: .RS cup=\*^T%p1%c%p2%c .RE .PP پایانه‌هایی که از \*(``%c\*('' استفاده می‌کنند باید بتوانند مکان‌نما را به عقب ببرند (\fBcub1\fP)، و مکان‌نما را یک سطر روی صفحه به بالا ببرند (\fBcuu1\fP). این امر ضروری است زیرا ارسال \fB\en\fP، \fB\*^D\fP و \fB\er\fP همیشه ایمن نیست، چرا که سیستم ممکن است آن‌ها را تغییر دهد یا نادیده بگیرد. (روال‌های کتابخانه که با terminfo سروکار دارند حالت‌های tty را به گونه‌ای تنظیم می‌کنند که تب‌ها هرگز بسط نیابند، بنابراین ارسال \et ایمن است. مشخص شده است که این مورد برای Ann Arbor 4080 حیاتی است.) .PP مثال پایانی LSI ADM-3A است، که از سطر و ستونی با آفستِ یک فاصله استفاده می‌کند، بدین ترتیب: .RS .EX cup=\eE=%p1%\*' \*'%+%c%p2%\*' \*'%+%c .EE .RE .PP پس از ارسال \*(``\eE=\*(''، این عبارت پارامتر اول را در پشته قرار می‌دهد، مقدار اسکی فاصله (32) را در پشته می‌گذارد، آن‌ها را جمع می‌کند (حاصل‌جمع را به جای دو مقدار پیشین در پشته قرار می‌دهد) و آن مقدار را به صورت یک نویسه خروجی می‌دهد. سپس همین کار برای پارامتر دوم انجام می‌شود. محاسبات ریاضی پیچیده‌تر با استفاده از پشته امکان‌پذیر است. .SS "حرکات مکاننما (Cursor Motions)" اگر پایانه روشی سریع برای بردن مکان‌نما به موقعیت آغازین (home) دارد (به بالاترین گوشهٔ سمت چپ صفحه)، آنگاه می‌توان این را با \fBhome\fP مشخص کرد؛ به همین ترتیب یک راه سریع برای رسیدن به گوشهٔ پایین سمت چپ را می‌توان به صورت \fBll\fP تعیین نمود؛ این ممکن است شامل بالا رفتن با \fBcuu1\fP از موقعیت آغازین باشد، اما برنامه هرگز نباید خودش این کار را انجام دهد (مگر اینکه \fBll\fP این کار را انجام دهد) چرا که نمی‌تواند هیچ فرضی دربارهٔ اثر بالا رفتن از موقعیت آغازین داشته باشد. توجه داشته باشید که موقعیت آغازین (home) همان آدرس‌دهی به (0,0) است: به گوشهٔ بالا چپ صفحه، نه حافظه. (بنابراین، توالی \eEH در پایانه‌های HP را نمی‌توان برای .B home به کار برد.) .PP اگر پایانه دارای آدرس‌دهی مطلق سطر یا ستون مکان‌نما باشد، می‌توان آن‌ها را به صورت قابلیت‌های تک‌پارامتری .B hpa (موقعیت افقی مطلق یا horizontal position absolute) و .B vpa (موقعیت عمودی مطلق یا vertical position absolute) مشخص کرد. گاهی این موارد کوتاه‌تر از توالی عمومی‌تر دوپارامتری هستند (مانند hp2645) و می‌توان آن‌ها را ترجیحاً به جای .B cup به کار برد. اگر حرکت‌های محلی پارامتردار وجود دارند (مانند حرکت به اندازهٔ .I n فاصله به راست)، می‌توان آن‌ها را با .BR cud ، .BR cub ، .BR cuf ، و .B cuu با یک پارامتر منفرد که نشان‌دهندهٔ تعداد فاصله‌ها برای حرکت است مشخص کرد. این‌ها در درجهٔ نخست زمانی مفید هستند که پایانه فاقد .B cup باشد، مانند \s-1TEKTRONIX\s+1 4025. .PP اگر پایانه هنگام اجرای برنامه‌ای که از این قابلیت‌ها استفاده می‌کند نیاز به قرار گرفتن در یک حالت خاص دارد، کدهای ورود و خروج از این حالت را می‌توان به صورت \fBsmcup\fP و \fBrmcup\fP تعیین کرد. این موضوع برای نمونه در پایانه‌هایی مانند Concept با بیش از یک صفحه حافظه پیش می‌آید. اگر پایانه تنها دارای آدرس‌دهی مکان‌نما نسبت به حافظه باشد و نه آدرس‌دهی نسبت به صفحه، باید پنجره‌ای به اندازهٔ یک صفحه در پایانه ثابت شود تا آدرس‌دهی مکان‌نما به درستی کار کند. این مورد برای \s-1TEKTRONIX\s+1 4025 نیز استفاده می‌شود، که در آن .B smcup نویسهٔ فرمان را روی نویسهٔ مورد استفادهٔ terminfo تنظیم می‌کند. اگر توالی \fBsmcup\fP صفحه را پس از خروجی دادن توالی \fBrmcup\fP به حالت پیشین بازنگرداند (به حالت پیش از خروجی دادن \fBrmcup\fP)، \fBnrrmc\fP را مشخص کنید. .SS "حاشیهها (Margins)" SVr4 (و X/Open Curses) چندین قابلیت رشته‌ای را برای تنظیم حاشیه‌ها فهرست می‌کنند. دو مورد برای استفاده با پایانه‌ها، و شش مورد دیگر برای استفاده با چاپگرها در نظر گرفته شده بودند. .bP دو قابلیت پایانه فرض می‌کنند که پایانه ممکن است قابلیت تنظیم حاشیهٔ چپ و/یا راست در موقعیت فعلی ستون مکان‌نما را داشته باشد. .bP قابلیت‌های چاپگر فرض می‌کنند که چاپگر ممکن است دو نوع قابلیت داشته باشد: .RS .bP توانایی تنظیم حاشیهٔ بالا و/یا پایین با استفاده از موقعیت فعلی سطر، و .bP قابلیت‌های پارامتردار برای تنظیم حاشیه‌های بالا، پایین، چپ و راست با توجه به تعداد خطوط یا ستون‌ها. .RE .PP در عمل، دسته‌بندی به \*(``پایانه\*('' و \*(``چاپگر\*('' مناسب نیست: .bP پایگاه دادهٔ پایانهٔ AT&T SVr4 چهار بار از \fBsmgl\fP برای سخت‌افزار AT&T استفاده می‌کند. .IP سه مورد از این چهار مورد، چاپگر هستند. آن‌ها فاقد توانایی تنظیم حاشیه‌های چپ/راست با مشخص کردن ستون هستند. .bP سایر پایانه‌ها (غیر AT&T) ممکن است از حاشیه‌ها پشتیبانی کنند اما با فرضیاتی متفاوت از AT&T. .IP به عنوان نمونه، DEC VT420 از حاشیه‌های چپ/راست پشتیبانی می‌کند، اما تنها با استفاده از پارامتر ستون. به عنوان یک پیچیدگی اضافه، VT420 از دو تنظیم برای فعال‌سازی کامل حاشیه‌های چپ/راست استفاده می‌کند (حالت حاشیهٔ چپ/راست، و حالت مبدأ). مورد اول حاشیه‌ها را فعال می‌کند، که باعث می‌شود متن چاپ‌شده درون حاشیه‌ها شکسته شود، اما مورد دوم برای جلوگیری از آدرس‌دهی مکان‌نما در خارج از آن حاشیه‌ها مورد نیاز است. .bP هر دو حاشیهٔ چپ/راست DEC VT420 با یک توالی کنترلی واحد تنظیم می‌شوند. اگر هر یک حذف شود، حاشیهٔ مربوطه روی لبهٔ چپ یا راست صفحهٔ نمایش تنظیم می‌شود (به‌جای دست‌نخورده گذاشتن حاشیه). .PP این‌ها قابلیت‌های مربوط به حاشیه هستند: .PP .TS center; Lb Lb Lb L . نام توضیحات _ smgl تنظیم حاشیهٔ چپ در ستون فعلی smgr تنظیم حاشیهٔ راست در ستون فعلی smgb تنظیم حاشیهٔ پایین در سطر فعلی smgt تنظیم حاشیهٔ بالا در سطر فعلی smgbp تنظیم حاشیهٔ پایین در سطر \fIN\fP smglp تنظیم حاشیهٔ چپ در ستون \fIN\fP smgrp تنظیم حاشیهٔ راست در ستون \fIN\fP smgtp تنظیم حاشیهٔ بالا در سطر \fIN\fP smglr تنظیم هر دو حاشیهٔ چپ و راست به \fIL\fP و \fIR\fP smgtb تنظیم هر دو حاشیهٔ بالا و پایین به \fIT\fP و \fIB\fP .TE .PP هنگام نوشتن برنامه‌ای که از این قابلیت‌های رشته‌ای استفاده می‌کند، ابتدا باید جفت‌ها بررسی شوند تا مشخص گردد آیا هر دو قابلیت در جفت تنظیم شده‌اند یا تنها یکی از آن‌ها تنظیم شده است: .bP اگر هر دو قابلیت \fBsmglp\fP و \fBsmgrp\fP تنظیم شده باشند، هر یک با یک آرگومان منفرد، \fIN\fP، استفاده می‌شوند که به ترتیب شمارهٔ ستون حاشیهٔ چپ و راست را مشخص می‌کند. .bP اگر هر دو قابلیت \fBsmgtp\fP و \fBsmgbp\fP تنظیم شده باشند، هر یک به ترتیب برای تنظیم حاشیهٔ بالا و پایین استفاده می‌شوند: .RS 4 .bP \fBsmgtp\fP با یک آرگومان منفرد، \fIN\fP، یعنی شمارهٔ سطر حاشیهٔ بالا استفاده می‌شود. .bP \fBsmgbp\fP با دو آرگومان، \fIN\fP و \fIM\fP، استفاده می‌شود که شمارهٔ سطر حاشیهٔ پایین را مشخص می‌کنند؛ اولی با شمارش از بالای صفحه و دومی با شمارش از پایین. این کار با دو شیوهٔ تعیین حاشیهٔ پایین در چاپگرهای سازندگان مختلف سازگار است. .RE .IP هنگام طراحی یک ورودی terminfo برای چاپگری که حاشیهٔ پایین قابل تنظیم دارد، بسته به چاپگر، فقط باید از آرگومان اول یا دوم استفاده شود. هنگام توسعهٔ برنامه‌ای که از \fBsmgbp\fP برای تنظیم حاشیهٔ پایین استفاده می‌کند، باید هر دو آرگومان داده شوند. .PP برعکس، زمانی که تنها یک قابلیت در جفت تنظیم شده باشد: .bP اگر تنها یکی از \fBsmglp\fP و \fBsmgrp\fP تنظیم شده باشد، آنگاه با دو آرگومان استفاده می‌شود: شمارهٔ ستون حاشیه‌های چپ و راست، به همان ترتیب. .bP به همین ترتیب، اگر تنها یکی از \fBsmgtp\fP و \fBsmgbp\fP تنظیم شده باشد، آنگاه با دو آرگومان استفاده می‌شود که حاشیه‌های بالا و پایین را، به همان ترتیب، با شمارش از بالای صفحه مشخص می‌کنند. .IP هنگام طراحی یک ورودی terminfo برای چاپگری که نیازمند تنظیم هم‌زمان حاشیه‌های چپ و راست یا بالا و پایین است، تنها یک قابلیت در جفت‌های \fBsmglp\fP و \fBsmgrp\fP یا \fBsmgtp\fP و \fBsmgbp\fP باید تعریف شود، و دیگری تعریف‌نشده باقی بماند. .PP به جز برای توصیف‌های بسیار قدیمی پایانه، مانند مواردی که برای SVr4 توسعه یافته‌اند، طرحی که بیان شد باید منسوخ تلقی شود. مجموعهٔ بهبودیافته‌ای از قابلیت‌ها در اواخر نسخه‌های SVr4 افزوده شد (\fBsmglr\fP و \fBsmgtb\fP)، که صریحاً از دو پارامتر برای تنظیم حاشیه‌های چپ/راست یا بالا/پایین استفاده می‌کنند. .PP هنگام تنظیم حاشیه‌ها، مقادیر سطر و ستون مبنای صفر دارند. .PP قابلیت رشته‌ای \fBmgc\fP باید تعریف شود. برنامه‌هایی مانند \fBtabs\fP(1) برای بازنشانی تمام حاشیه‌ها به این تکیه می‌کنند. .\" .SS "پاککردن نواحی (Area Clears)" اگر پایانه بتواند از موقعیت فعلی تا انتهای سطر را پاک کند، در حالی که مکان‌نما را در جای خود باقی می‌گذارد، این باید به صورت \fBel\fP داده شود. اگر پایانه بتواند از ابتدای سطر تا موقعیت فعلی (شامل خود آن) را پاک کند، در حالی که مکان‌نما را در جای خود باقی می‌گذارد، این باید به صورت \fBel1\fP داده شود. اگر پایانه بتواند از موقعیت فعلی تا انتهای صفحهٔ نمایش را پاک کند، آنگاه این باید به صورت \fBed\fP داده شود. \fBEd\fP تنها از ستون اول یک سطر تعریف می‌شود. (بنابراین، در صورتی که یک .B ed واقعی در دسترس نباشد، می‌تواند با درخواستی برای حذف تعداد زیادی خط شبیه‌سازی شود.) .\" .SS "درج/حذف خط و حرکات عمودی (Insert/Delete Line and Vertical Motions)" اگر پایانه بتواند یک خط خالی جدید پیش از خطی که مکان‌نما در آن قرار دارد باز کند، این باید به صورت \fBil1\fP داده شود؛ این کار تنها از موقعیت نخست یک خط انجام می‌شود. سپس مکان‌نما باید در خط خالی جدید ظاهر شود. اگر پایانه بتواند خطی را که مکان‌نما در آن قرار دارد حذف کند، آنگاه این باید به صورت \fBdl1\fP داده شود؛ این کار تنها از نخستین موقعیت در خطی که باید حذف شود انجام می‌پذیرد. نسخه‌هایی از .B il1 و .B dl1 که یک پارامتر منفرد می‌گیرند و به همان تعداد خط درج یا حذف می‌کنند را می‌توان به صورت .B il و .BR dl مشخص کرد. .PP اگر پایانه دارای یک ناحیهٔ پیمایش قابل تنظیم باشد (مانند vt100) دستور تنظیم آن را می‌توان با قابلیت .B csr توصیف کرد، که دو پارامتر می‌گیرد: خطوط بالا و پایین ناحیهٔ پیمایش. متأسفانه، موقعیت مکان‌نما پس از استفاده از این دستور تعریف‌نشده است. .PP می‌توان اثر درج یا حذف خط را با استفاده از .B csr بر روی یک ناحیهٔ به‌درستی انتخاب‌شده به دست آورد؛ دستورهای .B sc و .B rc (ذخیره و بازیابی مکان‌نما) ممکن است برای اطمینان از اینکه رشتهٔ درج/حذف ترکیبی شما مکان‌نما را جابه‌جا نمی‌کند مفید باشند. (توجه داشته باشید که کتابخانهٔ \fB\%ncurses\fP(3X) این ترکیب را به‌طور خودکار انجام می‌دهد، بنابراین نیازی نیست برای یک ورودی دارای \fBcsr\fP رشته‌های درج/حذف بسازید). .PP روش دیگر برای ساخت درج و حذف ممکن است استفاده از ترکیبی از نمایه (index) با ویژگی قفل حافظه موجود در برخی پایانه‌ها باشد (مانند سری HP-700/90، که البته دارای درج/حذف نیز هستند). .PP درج خطوط در بالا یا پایین صفحه را نیز می‌توان در بسیاری از پایانه‌ها بدون درج/حذف خط واقعی، با استفاده از .B ri یا .B ind انجام داد، و اغلب حتی در پایانه‌های دارای آن ویژگی‌ها سریع‌تر است. .PP قابلیت بولی \fBnon_dest_scroll_region\fP در صورتی باید تنظیم شود که هر پنجرهٔ پیمایش در واقع یک درگاه دید (view port) بر روی یک بوم (canvas) به اندازهٔ صفحه باشد. برای آزمودن این قابلیت، یک ناحیهٔ پیمایش در وسط صفحه ایجاد کنید، مطلبی در خط پایین بنویسید، مکان‌نما را به بالای ناحیه ببرید، و \fBri\fP و به دنبال آن \fBdl1\fP یا \fBind\fP را اجرا کنید. اگر داده‌هایی که توسط \fBri\fP از پایین ناحیه به بیرون پیمایش شده بودند دوباره ظاهر شوند، پیمایش غیرمخرب است. System V و X/Open Curses انتظار دارند که \fBind\fP، \fBri\fP، \fBindn\fP و \fBrin\fP پیمایش مخرب را شبیه‌سازی کنند؛ مستندات آن‌ها هشدار می‌دهند که \fBcsr\fP را تعریف نکنید مگر اینکه این موضوع درست باشد. این پیاده‌سازی \fBcurses\fP انعطاف‌پذیرتر است و در صورت تعریف بودن \fBndsrc\fP پس از پیمایش پاک‌کردن‌های صریح را انجام می‌دهد. .PP اگر پایانه توانایی تعریف یک پنجره به عنوان بخشی از حافظه را داشته باشد، که همهٔ دستورها بر آن اثر بگذارند، باید به عنوان رشتهٔ پارامتردار .BR wind مشخص شود. چهار پارامتر به ترتیب عبارتند از: خطوط آغازین و پایانی در حافظه و ستون‌های آغازین و پایانی در حافظه. .PP اگر پایانه بتواند حافظهٔ نمایش را در بالا نگه دارد، آنگاه قابلیت \fBda\fP باید مشخص شود؛ اگر حافظهٔ نمایش را بتوان در پایین نگه داشت، آنگاه \fBdb\fP باید داده شود. این‌ها نشان می‌دهند که حذف یک خط یا پیمایش ممکن است خطوط غیرخالی را از پایین به بالا بیاورد یا اینکه پیمایش به عقب با \fBri\fP ممکن است خطوط غیرخالی را به پایین بیاورد. .SS "درج/حذف نویسه (Insert/Delete Character)" در رابطه با درج/حذف نویسه، دو نوع اصلی پایانهٔ هوشمند وجود دارد که می‌توان با استفاده از .IR terminfo توصیف کرد. رایج‌ترین عملیات درج/حذف نویسه تنها بر نویسه‌های روی خط فعلی اثر می‌گذارند و نویسه‌ها را به طور صلب به بیرون از انتهای خط شیفت می‌دهند. پایانه‌های دیگر، مانند Concept 100 و Perkin Elmer Owl، میان فاصله‌های تایپ‌شده و تایپ‌نشده بر روی صفحه تمایز قائل می‌شوند، و هنگام یک درج یا حذف تنها تا یک فاصلهٔ تایپ‌نشده بر روی صفحه شیفت می‌دهند که یا حذف می‌شود یا به دو فاصلهٔ تایپ‌نشده گسترش می‌یابد. .PP می‌توانید نوع پایانهٔ خود را با پاک کردن صفحه و سپس تایپ کردن متن جداشده با حرکات مکان‌نما مشخص کنید. عبارت \*(``abc\ \ \ \ def\*('' را با استفاده از حرکات محلی مکان‌نما (نه فاصله‌ها) میان \*(``abc\*('' و \*(``def\*('' تایپ کنید. سپس مکان‌نما را پیش از \*(``abc\*('' قرار دهید و پایانه را در حالت درج بگذارید. اگر تایپ کردن نویسه‌ها باعث شود بقیهٔ خط به طور صلب شیفت یابد و نویسه‌ها از انتها بیرون بیفتند، پایانهٔ شما میان فاصله‌ها و موقعیت‌های تایپ‌نشده تفاوتی قائل نمی‌شود. اگر با انجام درج، \*(``abc\*('' به سمت \*(``def\*('' شیفت یابد و سپس هر دو با هم دور انتهای خط فعلی بچرخند و به خط بعدی بروند، شما نوع دوم پایانه را دارید، و باید قابلیت \fBin\fP را مشخص کنید که مخفف \*(``insert null\*('' (درج تهی) است. .PP در حالی که این‌ها دو ویژگی از نظر منطقی جداگانه هستند (حالت درج تک‌خطی در برابر چندخطی، و رفتار ویژه با فاصله‌های تایپ‌نشده)، ما هیچ پایانه‌ای ندیده‌ایم که حالت درج آن نتواند با این ویژگی منفرد توصیف شود. .PP پایگاه دادهٔ Terminfo می‌تواند هم پایانه‌هایی که دارای حالت درج هستند و هم پایانه‌هایی که یک توالی ساده برای باز کردن موقعیت خالی در خط فعلی ارسال می‌کنند را توصیف کند. توالی ورود به حالت درج را به عنوان \fBsmir\fP مشخص کنید. توالی خروج از حالت درج را به عنوان \fBrmir\fP مشخص کنید. اکنون هر توالی لازم برای ارسال درست پیش از ارسال نویسه‌ای که باید درج شود را به عنوان \fBich1\fP مشخص کنید. بیشتر پایانه‌های دارای حالت درج واقعی، \fBich1\fP را مشخص نخواهند کرد؛ پایانه‌هایی که توالی‌ای برای باز کردن یک موقعیت در صفحه ارسال می‌کنند باید آن را در اینجا مشخص نمایند. .PP اگر پایانهٔ شما هر دو را دارد، حالت درج معمولاً به \fBich1\fP ترجیح داده می‌شود. از نظر فنی، نباید هر دو را مشخص کنید مگر اینکه پایانه واقعاً نیاز داشته باشد که هر دو به صورت ترکیبی استفاده شوند. بر این اساس، برخی از برنامه‌های غیر curses در صورت وجود هر دو دچار سردرگمی می‌شوند؛ نشانهٔ آن تکرار مضاعف نویسه‌ها در یک به‌روزرسانی با استفاده از درج است. این الزام اکنون نادر است؛ بیشتر توالی‌های \fBich\fP به smir قبلی نیاز ندارند، و بیشتر حالت‌های درج smir به \fBich1\fP پیش از هر نویسه نیازی ندارند. بنابراین، \fBcurses\fP جدید در واقع فرض می‌کند که وضعیت چنین است و بسته به مورد از \fBrmir\fP/\fBsmir\fP یا \fBich\fP/\fBich1\fP استفاده می‌کند (اما نه از هر دو). اگر ناچارید برای پایانه‌ای به اندازهٔ کافی قدیمی که به هر دو نیاز دارد، ورودی‌ای بنویسید که تحت curses جدید استفاده شود، توالی‌های \fBrmir\fP/\fBsmir\fP را در \fBich1\fP بگنجانید. .PP اگر به فاصله‌گذاری پس از درج (post insert padding) نیاز است، آن را به عنوان تعداد میلی‌ثانیه‌ها در \fBip\fP (یک گزینهٔ رشته‌ای) مشخص کنید. هر توالی دیگری که ممکن است لازم باشد پس از درج یک نویسهٔ منفرد ارسال شود را نیز می‌توان در \fBip\fP مشخص کرد. اگر پایانهٔ شما هم نیازمند قرار گرفتن در یک \*(``حالت درج\*('' است و هم یک کد ویژه پیش از هر نویسهٔ درج‌شده، آنگاه هر دو .BR smir / rmir و .B ich1 را می‌توان ارائه داد، و هر دو استفاده خواهند شد. قابلیت .B ich با یک پارامتر، .IR n ، اثرات .B ich1 را .I n بار تکرار خواهد کرد. .PP اگر بین نویسه‌های تایپ‌شده در حالی که در حالت درج نیستید فاصله‌گذاری لازم است، این را به عنوان تعداد میلی‌ثانیه‌ها فاصله‌گذاری در \fBrmp\fP مشخص کنید. .PP گاهی لازم است در حین حضور در حالت درج جابه‌جا شوید تا نویسه‌ها را روی همان خط حذف کنید (برای نمونه، اگر یک تب پس از موقعیت درج وجود داشته باشد). اگر پایانهٔ شما اجازهٔ حرکت در حین حضور در حالت درج را می‌دهد، می‌توانید قابلیت \fBmir\fP را برای سرعت بخشیدن به درج در این حالت مشخص کنید. حذف \fBmir\fP تنها بر سرعت اثر می‌گذارد. برخی پایانه‌ها (به‌ویژه پایانه‌های Datamedia) نباید به دلیل نحوهٔ کارکرد حالت درجشان \fBmir\fP داشته باشند. .PP در نهایت، می‌توانید .B dch1 را برای حذف یک نویسهٔ منفرد، .B dch را با یک پارامتر، .IR n ، برای حذف .IR n " نویسه،" و حالت حذف را با ارائهٔ \fBsmdc\fP و \fBrmdc\fP جهت ورود به حالت حذف و خروج از آن (هر حالتی که پایانه برای کارکردن .B dch1 لازم است در آن قرار گیرد) مشخص کنید. .PP دستوری برای پاک کردن .I n نویسه (معادل خروجی دادن .I n فاصله بدون جابه‌جا کردن مکان‌نما) می‌تواند به صورت .B ech با یک پارامتر مشخص شود. .SS "برجستهسازی، زیرخطدار کردن و زنگهای بصری (Highlighting, Underlining, and Visible Bells)" اگر پایانهٔ شما یک یا چند نوع از ویژگی‌های نمایشی را دارد، این‌ها را می‌توان به روش‌های گوناگونی نمایش داد. باید یکی از شیوه‌های نمایش را به عنوان \f2حالت برجسته (standout mode)\fP انتخاب کنید، که قالبی مناسب، با کنتراست بالا و ملایم برای چشم‌ها را جهت برجسته‌سازی پیام‌های خطا و سایر موارد جلب‌توجه ارائه می‌دهد. (اگر حق انتخاب دارید، ویدئوی معکوس به‌همراه روشنایی نیمه مناسب است، یا ویدئوی معکوس به تنهایی). توالی‌های ورود به حالت برجسته و خروج از آن به ترتیب به صورت \fBsmso\fP و \fBrmso\fP داده می‌شوند. اگر کد تغییر به حالت برجسته یا خروج از آن، یک یا حتی دو فاصلهٔ خالی روی صفحه بر جای بگذارد، همان‌طور که TVI 912 و Teleray 1061 انجام می‌دهند، آنگاه \fBxmc\fP باید مشخص شود تا بگوید چند فاصله باقی مانده است. .PP کدهای شروع زیرخط‌دار کردن و پایان زیرخط‌دار کردن را می‌توان به ترتیب به صورت \fBsmul\fP و \fBrmul\fP مشخص کرد. اگر پایانه کدی برای زیرخط‌دار کردن نویسهٔ فعلی و جابه‌جا کردن مکان‌نما به اندازهٔ یک فاصله به سمت راست دارد، مانند Microterm Mime، این را می‌توان به صورت \fBuc\fP ارائه داد. .PP سایر قابلیت‌ها برای ورود به حالت‌های گوناگون برجسته‌سازی شامل موارد زیر است: .B blink (چشمک‌زن) .B bold (ضخیم یا بسیار روشن) .B dim (کم‌نور یا نیمه‌روشن) .B invis (خالی یا متن نامرئی) .B prot (محافظت‌شده) .B rev (ویدئوی معکوس) .B sgr0 (خاموش کردن .I همهٔ حالت‌های ویژگی‌ها) .B smacs (ورود به حالت مجموعه نویسهٔ جایگزین) و .B rmacs (خروج از حالت مجموعه نویسهٔ جایگزین). روشن کردن هر یک از این حالت‌ها به تنهایی ممکن است حالت‌های دیگر را خاموش کند یا نکند. .PP اگر توالی‌ای برای تنظیم ترکیب‌های اختیاری از حالت‌ها وجود داشته باشد، این باید به صورت .B sgr (تنظیم ویژگی‌ها) داده شود، که ۹ پارامتر می‌گیرد. هر پارامتر صفر (0) یا غیرصفر است، بسته به اینکه ویژگی متناظر روشن باشد یا خاموش. این ۹ پارامتر به ترتیب عبارتند از: برجسته (standout)، زیرخط (underline)، معکوس (reverse)، چشمک‌زن (blink)، کم‌نور (dim)، ضخیم (bold)، خالی (blank)، محافظت‌شده (protect)، مجموعه نویسهٔ جایگزین (alternate character set). نیازی نیست همهٔ حالت‌ها توسط .BR sgr پشتیبانی شوند، تنها آن‌هایی که دستورهای ویژگی جداگانهٔ متناظر برایشان وجود دارد کافی است. .PP برای نمونه، DEC vt220 از بیشتر حالت‌ها پشتیبانی می‌کند: .PP .TS center; Lb Lb Lb L L L . پارامتر tparm ویژگی توالی گریز _ none none \eE[0m p1 standout \eE[0;1;7m p2 underline \eE[0;4m p3 reverse \eE[0;7m p4 blink \eE[0;5m p5 dim در دسترس نیست p6 bold \eE[0;1m p7 invis \eE[0;8m p8 protect استفاده نشده p9 altcharset \*^O (خاموش) \*^N (روشن) .TE .PP ما هر توالی گریز را با خاموش کردن هرگونه حالت موجود آغاز می‌کنیم، زیرا روش سریعی برای تعیین فعال بودن آن‌ها وجود ندارد. حالت برجسته به عنوان ترکیبی از معکوس و ضخیم تنظیم شده است. پایانهٔ vt220 دارای حالت محافظت‌شده (protect mode) است، اگرچه معمولاً در sgr استفاده نمی‌شود زیرا از نویسه‌های روی صفحه در برابر پاک‌کردن‌های میزبان محافظت می‌کند. حالت altcharset نیز متفاوت است از این حیث که بسته به اینکه خاموش یا روشن باشد، یا \*^O است یا \*^N. اگر همهٔ حالت‌ها روشن شوند، توالی حاصل \eE[0;1;4;5;7;8m\*^N خواهد بود. .PP برخی از توالی‌ها میان حالت‌های گوناگون مشترک هستند. برای نمونه، ;7 زمانی ارسال می‌شود که p1 یا p3 درست باشد، یعنی اگر هر یک از حالت‌های برجسته یا معکوس روشن شوند. .PP نوشتن توالی‌های بالا همراه با وابستگی‌های آن‌ها موارد زیر را حاصل می‌کند: .PP .ne 11 .TS center; Lb Lb Lb L L L . توالی زمان ارسال در خروجی ترجمهٔ terminfo _ \eE[0 همیشه \eE[0 ;1 اگر p1 یا p6 باشد %?%p1%p6%|%t;1%; ;4 اگر p2 باشد %?%p2%|%t;4%; ;5 اگر p4 باشد %?%p4%t;5%; ;7 اگر p1 یا p3 باشد %?%p1%p3%|%t;7%; ;8 اگر p7 باشد %?%p7%t;8%; m همیشه m \*^N یا \*^O اگر p9 باشد \*^N، وگرنه \*^O %?%p9%t\*^N%e\*^O%; .TE .PP قرار دادن همهٔ این‌ها با هم در توالی sgr عبارت زیر را به دست می‌دهد: .PP .EX .nf sgr=\eE[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%; %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\e016%e\e017%;, .fi .EE .PP به یاد داشته باشید که اگر sgr را مشخص می‌کنید، باید sgr0 را نیز مشخص نمایید. همچنین، برخی پیاده‌سازی‌ها بر این امر متکی هستند که در صورت ارائهٔ sgr0 باید sgr نیز مشخص شود، با این وجود لزوماً همهٔ ورودی‌های terminfo دارای یک رشتهٔ sgr نیستند. بسیاری از ورودی‌های terminfo از ورودی‌های termcap مشتق شده‌اند که رشتهٔ sgr ندارند. تنها نقص افزودن یک رشتهٔ sgr این است که termcap همچنین فرض می‌کند که sgr0 از حالت مجموعه نویسهٔ جایگزین خارج نمی‌شود. .PP پایانه‌های دارای اشکال \*(``کوکی جادویی\*('' (magic cookie) .RB ( xmc ) هنگام دریافت توالی‌های تنظیم حالت، \*(``کوکی‌های\*('' ویژه‌ای بر جای می‌گذارند، که به‌جای داشتن بیت‌های اضافی برای هر نویسه، الگوریتم نمایش را تحت تأثیر قرار می‌دهند. برخی پایانه‌ها، مانند HP 2621، هنگام رفتن به یک خط جدید یا آدرس‌دهی مکان‌نما، به‌طور خودکار از حالت برجسته خارج می‌شوند. برنامه‌هایی که از حالت برجسته استفاده می‌کنند باید پیش از حرکت مکان‌نما یا ارسال خط جدید از حالت برجسته خارج شوند، مگر اینکه قابلیت .B msgr که اطمینان می‌دهد حرکت در حالت برجسته ایمن است، وجود داشته باشد. .PP اگر پایانه روشی برای فلاش زدن صفحه جهت نمایش بی‌صدای خطا دارد (جایگزینی برای زنگ) آنگاه این را می‌توان به صورت \fBflash\fP مشخص کرد؛ این دستور نباید مکان‌نما را جابه‌جا کند. .PP اگر مکان‌نما در زمانی که در خط پایینی نیست نیاز دارد که نسبت به حالت عادی نمایان‌تر باشد (برای نمونه، تبدیل یک زیرخط غیرچشمک‌زن به یک بلوک خواناتر یا زیرخط چشمک‌زن) این توالی را به عنوان .BR cvvis مشخص کنید. اگر روشی برای کاملاً نامرئی کردن مکان‌نما وجود دارد، آن را به عنوان .BR civis مشخص کنید. قابلیت .B cnorm باید ارائه شود که اثرات هر دوی این حالت‌ها را باطل می‌کند. .PP اگر پایانهٔ شما نویسه‌های زیرخط‌دار را به درستی تولید می‌کند (بدون نیاز به کدهای ویژه) حتی اگر بازنویسی نکند (overstrike)، آنگاه باید قابلیت \fBul\fP را مشخص کنید. اگر بازنویسی یک نویسه روی نویسهٔ دیگر هر دو نویسه را روی صفحه بر جای می‌گذارد، قابلیت \fBos\fP را مشخص نمایید. اگر بازنویسی‌ها با یک فاصله قابل پاک شدن باشند، آنگاه این موضوع باید با مشخص کردن \fBeo\fP نشان داده شود. .SS "صفحهکلید عددی و کلیدهای تابعی (Keypad and Function Keys)" اگر پایانه دارای صفحهٔ کلید عددی (کی‌پد) باشد که هنگام فشردن کلیدها کد مخابره می‌کند، این اطلاعات را می‌توان ارائه داد. توجه داشته باشید که مدیریت پایانه‌هایی که صفحهٔ کلید عددی در آن‌ها تنها به صورت محلی کار می‌کند امکان‌پذیر نیست (این امر برای نمونه، در مورد کلیدهای بدون شیفت HP 2621 صدق می‌کند). اگر صفحهٔ کلید عددی را بتوان برای مخابره کردن یا مخابره نکردن تنظیم کرد، این کدها را به صورت \fBsmkx\fP و \fBrmkx\fP مشخص کنید. در غیر این صورت فرض می‌شود که صفحهٔ کلید عددی همیشه کد مخابره می‌کند. .PP کدهای ارسالی توسط کلیدهای پیکان چپ، پیکان راست، پیکان بالا، پیکان پایین و کلید home را می‌توان به ترتیب به صورت \fBkcub1\fP، \fBkcuf1\fP، \fBkcuu1\fP، \fBkcud1\fP و \fBkhome\fP مشخص کرد. اگر کلیدهای تابعی مانند f0، f1، ...، f10 وجود دارند، کدهایی که ارسال می‌کنند را می‌توان به صورت \fBkf0, kf1, ..., kf10\fP ارائه داد. اگر این کلیدها برچسب‌هایی به جز f0 تا f10 پیش‌فرض دارند، برچسب‌ها را می‌توان به صورت \fBlf0, lf1, ..., lf10\fP مشخص نمود. .PP کدهای مخابره‌شده توسط برخی کلیدهای ویژهٔ دیگر را می‌توان مشخص کرد: .bP .B kll (رفتن به انتهای صفحه یا home down)، .bP .B kbs (پس‌بر یا backspace)، .bP .B ktbc (پاک کردن تمام تب‌ها)، .bP .B kctab (پاک کردن توقف‌گاه تب در این ستون)، .bP .B kclr (پاک کردن صفحه یا کلید erase)، .bP .B kdch1 (حذف نویسه)، .bP .B kdl1 (حذف خط)، .bP .B krmir (خروج از حالت درج)، .bP .B kel (پاک کردن تا انتهای خط)، .bP .B ked (پاک کردن تا انتهای صفحه)، .bP .B kich1 (درج نویسه یا ورود به حالت درج)، .bP .B kil1 (درج خط)، .bP .B knp (صفحهٔ بعدی)، .bP .B kpp (صفحهٔ قبلی)، .bP .B kind (پیمایش به جلو/پایین)، .bP .B kri (پیمایش به عقب/بالا)، .bP .B khts (تنظیم توقف‌گاه تب در این ستون). .PP علاوه بر این، اگر صفحهٔ کلید عددی دارای یک آرایهٔ ۳ در ۳ از کلیدها شامل چهار کلید پیکان باشد، پنج کلید دیگر را می‌توان به صورت .BR ka1 ، .BR ka3 ، .BR kb2 ، .BR kc1 و .BR kc3 مشخص کرد. این کلیدها زمانی مفید هستند که اثرات یک پد جهت‌دار ۳ در ۳ مورد نیاز باشد. .PP رشته‌های برنامه‌ریزی کلیدهای تابعی را می‌توان به صورت .BR pfkey ، .BR pfloc و .BR pfx مشخص کرد. رشته‌ای برای برنامه‌ریزی برچسب‌های صفحهٔ نمایش باید به صورت \fBpln\fP مشخص شود. هر یک از این رشته‌ها دو پارامتر می‌گیرند: شمارهٔ کلید تابعی برای برنامه‌ریزی (از 0 تا 10) و رشته‌ای که باید با آن برنامه‌ریزی شود. شماره‌های کلید تابعی خارج از این محدوده ممکن است به شیوه‌ای وابسته به پایانه، کلیدهای تعریف‌نشده را برنامه‌ریزی کنند. تفاوت میان این قابلیت‌ها این است که .B pfkey باعث می‌شود فشردن کلید داده‌شده همانند تایپ کردن رشتهٔ داده‌شده توسط کاربر باشد؛ .B pfloc باعث می‌شود رشته توسط پایانه به صورت محلی اجرا شود؛ و .B pfx باعث می‌شود رشته به رایانه مخابره شود. .PP قابلیت‌های \fBnlab\fP، \fBlw\fP و \fBlh\fP تعداد برچسب‌های صفحهٔ نمایشِ قابل برنامه‌ریزی و پهنا و ارتفاع آن‌ها را تعریف می‌کنند. اگر دستورهایی برای روشن و خاموش کردن برچسب‌ها وجود دارد، آن‌ها را در \fBsmln\fP و \fBrmln\fP مشخص کنید. \fBsmln\fP معمولاً پس از یک یا چند توالی pln در خروجی ارسال می‌شود تا اطمینان حاصل شود که تغییر قابل مشاهده می‌گردد. .SS "تبها و مقداردهی اولیه (Tabs and Initialization)" تعداد اندکی از قابلیت‌ها تنها برای مدیریت توقفگاه‌های تب استفاده می‌شوند. .bP اگر پایانه دارای تب‌های سخت‌افزاری است، توالی نویسه‌ای را که به توقفگاه تب بعدی پیش می‌رود، به عنوان مقدار قابلیت رشته‌ای .B tab .RB ( ht ) مشخص کنید (معمولاً Control+I). .bP توالی نویسه‌ای را که به توقفگاه تب پیشین عقب‌نشینی می‌کند (به سمت چپ حرکت می‌کند) به عنوان مقدار قابلیت رشته‌ای .B \%back_tab .RB ( cbt ) مشخص کنید. .IP طبق قرارداد، اگر حالت‌های پایانه به گونه‌ای پیکربندی شده باشند که تب‌ها به جای پایانه، توسط میزبان بسط یابند، برنامه‌ها حتی در صورت وجود قابلیت‌های .B tab .RB ( ht ) یا .B \%back_tab .RB ( cbt ) نباید از آن‌ها استفاده کنند، زیرا ممکن است توقفگاه‌های تب توسط کاربر به درستی تنظیم نشده باشند. .bP اگر پایانه هنگام روشن شدن دارای توقفگاه‌های تب سخت‌افزاری باشد که در هر .I n سلول نویسه تنظیم شده‌اند، .I n را به عنوان مقدار قابلیت عددی .B \%init_tabs .RB ( it )\c \&. .IP دستورهای .B \%tset و .RB \*(`` \%tput .BR init \*('' وجود قابلیت .B \%init_tabs .RB ( it ) را به این معنا تفسیر می‌کنند که پایانه مسئول بسط دادن توقفگاه تب است و همچنین آن را به عنوان دستوری برای تنظیم توقفگاه‌های تب روی مقدار آن در نظر می‌گیرند. اگر پایانه دارای توقفگاه‌های تبی باشد که بتوان آن‌ها را در حافظهٔ پایدار ذخیره کرد، شرح نوع .I \%term\%info آن می‌تواند فرض کند که آن‌ها به درستی تنظیم شده‌اند. .PP سایر قابلیت‌ها عبارت‌اند از: .bP .BR is1 ، .BR is2 و .BR is3 ، رشته‌های مقداردهی اولیه برای پایانه، .bP .BR iprog ، نام مسیر برنامه‌ای که باید برای مقداردهی اولیهٔ پایانه اجرا شود، .bP و \fBif\fP، نام فایلی حاوی رشته‌های طولانیِ مقداردهی اولیه. .PP انتظار می‌رود این رشته‌ها پایانه را در حالت‌هایی سازگار با بقیهٔ شرح terminfo قرار دهند. آن‌ها معمولاً هر بار که کاربر وارد سیستم می‌شود، توسط گزینهٔ .I init برنامهٔ \fBtput\fP به پایانه فرستاده می‌شوند. آن‌ها به ترتیب زیر چاپ خواهند شد: .RS .TP اجرای برنامهٔ .B iprog .TP ارسال خروجیِ .br \fBis1\fP و .br \fBis2\fP .TP تنظیم حاشیه‌ها با استفاده از \fBmgc\fP یا .br \fBsmglp\fP و \fBsmgrp\fP یا .br \fBsmgl\fP و \fBsmgr\fP .TP تنظیم تب‌ها با استفاده از .B tbc و .B hts .TP چاپ فایل \fBif\fP .TP و در نهایت ارسال خروجیِ \fBis3\fP. .RE .PP بیشترِ مقداردهی اولیه با .BR is2 انجام می‌شود. حالت‌های ویژهٔ پایانه را می‌توان بدون تکرار رشته‌ها، با قرار دادن توالی‌های مشترک در .B is2 و حالت‌های خاص در .B is1 و .BR is3 تنظیم نمود. .PP مجموعه‌ای از توالی‌ها که بازنشانی اساسی‌تری را از یک حالت کاملاً نامشخص انجام می‌دهند، می‌توانند به صورت .BR rs1 ، .BR rs2 ، .B rf و .BR rs3 ارائه شوند، که به ترتیب مشابه .BR is1 ، .BR is2 ، .B if و .B is3 هستند. این رشته‌ها توسط گزینهٔ \fIreset\fP در \fBtput\fP، یا توسط برنامهٔ \fBreset\fP (یک نام مستعار برای \fBtset\fP)، که هنگام قفل شدن یا به بن‌بست رسیدن پایانه استفاده می‌شود، به خروجی فرستاده می‌شوند. دستورها معمولاً تنها زمانی در .BR rs1 ، .B rs2 .B rs3 و .B rf قرار داده می‌شوند که اثرات آزاردهنده‌ای روی صفحه ایجاد کنند و هنگام ورود به سیستم ضروری نباشند. به عنوان مثال، دستور قرار دادن vt100 در حالت ۸۰ ستونی معمولاً بخشی از .BR is2 خواهد بود، اما باعث یک پرش بصری آزاردهنده در صفحه می‌شود و از آنجا که پایانه معمولاً از پیش در حالت ۸۰ ستونی قرار دارد، در حالت عادی نیازی به آن نیست. .PP برنامهٔ \fBreset\fP رشته‌هایی از جمله .BR iprog و غیره را به همان ترتیب برنامهٔ .I init می‌نویسد، با این تفاوت که به جای .BR is1 و غیره از .BR rs1 و غیره استفاده می‌کند. اگر هر یک از رشته‌های قابلیت بازنشانیِ .BR rs1 ، .BR rs2 ، .BR rs3 یا .B rf وجود نداشته باشند، برنامهٔ \fBreset\fP به رشتهٔ قابلیت مقداردهی اولیهٔ متناظر بازمی‌گردد. .PP اگر دستورهایی برای تنظیم و پاک کردن توقفگاه‌های تب وجود داشته باشد، می‌توان آن‌ها را به عنوان .B tbc (پاک کردن همهٔ توقفگاه‌های تب) و .B hts (تنظیم یک توقفگاه تب در ستون جاری از هر سطر) ارائه کرد. اگر برای تنظیم تب‌ها توالی پیچیده‌تری از آنچه با این دستورها قابل توصیف است نیاز باشد، توالی را می‌توان در .B is2 یا .BR if قرار داد. .PP دستور \fBtput reset\fP از همان رشته‌های قابلیتی استفاده می‌کند که دستور \fBreset\fP به کار می‌برد، اگرچه این دو برنامه (\fBtput\fP و \fBreset\fP) گزینه‌های خط فرمان متفاوتی را ارائه می‌دهند. .PP در عمل، این قابلیت‌های terminfo اغلب در مقداردهی اولیهٔ تب‌ها استفاده نمی‌شوند (اگرچه برای برنامهٔ \fBtabs\fP الزامی هستند): .bP تقریباً تمام پایانه‌های سخت‌افزاری (دست‌کم آن‌هایی که از تب‌ها پشتیبانی می‌کردند) آن‌ها را روی هر \fIهشت\fP ستون مقداردهی اولیه می‌کردند: .IP تنها استثنا سری AT&T 2300 بود که تب‌ها را روی هر \fIپنج\fP ستون تنظیم می‌کرد. .bP به‌ویژه، سازندگان پایانه‌های سخت‌افزاری که معمولاً به عنوان الگو برای شبیه‌سازهای پایانهٔ امروزی استفاده می‌شوند، مستنداتی ارائه کردند که نشان می‌داد \fIهشت\fP ستون استاندارد بوده است. .bP به همین دلیل، برنامه‌های مقداردهی اولیهٔ پایانه \fBtput\fP و \fBtset\fP تنها زمانی از قابلیت‌های \fBtbc\fP (\fBclear_all_tabs\fP) و \fBhts\fP (\fBset_tab\fP) مستقیماً استفاده می‌کنند که قابلیت \fBit\fP (\fBinit_tabs\fP) روی مقداری غیر از \fIهشت\fP تنظیم شده باشد. .SS "تأخیرها و فاصلهگذاری (Delays and Padding)" بسیاری از پایانه‌های قدیمی‌تر و کندتر نه از دست‌دهی XON/XOFF و نه از DTR پشتیبانی می‌کنند، از جمله پایانه‌های نسخهٔ چاپی و برخی CRTهای بسیار قدیمی (برای نمونه DEC VT100ها). این پایانه‌ها ممکن است پس از برخی حرکات مکان‌نما و تغییرات صفحه، به نویسه‌های فاصله‌گذاری (padding) نیاز داشته باشند. .PP اگر پایانه برای کنترل جریان از دست‌دهی xon/xoff استفاده می‌کند (یعنی هنگامی که بافرهای ورودی آن نزدیک به پر شدن هستند، خودکار \*^S را به میزبان بازمی‌فرستد)، .BR xon را تنظیم کنید. این قابلیت ارسال فاصله‌گذاری را متوقف می‌کند. همچنین می‌توانید آن را برای دستگاه‌های کنسول نگاشت‌شده در حافظه که عملاً محدودیت سرعت ندارند تنظیم کنید. اطلاعات فاصله‌گذاری همچنان باید درج شوند تا روال‌ها بتوانند دربارهٔ هزینه‌های نسبی تصمیم‌گیری بهتری داشته باشند، اما نویسه‌های فاصله‌گذاری واقعی مخابره نخواهند شد. .PP اگر \fBpb\fP (نرخ باود فاصله‌گذاری) مشخص شده باشد، فاصله‌گذاری در نرخ‌های باود پایین‌تر از مقدار \fBpb\fP متوقف می‌شود. اگر ورودی فاقد نرخ باود فاصله‌گذاری باشد، آن‌گاه ارسال یا عدم ارسال فاصله‌گذاری کاملاً توسط \fBxon\fP کنترل می‌شود. .PP اگر پایانه به نویسه‌ای غیر از نویسهٔ تهی (صفر) به عنوان پرکننده نیاز دارد، می‌توان آن را به صورت \fBpad\fP مشخص کرد. تنها نویسهٔ اول از رشتهٔ .B pad استفاده می‌شود. .SS "خطوط وضعیت (Status Lines)" برخی از پایانه‌ها دارای یک \*(``خط وضعیت\*('' اضافی هستند که معمولاً توسط نرم‌افزارها استفاده نمی‌شود (و بنابراین در قابلیت \fBlines\fP پایانه شمرده نمی‌شود). .PP ساده‌ترین حالت، خط وضعیتی است که مکان‌نمای آن قابل آدرس‌دهی است اما بخشی از ناحیهٔ پیمایش اصلی روی صفحه نیست؛ Heathkit H19 دارای خط وضعیتی از این نوع است، همانند یک VT100 با ۲۴ خط و ناحیهٔ پیمایش ۲۳ خطی که در هنگام مقداردهی اولیه تنظیم شده باشد. این وضعیت توسط قابلیت \fBhs\fP نشان داده می‌شود. .PP برخی پایانه‌های دارای خط وضعیت برای دسترسی به خط وضعیت به توالی‌های ویژه‌ای نیاز دارند. این موارد را می‌توان به صورت یک رشته با تک‌پارامتر \fBtsl\fP بیان کرد که مکان‌نما را به ستونی مشخص بر مبنای صفر در خط وضعیت می‌برد. قابلیت \fBfsl\fP باید به موقعیت‌های مکان‌نما در صفحهٔ اصلی پیش از آخرین \fBtsl\fP بازگردد. شاید لازم باشد مقادیر رشته‌ای \fBsc\fP (ذخیرهٔ مکان‌نما) و \fBrc\fP (بازیابی مکان‌نما) را در \fBtsl\fP و \fBfsl\fP تعبیه کنید تا این کار انجام شود. .PP خط وضعیت معمولاً هم‌عرض با عرض پایانه در نظر گرفته می‌شود. اگر این‌گونه نباشد، می‌توانید آن را با قابلیت عددی \fBwsl\fP مشخص کنید. .PP دستوری برای پاک کردن یا خالی کردن خط وضعیت را می‌توان با \fBdsl\fP مشخص کرد. .PP قابلیت بولی \fBeslok\fP مشخص می‌کند که توالی‌های گریز، تب‌ها و غیره طبق معمول در خط وضعیت کار می‌کنند. .PP پیاده‌سازی \fI\%ncurses\fP هنوز از هیچ‌یک از این قابلیت‌ها استفاده نمی‌کند. آن‌ها در اینجا مستند شده‌اند تا در صورتی که روزی مهم شدند در دسترس باشند. .SS "گرافیکهای خطی (Line Graphics)" بسیاری از پایانه‌ها دارای مجموعه‌نویسه‌های جایگزینی هستند که برای رسم فرم‌ها مفیدند. Terminfo و \fBcurses\fP پشتیبانی درونی از بیشتر نویسه‌های ترسیمیِ پشتیبانی‌شده توسط VT100 را به همراه برخی نویسه‌های افزوده‌شده از AT&T 4410v1 دارا هستند. این مجموعه‌نویسهٔ جایگزین می‌تواند با قابلیت \fBacsc\fP مشخص شود. .PP .TS center; Lb Cb S L Lb Lb2 Lb2 Lb Lb1 S Lb L C Lb Lx. \& acsc \& \& نام ACS مقدار نماد جایگزین ASCII / نام گلیف _ ACS_RARROW 0x2b + > پیکان رو به راست ACS_LARROW 0x2c , < پیکان رو به چپ ACS_UARROW 0x2d \- \*^ پیکان رو به بالا ACS_DARROW 0x2e . v پیکان رو به پایین ACS_BLOCK 0x30 0 # بلوک مربعی توپر ACS_DIAMOND 0x60 \(ga + لوزی ACS_CKBOARD 0x61 a : تخته شطرنجی (نقطه‌چین) ACS_DEGREE 0x66 f \e نماد درجه ACS_PLMINUS 0x67 g # مثبت/منفی ACS_BOARD 0x68 h # تختهٔ مربع‌ها ACS_LANTERN 0x69 i # نماد فانوس ACS_LRCORNER 0x6a j + گوشهٔ پایین راست ACS_URCORNER 0x6b k + گوشهٔ بالا راست ACS_ULCORNER 0x6c l + گوشهٔ بالا چپ ACS_LLCORNER 0x6d m + گوشهٔ پایین چپ ACS_PLUS 0x6e n + بعلاوهٔ بزرگ یا تقاطع ACS_S1 0x6f o \*~ خط پویش ۱ ACS_S3 0x70 p \- خط پویش ۳ ACS_HLINE 0x71 q \- خط افقی ACS_S7 0x72 r \- خط پویش ۷ ACS_S9 0x73 s \&_ خط پویش ۹ ACS_LTEE 0x74 t + اتصال T رو به راست ACS_RTEE 0x75 u + اتصال T رو به چپ ACS_BTEE 0x76 v + اتصال T رو به بالا ACS_TTEE 0x77 w + اتصال T رو به پایین ACS_VLINE 0x78 x | خط عمودی ACS_LEQUAL 0x79 y < کوچک‌تر یا مساوی ACS_GEQUAL 0x7a z > بزرگ‌تر یا مساوی ACS_PI 0x7b { * پی یونانی ACS_NEQUAL 0x7c | ! نامساوی ACS_STERLING 0x7d } f نماد پوند بریتانیا ACS_BULLET 0x7e \*~ o گلوله (bullet) .TE .PP چند نکته در مورد خود جدول صدق می‌کند: .bP استاندارد X/Open Curses به نادرست بیان می‌کند که نگاشت \fIlantern\fP (فانوس) حرف بزرگ \*(``I\*('' است، گرچه پیاده‌سازی‌های یونیکس از نگاشت حرف کوچک \*(``i\*('' استفاده می‌کنند. .bP پایانهٔ DEC VT100 گرافیک را با استفاده از ویژگی مجموعه‌نویسهٔ جایگزین پیاده‌سازی می‌کرد، که به طور موقت بین \fIحالت‌ها\fP جابه‌جا می‌شد و نویسه‌هایی در محدودهٔ 0x60 (96) تا 0x7e (126) (ستون \fBacsc Value\fP در جدول) ارسال می‌کرد. .bP پایانهٔ AT&T نویسه‌های گرافیکی خارج از این محدوده را اضافه کرد. .IP برخی از نویسه‌های درون این محدوده با VT100 مطابقت ندارند؛ احتمالاً آن‌ها در پایانهٔ AT&T استفاده می‌شده‌اند: \fIتختهٔ مربع‌ها\fP جایگزین نماد \fInewline\fP در VT100 می‌شود، در حالی که \fIنماد فانوس\fP جایگزین نماد \fIvertical tab\fP در VT100 می‌گردد. سایر نمادهای VT100 برای نویسه‌های کنترلی (\fIhorizontal tab\fP، \fIcarriage return\fP و \fIline-feed\fP) در curses دوباره استفاده نشده‌اند. .PP بهترین روش برای تعریف مجموعهٔ گرافیکی یک دستگاه جدید، افزودن یک ستون به کپی‌ای از این جدول برای پایانهٔ خود است، که نویسه‌ای را مشخص کند که (هنگامی که بین کلیدهای تغییر حالت \fBsmacs\fP/\fBrmacs\fP ارسال می‌شود) به عنوان گرافیک متناظر رندر خواهد شد. سپس جفت‌نویسه‌های VT100/پایانهٔ خود را به ترتیب از راست به چپ بخوانید؛ این‌ها رشتهٔ ACSC را تشکیل می‌دهند. .SS "مدیریت رنگ (Color Handling)" توابع .I curses در کتابخانه با نام‌های .B \%init_pair و .B \%init_color به دستکاری .I "جفت‌های رنگ" و .I رنگ‌ها (مقادیر یا شاخص‌های رنگ، مانند \*(``1=red\*('') که در این بخش مورد بحث قرار می‌گیرند، می‌پردازند (برای جزئیات دربارهٔ این توابع و توابع مرتبط، \fB\%curs_color\fP(3X) را ببینید). .PP بیشتر پایانه‌های رنگی در رویکرد خود به مدیریت رنگ، یا \*(``شبیه تکترونیکس\*('' یا \*(``شبیه اچ‌پی\*('' هستند. .bP پایانه‌های .I شبیه تکترونیکس مجموعه‌ای متشکل از .I n رنگ را تعریف می‌کنند (که در آن .I n معمولاً ۸ است)، و می‌توانند رنگ‌های پیش‌زمینه و پس‌زمینهٔ سلول نویسه را به طور مستقل تغییر دهند، و آن‌ها را در .IR n \(mu n جفت رنگ ترکیب کنند. پایانه‌های استاندارد ANSI شبیه تکترونیکس هستند. .bP در پایانه‌های .IR "شبیه اچ‌پی" ، کاربر باید هر جفت رنگ را به طور جداگانه تنظیم کند؛ پیش‌زمینه و پس‌زمینه به طور مستقل قابل تغییر نیستند. حداکثر .I m جفت رنگ را می‌توان از .RI 2\(mu m رنگ مختلف پیکربندی کرد. .PP برخی از قابلیت‌های پایه‌ای مدیریت رنگ مستقل از روش کدگذاری رنگ هستند. قابلیت‌های عددی .B \%max_colors .RB ( \%colors ) و .B \%max_pairs .RB ( \%pairs ) حداکثر تعداد رنگ‌ها و جفت‌های رنگی را که دستگاه می‌تواند هم‌زمان نمایش دهد، مشخص می‌کنند. قابلیت رشته‌ای .B \%orig_pair .RB ( \%op ) (\*(``جفت رنگ اصلی\*('') رنگ‌های پیش‌زمینه و پس‌زمینه را به مقادیر پیش‌فرض آن‌ها برای پایانه بازنشانی می‌کند. قابلیت رشته‌ای .B \%orig_colors .RB ( \%oc ) (\*(``رنگ‌های اصلی\*('') تمامی رنگ‌ها یا جفت‌های رنگی را به مقادیر پیش‌فرض آن‌ها برای پایانه بازنشانی می‌کند. برخی از انواع پایانه‌ها (از جمله بسیاری از شبیه‌سازهای پایانهٔ PC) نواحی صفحه را به جای پس‌زمینهٔ پیش‌فرض زمان روشن شدن، با رنگ پس‌زمینهٔ فعلی پاک می‌کنند؛ این‌ها باید قابلیت بولی .B \%back_color_erase .RB ( bce ) را اعلام کنند. .PP در حالی که کتابخانهٔ .I curses با \fIجفت‌های رنگ\fP کار می‌کند (که نشان‌دهندهٔ ناتوانی برخی دستگاه‌ها در تنظیم مستقل رنگ‌های پیش‌زمینه و پس‌زمینه است)، قابلیت‌های جداگانه‌ای برای تنظیم این ویژگی‌ها وجود دارد: .bP برای تغییر رنگ پیش‌زمینه یا پس‌زمینهٔ فعلی در یک پایانهٔ نوع تکترونیکس، از \fBsetaf\fP (تنظیم پیش‌زمینهٔ ANSI) و \fBsetab\fP (تنظیم پس‌زمینهٔ ANSI) یا \fBsetf\fP (تنظیم پیش‌زمینه) و \fBsetb\fP (تنظیم پس‌زمینه) استفاده کنید. این قابلیت‌ها یک پارامتر می‌گیرند که همان شمارهٔ رنگ است. مستندات SVr4 تنها \fBsetaf\fP/\fBsetab\fP را توصیف می‌کند؛ پیش‌نویس XPG4 بیان می‌دارد که «اگر پایانه از توالی‌های گریز ANSI برای تنظیم پس‌زمینه و پیش‌زمینه پشتیبانی می‌کند، آن‌ها باید به ترتیب به صورت \fBsetaf\fP و \fBsetab\fP کدگذاری شوند». .bP اگر پایانه از سایر توالی‌های گریز برای تنظیم پس‌زمینه و پیش‌زمینه پشتیبانی کند، آن‌ها باید به ترتیب به صورت \fBsetf\fP و \fBsetb\fP کدگذاری شوند. توابع \fBvidputs\fP و \fBrefresh\fP(3X) در صورت تعریف بودن قابلیت‌های \fBsetaf\fP و \fBsetab\fP از آن‌ها استفاده می‌کنند. .PP قابلیت‌های \fBsetaf\fP/\fBsetab\fP و \fBsetf\fP/\fBsetb\fP هر کدام یک آرگومان عددی منفرد می‌گیرند. مقادیر آرگومان ۰ تا ۷ در \fBsetaf\fP/\fBsetab\fP به صورت سازگار و قابل‌حمل به شرح زیر تعریف شده‌اند (ستون میانی همان #define نمادین موجود در سرایند کتابخانه‌های \fBcurses\fP یا \fI\%ncurses\fP است). سخت‌افزار پایانه آزاد است که این‌ها را به دلخواه خود نگاشت کند، اما مقادیر RGB مکان‌های معمول در فضای رنگی را نشان می‌دهند. .PP .TS center; Cb Cb Cb Cb S S L Lb C L1 L1 L . رنگ #define مقدار RGB _ سیاه COLOR_BLACK 0 0, 0, 0 قرمز COLOR_RED 1 max, 0, 0 سبز COLOR_GREEN 2 0, max, 0 زرد COLOR_YELLOW 3 max, max, 0 آبی COLOR_BLUE 4 0, 0, max سرخابی COLOR_MAGENTA 5 max, 0, max فیروزه‌ای COLOR_CYAN 6 0, max, max سفید COLOR_WHITE 7 max, max, max .TE .br .if t .ne 6v .PP مقادیر آرگومان \fBsetf\fP/\fBsetb\fP از لحاظ تاریخی با نگاشت متفاوتی مطابقت دارند، یعنی: .PP .TS center; Cb Cb Cb Cb S S L Lb C L1 L1 L . رنگ #define مقدار RGB _ سیاه COLOR_BLACK 0 0, 0, 0 آبی COLOR_BLUE 1 0, 0, max سبز COLOR_GREEN 2 0, max, 0 فیروزه‌ای COLOR_CYAN 3 0, max, max قرمز COLOR_RED 4 max, 0, 0 سرخابی COLOR_MAGENTA 5 max, 0, max زرد COLOR_YELLOW 6 max, max, 0 سفید COLOR_WHITE 7 max, max, max .TE .PP بسیار مهم است که این دو مجموعه از قابلیت‌های رنگی با یکدیگر اشتباه گرفته نشوند؛ در غیر این صورت رنگ‌های قرمز و آبی روی صفحه نمایش جابه‌جا خواهند شد. .PP در یک پایانهٔ شبیه اچ‌پی، از \fBscp\fP با پارامتر شمارهٔ جفت رنگ استفاده کنید تا مشخص شود کدام جفت رنگ جاری است. .PP برخی از پایانه‌ها اجازه می‌دهند که \fIمقادیر رنگ\fP تغییر داده شوند: .bP در یک پایانهٔ شبیه تکترونیکس، ممکن است قابلیت \fBccc\fP برای نشان دادن این‌که رنگ‌ها قابل تغییر هستند وجود داشته باشد. در این صورت، قابلیت \fBinitc\fP یک شمارهٔ رنگ (۰ تا \fBcolors\fP \- 1) و سه پارامتر دیگر را می‌گیرد که رنگ را توصیف می‌کنند. این سه پارامتر به طور پیش‌فرض به صورت مقادیر RGB (قرمز، سبز، آبی / Red, Green, Blue) تفسیر می‌شوند. اگر قابلیت بولی \fBhls\fP وجود داشته باشد، به جای آن به عنوان شاخص‌های HLS (فام، روشنایی، اشباع / Hue, Lightness, Saturation) تفسیر می‌گردند. محدوده‌ها وابسته به پایانه هستند. .bP در یک پایانهٔ شبیه اچ‌پی، \fBinitp\fP ممکن است قابلیتی برای تغییر مقدار یک جفت رنگ ارائه دهد. این قابلیت هفت پارامتر می‌گیرد: یک شمارهٔ جفت رنگ (۰ تا \fBmax_pairs\fP \- 1)، و دو سه‌تایی که ابتدا رنگ پس‌زمینه و سپس رنگ پیش‌زمینه را توصیف می‌کنند. بسته به \fBhls\fP، این پارامترها باید (قرمز، سبز، آبی) یا (فام، روشنایی، اشباع) باشند. .PP در برخی پایانه‌های رنگی، رنگ‌ها با برجسته‌سازی‌ها تداخل پیدا می‌کنند. می‌توانید این تداخل‌ها را با قابلیت \fBncv\fP ثبت کنید. این یک ماسک بیتی از ویژگی‌هایی است که هنگام فعال بودن رنگ‌ها نباید استفاده شوند. تطابق با ویژگی‌های شناخته‌شده توسط \fBcurses\fP به صورت زیر است: .PP .TS center; Cb Cb Cb Cb Lb N N Lb. ویژگی بیت ده‌دهی تنظیم توسط _ A_STANDOUT 0 1 sgr A_UNDERLINE 1 2 sgr A_REVERSE 2 4 sgr A_BLINK 3 8 sgr A_DIM 4 16 sgr A_BOLD 5 32 sgr A_INVIS 6 64 sgr A_PROTECT 7 128 sgr A_ALTCHARSET 8 256 sgr A_HORIZONTAL 9 512 sgr1 A_LEFT 10 1024 sgr1 A_LOW 11 2048 sgr1 A_RIGHT 12 4096 sgr1 A_TOP 13 8192 sgr1 A_VERTICAL 14 16384 sgr1 A_ITALIC 15 32768 sitm .TE .PP برای مثال، در بسیاری از کنسول‌های IBM PC، ویژگی زیرخط‌دار با رنگ پیش‌زمینهٔ آبی تداخل دارد و در حالت رنگی در دسترس نیست. این پایانه‌ها باید دارای یک قابلیت \fBncv\fP با مقدار ۲ باشند. .PP نسخهٔ SVr4 curses هیچ کاری با \fBncv\fP انجام نمی‌دهد، اما \fI\%ncurses\fP آن را شناسایی کرده و خروجی را به نفع رنگ‌ها بهینه‌سازی می‌کند. .SS "گوناگون (Miscellaneous)" اگر پایانه به نویسه‌ای غیر از نویسهٔ تهی (صفر یا null) به عنوان پرکننده (pad) نیاز داشته باشد، می‌توان آن را با pad مشخص کرد. تنها نخستین نویسه از رشتهٔ pad استفاده می‌شود. اگر پایانه نویسهٔ پرکننده ندارد، npc را مشخص کنید. توجه داشته باشید که \fI\%ncurses\fP متغیر \fBPC\fP سازگار با termcap را پیاده‌سازی می‌کند؛ اگرچه ممکن است برنامه این مقدار را روی چیزی غیر از تهی تنظیم کند، اما \fI\%ncurses\fP ابتدا \fBnpc\fP را آزمایش کرده و در صورتی که پایانه نویسهٔ پرکننده نداشته باشد، از napms استفاده خواهد کرد. .PP اگر پایانه بتواند نیم‌خط به بالا یا پایین حرکت کند، این موضوع را می‌توان با .B hu (نیم‌خط به بالا) و .B hd (نیم‌خط به پایین) مشخص کرد. این ویژگی عمدتاً برای بالانویس‌ها و زیرنویس‌ها در پایانه‌های نسخهٔ چاپی (hard-copy) سودمند است. اگر یک پایانهٔ نسخهٔ چاپی بتواند به صفحهٔ بعدی برود (form feed)، این را با .B ff (معمولاً control/L) مشخص کنید. .PP اگر دستوری برای تکرار یک نویسهٔ معین به تعداد دفعات مشخص وجود داشته باشد (جهت صرفه‌جویی در زمان ارسال شمار زیادی از نویسه‌های یکسان)، می‌توان آن را با رشتهٔ پارامتردار .B rep نشان داد. پارامتر نخست، نویسه‌ای است که باید تکرار شود و پارامتر دوم تعداد دفعات تکرار آن است. بنابراین، tparm(repeat_char, \*'x\*', 10) همانند \*(``xxxxxxxxxx\*('' خواهد بود. .PP اگر پایانه دارای نویسهٔ فرمان قابل تنظیم باشد، مانند \s-1TEKTRONIX\s+1 4025، می‌توان آن را با .B cmdch مشخص کرد. یک نویسهٔ فرمان نمونه (prototype) انتخاب می‌شود که در تمامی قابلیت‌ها استفاده می‌گردد. این نویسه در قابلیت .B cmdch برای شناسایی داده می‌شود. قرارداد زیر در برخی سیستم‌های یونیکس پشتیبانی می‌شود: محیط برای یافتن یک متغیر .B CC جستجو می‌شود، و در صورت یافت شدن، تمام موارد تکرار نویسهٔ نمونه با نویسهٔ موجود در متغیر محیطی جایگزین می‌شوند. .PP توصیف‌های پایانه‌ای که نشان‌دهندهٔ نوع مشخصی از یک پایانهٔ شناخته‌شده نیستند، مانند .IR switch ، .IR dialup ، .IR patch ، و .IR network ، باید شامل قابلیت .B gn (عمومی یا generic) باشند تا برنامه‌ها بتوانند اعلام کنند که روش برقراری ارتباط با پایانه را نمی‌دانند. (این قابلیت در مورد توصیف‌های پایانهٔ .I مجازی که توالی‌های گریز آن‌ها شناخته شده است، صدق نمی‌کند.) .PP اگر پایانه یک \*(``کلید متا\*('' داشته باشد که همانند یک کلید تبدیل (shift) عمل کند، و بیت هشتم هر نویسهٔ ارسال‌شده را یک کند، این موضوع را می‌توان با .B km مشخص کرد. در غیر این صورت، نرم‌افزار فرض خواهد کرد که بیت هشتم بیت توازن (parity) است و معمولاً پاک خواهد شد. اگر رشته‌هایی برای روشن و خاموش کردن این \*(``حالت متا\*('' وجود داشته باشند، می‌توان آن‌ها را به صورت .B smm و .B rmm مشخص کرد. .PP اگر پایانه خطوط حافظهٔ بیشتری نسبت به آنچه در یک لحظه روی صفحه جا می‌شود داشته باشد، تعداد خطوط حافظه را می‌توان با .B lm مشخص کرد. مقدار .BR lm #0 نشان می‌دهد که تعداد خطوط ثابت نیست، اما هنوز حافظهٔ بیشتری نسبت به گنجایش صفحه وجود دارد. .PP اگر پایانه یکی از پایانه‌های پشتیبانی‌شده توسط پروتکل پایانهٔ مجازی یونیکس باشد، شمارهٔ پایانه را می‌توان با .B vt مشخص کرد. .PP رشته‌های رونوشت رسانه (Media copy) که یک چاپگر کمکیِ متصل به پایانه را کنترل می‌کنند می‌توانند به این صورت مشخص شوند: .BR mc0 : چاپ محتویات صفحه، .BR mc4 : خاموش کردن چاپگر، و .BR mc5 : روشن کردن چاپگر. هنگامی که چاپگر روشن است، تمام متن ارسال‌شده به پایانه به چاپگر نیز فرستاده خواهد شد. این موضوع که آیا متن در هنگام روشن بودن چاپگر روی صفحهٔ نمایش پایانه نیز نشان داده می‌شود یا خیر، تعریف‌نشده است. گونهٔ دیگر .B mc5p یک پارامتر می‌گیرد، و چاپگر را به تعداد نویسه‌هایی برابر با مقدار آن پارامتر روشن نگه می‌دارد، سپس چاپگر را خاموش می‌کند. این پارامتر نباید از 255 فراتر رود. تمام متن، از جمله .BR mc4 ، در مدتی که یک .B mc5p برقرار است، به طور شفاف به چاپگر منتقل می‌شود. .SS "اشکالات و رفتارهای ناهنجار (Glitches and Brain Damage)" پایانه‌های Hazeltine، که اجازه نمی‌دهند نویسه‌های \*(``\*~\*('' نمایش داده شوند، باید \fBhz\fP را مشخص کنند. .PP پایانه‌هایی که تغییر خط (line-feed) را بلافاصله پس از شکست خودکار خط \fBam\fP نادیده می‌گیرند، مانند Concept و vt100، باید \fBxenl\fP را مشخص کنند. .PP اگر .B el برای خلاص شدن از حالت برجسته‌سازی (standout) الزامی باشد (به جای نوشتنِ صِرفِ متن عادی روی آن)، باید \fBxhp\fP داده شود. .PP پایانه‌های Teleray، که در آن‌ها نویسه‌های تب تمامی نویسه‌هایی را که مکان‌نما از روی آن‌ها می‌گذرد به نویسهٔ فاصله تبدیل می‌کنند، باید \fBxt\fP (تب‌های مخرب یا destructive tabs) را مشخص کنند. نکته: متغیری که این موضوع را نشان می‌دهد اکنون \*(``dest_tabs_magic_smso\*('' است؛ در نسخه‌های قدیمی‌تر، teleray_glitch بود. این اشکال همچنین به این معنا در نظر گرفته می‌شود که قرار دادن مکان‌نما روی یک \*(``کوکی جادویی\*('' (magic cookie) امکان‌پذیر نیست، و برای پاک کردن حالت برجسته‌سازی، در عوض استفاده از حذف و درج خط ضروری است. پیاده‌سازی \fI\%ncurses\fP این اشکال را نادیده می‌گیرد. .PP پایانهٔ Beehive Superbee، که قادر به ارسال صحیح نویسه‌های گریز (escape) یا control/C نیست، دارای .B xsb است، که نشان می‌دهد کلید f1 برای گریز و کلید f2 برای control/C به کار می‌رود. (تنها برخی از مدل‌های Superbee بسته به نسخهٔ ROM این مشکل را دارند.) توجه داشته باشید که در نسخه‌های قدیمی‌تر terminfo، این قابلیت \*(``beehive_glitch\*('' نامیده می‌شد؛ اکنون \*(``no_esc_ctl_c\*('' است. .PP سایر مشکلات خاص پایانه‌ها ممکن است با افزودن قابلیت‌های بیشتری به صورت \fBx\fIx\fR اصلاح شوند. .SS "تلههای ورودیهای طولانی (Pitfalls of Long Entries)" ورودی‌های طولانی terminfo بعید است مشکلی ایجاد کنند؛ تا به امروز هیچ ورودی‌ای حتی به حداکثر ۴۰۹۶ بایتیِ جدول رشته‌های terminfo نزدیک هم نشده است. متأسفانه، ترجمه‌های termcap بسیار سخت‌گیرانه‌تر محدود شده‌اند (به ۱۰۲۳ بایت)، بنابراین ترجمه‌های termcap از ورودی‌های طولانی terminfo می‌توانند مشکل‌ساز شوند. .PP صفحات راهنمای 4.3BSD و نسخه‌های قدیمی‌تر \fBtgetent\fP به کاربر دستور می‌دهند که یک بافر ۱۰۲۴ بایتی برای ورودی termcap تخصیص دهد. این ورودی توسط کتابخانهٔ termcap به نویسهٔ تهی (null) ختم می‌شود، بنابراین حداکثر طول امن برای یک ورودی termcap برابر با 1k\-1 (۱۰۲۳) بایت است. بسته به اینکه برنامه و کتابخانهٔ termcap مورد استفاده چه می‌کنند، و اینکه نوع پایانهٔ مورد جستجوی \fBtgetent\fP در کجای فایل termcap قرار دارد، چندین اتفاق ناگوار ممکن است رخ دهد: .bP برخی کتابخانه‌های termcap یک پیام هشدار چاپ می‌کنند، .bP برخی در صورت یافتن ورودیِ طولانی‌تر از ۱۰۲۳ بایت خارج می‌شوند، .bP برخی نه خارج می‌شوند و نه هشدار می‌دهند، و هیچ کار مفیدی انجام نمی‌دهند، و .bP برخی صرفاً ورودی‌ها را به ۱۰۲۳ بایت کوتاه (truncate) می‌کنند. .PP برخی برنامه‌های کاربردی بیش از ۱ کیلوبایتِ توصیه‌شده را برای ورودی termcap تخصیص می‌دهند؛ برخی دیگر این کار را نمی‌کنند. .PP هر ورودی termcap دارای دو اندازهٔ مهم مربوط به خود است: پیش از گسترش \*(``tc\*('' و پس از گسترش \*(``tc\*(''. \*(``tc\*('' قابلیتی است که یک ورودی دیگر termcap را به انتهای ورودی فعلی می‌افزاید تا قابلیت‌های آن را اضافه کند. اگر یک ورودی termcap از قابلیت \*(``tc\*('' استفاده نکند، مسلماً هر دو طول یکسان خواهند بود. .PP طول \*(``پیش از گسترش tc\*('' مهم‌ترین است، زیرا فراتر از صرفاً کاربران آن پایانهٔ خاص اثر می‌گذارد. این برابر است با طول ورودی همان‌گونه که در /etc/termcap وجود دارد، منهای جفت‌های اسلش وارونه-خط جدید، که \fBtgetent\fP هنگام خواندن آن را حذف می‌کند. برخی کتابخانه‌های termcap خط جدید پایانی را نیز حذف می‌کنند (termcap متعلق به GNU چنین نمی‌کند). اکنون فرض کنید: .bP یک ورودی termcap پیش از گسترش بیش از ۱۰۲۳ بایت طول داشته باشد، .bP و برنامه فقط یک بافر ۱ کیلوبایتی تخصیص داده باشد، .bP و کتابخانهٔ termcap (مانند مورد موجود در BSD/OS 1.1 و GNU) کل ورودی را صرف‌نظر از طول آن در بافر بخواند تا ببیند آیا این همان ورودی مورد نظر است یا خیر، .bP و \fBtgetent\fP در حال جستجو برای نوع پایانه‌ای باشد که یا همان ورودی طولانی است، یا پس از ورودی طولانی در فایل termcap ظاهر می‌شود، یا اصلاً در فایل وجود ندارد (به طوری که \fBtgetent\fP مجبور است تمام فایل termcap را جستجو کند). .PP در این صورت \fBtgetent\fP حافظه و احتمالاً پشتهٔ خود را بازنویسی (overwrite) کرده و به احتمال زیاد موجب تخلیهٔ حافظه (core dump) و فروپاشی برنامه خواهد شد. برنامه‌هایی مانند telnet به طور ویژه‌ای آسیب‌پذیر هستند؛ برنامه‌های امروزی telnet مقدارهایی مانند نوع پایانه را به طور خودکار منتقل می‌کنند. نتایج با یک کتابخانهٔ termcap، مانند سامانه‌های SunOS 4.1.3 و Ultrix 4.4، که هنگام خواندن یک ورودی بیش از حد طولانی termcap پیام‌های هشدار چاپ می‌کند، تقریباً به همان اندازه نامطلوب است. اگر یک کتابخانهٔ termcap ورودی‌های طولانی را کوتاه کند، مانند OSF/1 3.0، در اینجا از فروپاشی مصون خواهد بود اما داده‌های نادرستی را برای پایانه بازمی‌گرداند. .PP طول \*(``پس از گسترش tc\*('' اثری مشابه موارد فوق خواهد داشت، اما تنها برای افرادی که در عمل \fITERM\fP را روی آن نوع پایانه تنظیم کرده‌اند؛ زیرا \fBtgetent\fP گسترش \*(``tc\*('' را تنها پس از یافتن نوع پایانهٔ مورد نظر انجام می‌دهد، نه در حین جستجو. .PP به طور خلاصه، یک ورودی termcap که طولانی‌تر از ۱۰۲۳ بایت باشد می‌تواند در ترکیب‌های گوناگون از کتابخانه‌های termcap و برنامه‌های کاربردی، موجب تخلیهٔ حافظه (core dump)، هشدارها یا عملکرد نادرست شود. اگر حتی پیش از گسترش \*(``tc\*('' بیش از حد طولانی باشد، این اثر را حتی برای کاربران برخی دیگر از انواع پایانه‌ها و کاربرانی که متغیر \fITERM\fP آن‌ها فاقد ورودی termcap است خواهد داشت. .PP هنگامی که در حالت \-C (ترجمه به termcap) باشد، پیاده‌سازی \fI\%ncurses\fP از \fBtic\fP(1M) در صورتی که طول ترجمهٔ termcap پیش از tc بیش از حد طولانی باشد، پیام‌های هشدار صادر می‌کند. گزینهٔ \-c (بررسی یا check) نیز طول‌های حل‌شده (پس از گسترش tc) را بررسی می‌نماید. .SH "فایلها (FILES)" .TP .I /usr/share/terminfo شاخهٔ پایگاه دادهٔ توصیف پایانهٔ کامپایل‌شده .SH "گسترشها (EXTENSIONS)" جستجو برای توصیف‌های پایانه در \fI$HOME/.terminfo\fP و \fI\%TERMINFO_DIRS\fP توسط پیاده‌سازی‌های قدیمی‌تر پشتیبانی نمی‌شود. .PP برخی پیاده‌سازی‌های \fBcurses\fP در SVr4، و تمامی پیاده‌سازی‌های پیش از SVr4، عملگرهای %A و %O را در رشته‌های پارامتر تفسیر نمی‌کنند. .PP استانداردهای SVr4/XPG4 مشخص نمی‌کنند که آیا \fBmsgr\fP در هنگام قرار داشتن در یک حالتِ مجموعه‌نویسهٔ جایگزین (alternate-character-set)، اجازهٔ حرکت را می‌دهد یا خیر (چنین حالت‌هایی ممکن است از جمله، CR و NL را به نویسه‌هایی نگاشت کنند که موجب حرکت‌های محلی نمی‌شوند). پیاده‌سازی \fI\%ncurses\fP مقدار \fBmsgr\fP را در حالت \fBALTCHARSET\fP نادیده می‌گیرد. این امر این احتمال را به وجود می‌آورد که یک پیاده‌سازی XPG4 با تفسیری مخالف، ممکن است نیاز داشته باشد تا قابلیت \fBmsgr\fP در ورودی‌های terminfo که برای \fI\%ncurses\fP ساخته شده‌اند، غیرفعال (خاموش) باشد. .PP کتابخانهٔ \fI\%ncurses\fP درج نویسه و حالت‌های درج نویسه را به روشی اندکی غیر استاندارد مدیریت می‌کند تا به بهره‌وری بهتری در به‌روزرسانی دست یابد. زیربخش \fBدرج/حذف نویسه (Insert/Delete Character)\fP در بالا را ببینید. .PP جایگزینی‌های پارامتر برای \fBset_clock\fP و \fBdisplay_clock\fP در SVr4 یا X/Open Curses مستند نشده‌اند. آن‌ها از مستندات پایانهٔ AT&T 505 استنباط شده‌اند. .PP در انتساب قابلیت \fBkmous\fP دقت کنید. کتابخانهٔ \fI\%ncurses\fP تمایل دارد آن را به عنوان \fBKEY_MOUSE\fP تفسیر کند، جهت استفاده توسط پایانه‌ها و شبیه‌سازهایی مانند xterm که می‌توانند اطلاعات ردیابی موشواره را در جریان ورودیِ صفحه‌کلید بازگردانند. .PP استاندارد X/Open Curses اشاره‌ای به حروف مورب (italics) نکرده است. برنامه‌های با قابلیت حمل باید فرض کنند که قابلیت‌های عددی مقدارهای ۱۶ بیتی علامت‌دار هستند. این شامل قابلیت \fIno_color_video\fP (\fBncv\fP) نیز می‌شود. مقدار ماسک 32768 که برای حروف مورب با \fBncv\fP به کار می‌رود ممکن است با یک \fBncv\fP غایب یا لغوشده اشتباه گرفته شود. اگر حروف مورب باید همراه با رنگ‌ها کار کنند، مقدار \fBncv\fP باید مشخص شود، حتی اگر صفر باشد. .PP پورت‌های تجاری مختلف از \fI\%terminfo\fP و \fIcurses\fP از زیرمجموعه‌های متفاوتی از X/Open Curses و (در برخی موارد) گسترش‌های متفاوتی پشتیبانی می‌کنند. در اینجا خلاصه‌ای آورده شده است، که تا اکتبر ۱۹۹۵ دقیق است، زمانی که پس از آن بازار تجاری یونیکس منقبض شد و تنوع خود را از دست داد. .bP سیستم‌های SVr4، Solaris، و \fI\%ncurses\fP از تمام قابلیت‌های SVr4 پشتیبانی می‌کنند. .bP سیستم IRIX از مجموعهٔ SVr4 پشتیبانی می‌کند و یک قابلیت رشته‌ای گسترش‌یافتهٔ مستندنشده \%(\fBset_pglen\fP) را اضافه می‌کند. .bP سیستم‌های SVr1 و Ultrix از یک زیرمجموعهٔ محدود از قابلیت‌های \fI\%terminfo\fP پشتیبانی می‌کنند. قابلیت‌های بولی به \fB\%xon_xoff\fP ختم می‌شوند؛ قابلیت‌های عددی به \fB\%width_status_line\fP؛ و قابلیت‌های رشته‌ای به \fB\%prtr_non\fP. .bP سیستم HP/UX از زیرمجموعهٔ SVr1 پشتیبانی می‌کند، به‌علاوهٔ مقدارهای عددی SVr[234] شامل \fB\%num_labels\fP، \fB\%label_height\fP، \fB\%label_width\fP، به‌علاوهٔ کلیدهای تابعی ۱۱ تا ۶۳، به‌علاوهٔ \fB\%plab_norm\fP، \fB\%label_on\fP، و \fB\%label_off\fP، به‌همراه شماری از گسترش‌های ناسازگار در جدول رشته‌ها. .bP سیستم AIX از زیرمجموعهٔ SVr1 پشتیبانی می‌کند، به‌علاوهٔ کلیدهای تابعی ۱۱ تا ۶۳، به‌همراه شماری از گسترش‌های ناسازگار در جدول رشته‌ها. .bP سیستم OSF/1 هم از مجموعهٔ SVr4 و هم از گسترش‌های AIX پشتیبانی می‌کند. .SH "قابلیت حمل (PORTABILITY)" روی این‌که ورودی‌های کامپایل‌شدهٔ (باینری) \fI\%terminfo\fP میان سیستم‌های تجاری یونیکس قابل حمل باشند، حساب نکنید. دست‌کم دو پیاده‌سازی از \fI\%terminfo\fP (پیاده‌سازی‌های مربوط به HP-UX و AIX) پس از SVr1 از دیگر سیستم‌های یونیکس System V فاصله گرفتند، و قابلیت‌های گسترش‌یافته‌ای را به جدول رشته‌ها افزودند که (در قالب باینری) با گسترش‌های بعدی System V و X/Open Curses تداخل پیدا می‌کنند. .SH "نویسندگان (AUTHORS)" Zeyd M. Ben-Halim، Eric S. Raymond، Thomas E. Dickey. بر پایهٔ \fIpcurses\fP اثر Pavel Curtis. .SH "همچنین ببینید (SEE ALSO)" \fB\%infocmp\fP(1M)، \fB\%tabs\fP(1)، \fB\%tic\fP(1M)، \fB\%curses\fP(3X)، \fB\%curs_color\fP(3X)، \fB\%curs_terminfo\fP(3X)، \fB\%curs_variables\fP(3X)، \fB\%printf\fP(3)، \fB\%term_variables\fP(3X)، \fB\%term\fP(5)، \fB\%user_caps\fP(5)