.\" -*- coding: UTF-8 -*- '\" 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 $ .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH terminfo 5 "16 أغسطس 2025" "ncurses 6.6" "تنسيقات الملفات" .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 الاسم \fB\%terminfo\fP \- قاعدة بيانات قدرات الطرفية .SH موجز /usr/share/terminfo/*/* .SH الوصف تُعد \fITerminfo\fP قاعدة بيانات تصف الطرفيات، وتستخدمها البرامج الموجهة للشاشة مثل \fBnvi\fP(1) و \fBlynx\fP(1) و \fBmutt\fP(1) وغيرها من تطبيقات curses، باستخدام استدعاءات عالية المستوى لمكتبات مثل \fBcurses\fP(3X). كما تُستخدم عبر استدعاءات منخفضة المستوى بواسطة التطبيقات التي لا تعتمد curses والتي قد تكون موجهة للشاشة (مثل \fBclear\fP(1)) أو غير موجهة للشاشة (مثل \fBtabs\fP(1)). .PP تصف \fITerminfo\fP الطرفيات عبر إعطاء مجموعة من القدرات التي تمتلكها، ومن خلال تحديد كيفية تنفيذ عمليات الشاشة، وتحديد متطلبات الحشو وتسلسلات التهيئة. .PP يصف هذا المستند الإصدار 6.6 من \fI\%ncurses\fP (الرقعة 20251230). .SS "صيغة مدخلات \fIterminfo\fP" تتكون المدخلات في \fIterminfo\fP من تسلسل من الحقول: .bP ينتهي كل حقل بفاصلة \*(``,\*('' (يمكن الهروب من الفواصل المضمنة باستخدام مائلة عكسية أو كتابتها كـ \*(``\e054\*(''). .bP تُتجاهل المساحات البيضاء بين الحقول. .bP يبدأ الحقل الأول في مدخلة \fIterminfo\fP في العمود الأول. .bP يمكن استخدام الأسطر الجديدة والمساحات البيضاء البادئة (مسافات أو علامات جدولة) لتنسيق المدخلات من أجل القراءة. تُزال هذه من المدخلات المحللة. .IP تعتمد خيارات \fBinfocmp\fP المتمثلة في \fB\-f\fP و \fB\-W\fP على هذا لتنسيق تعبيرات if\-then\-else، أو لفرض حد أقصى لعرض السطر. يمكن قراءة وصف الطرفية المنسق الناتج بواسطة \fBtic\fP. .bP يعطي الحقل الأول لكل طرفية الأسماء المعروفة للطرفية، مفصولة بمحارف \*(``|\*(''. .IP الاسم الأول المعطى هو الاختصار الأكثر شيوعًا للطرفية (اسمها الرئيس)، والاسم الأخير المعطى يجب أن يكون اسمًا طويلاً يحدد الطرفية بالكامل (انظر \fBlongname\fP(3X))، وتُعامل جميع الأسماء الأخرى كمرادفات (أسماء مستعارة) لاسم الطرفية الرئيس. .IP تنصح X/Open Curses بأن تكون جميع الأسماء باستثناء الأخير بأحرف صغيرة ولا تحتوي على فراغات؛ بينما قد يحتوي الاسم الأخير على أحرف كبيرة وفراغات من أجل القراءة. .IP هذا التطبيق ليس صارمًا جدًا؛ فهو يسمح بحالة أحرف مختلطة في الاسم الرئيس والأسماء المستعارة. إذا كان الاسم الأخير لا يحتوي على فراغات مضمنة، فإنه يسمح بأن يكون اسمًا مستعارًا واسمًا مسهبًا في آن واحد (ولكن سيُحذر من هذا الغموض). .bP تُعامل الأسطر التي تبدأ بـ \*(``#\*('' في العمود الأول كتعليقات. .IP بينما تُعد أسطر التعليقات صالحة في أي نقطة، فإن مخرجات \fBcaptoinfo\fP و \fBinfotocap\fP (أسماء مستعارة لـ \fBtic\fP) ستنقل التعليقات بحيث تظهر فقط بين المدخلات. .PP يجب اختيار أسماء الطرفيات (باستثناء المدخلة المسهبة الأخيرة) باستخدام الاصطلاحات التالية. يجب أن يكون لقطعة الأجهزة المكونة للطرفية اسم جذر، مثل \*(``hp2621\*(''). يجب ألا يحتوي هذا الاسم على شرطات. أما الأنماط التي يمكن أن تكون عليها الأجهزة، أو تفضيلات المستخدم، فيجب الإشارة إليها بإلحاق شرطة ولاحقة نمط. وهكذا، فإن vt100 في نمط 132 عمودًا ستكون vt100\-w. يجب استخدام اللواحق التالية حيثما أمكن: .PP .TS center; Lb Lb Lb L L Lx. لاحقة (Suffix) مثال المعنى _ \-\fInn\fP aaa\-60 عدد الأسطر على الشاشة \-\fIn\fPp c100\-4p عدد صفحات الذاكرة \-am vt100\-am بهوامش آلية (عادة ما يكون الوضع المبدئي) \-m ansi\-m النمط الأحادي؛ يعطل الألوان \-mc wy30\-mc ملف تعريف ارتباط سحري؛ مسافات عند التمييز \-na c100\-na لا توجد مفاتيح أسهم (تُترك محلية) \-nam vt100\-nam بدون هوامش آلية \-nl hp2621\-nl لا يوجد سطر حالة \-ns hp2626\-ns لا يوجد سطر حالة \-rv c100\-rv فيديو عكسي \-s vt100\-s تفعيل سطر الحالة \-vb wy370\-vb استخدام الجرس المرئي بدلاً من الصافرة \-w vt100\-w النمط العريض (> 80 عمودًا، عادة 132) .TE .PP لمزيد من المعلومات حول اصطلاحات تسمية الطرفيات، انظر صفحة الدليل \fBterm\fP(7). .SS "صيغة قدرات \fIterminfo\fP" تتكون مدخلة terminfo من عدة \fIقدرات\fP، أي ميزات تمتلكها الطرفية، أو طرق لممارسة ميزات الطرفية. .PP بعد الحقل الأول (الذي يعطي اسم (أسماء) مدخلة الطرفية)، يجب أن يكون هناك حقل \fIقدرة\fP واحد أو أكثر. هذه أسماء منطقية أو عددية أو نصية مع القيم المقابلة لها: .bP تكون القدرات المنطقية صحيحة عند وجودها، وخاطئة عند غيابها. لا توجد قيمة صريحة للقدرات المنطقية. .bP تحتوي القدرات العددية على \*(``#\*('' يتبع الاسم، ثم قيمة عددية عشرية غير موقعة. .bP تحتوي القدرات النصية على \*(``=\*('' يتبع الاسم، ثم سلسلة من المحارف التي تشكل قيمة القدرة. .IP يمكن تقسيم القدرات النصية إلى عدة أسطر، تمامًا كما يمكن تقسيم الحقول التي تتكون منها مدخلة الطرفية إلى عدة أسطر. بينما تُتجاهل الفراغات بين الحقول، فإن الفراغات المضمنة داخل قيمة نصية يتم الاحتفاظ بها، باستثناء الفراغات البادئة في السطر. .PP يمكن \fIإلغاء\fP أي قدرة، أي حجبها من مدخلة الطرفية، عن طريق اتباع اسمها بـ \*(``@\*('' بدلاً من قيمة القدرة. .SS "طرفيات مماثلة" إذا كان هناك طرفيتان متماثلتان جدًا، يمكن تعريف إحداهما (المتغيرة) على أنها تمامًا مثل الأخرى (القاعدة) مع استثناءات معينة. في تعريف المتغيرة، يمكن إعطاء القدرة النصية \fBuse\fP مع اسم الطرفية القاعدة: .bP تتجاوز القدرات المعطاة قبل \fBuse\fP تلك الموجودة في النوع القاعدة المسمى بواسطة \fBuse\fP. .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 "القدرات القياسية" .\" Head of terminfo man page ends here .ps -1 تلي ذلك جداول القدرات التي تتعرف عليها \fI\%ncurses\fP في وصف نوع طرفية \fI\%term\%info\fP والمتاحة للكود المستخدم لـ \fI\%term\%info\fP. .bP يحدد اسم القدرة الرمز الذي يصل من خلاله المبرمج الذي يستخدم واجهة برمجة تطبيقات \fI\%term\%info\fP إلى القدرة. .bP كود TI (\fI\%term\%info\fP) هو الاسم المختصر الذي يستخدمه الشخص الذي ينشئ أو يحدث مدخلة نوع الطرفية. .IP كلما أمكن، تكون هذه الأكواد هي نفسها أو مشابهة لتلك الموجودة في معيار ANSI X3.64\-1979 (الذي حل محله الآن ECMA\-48، والذي يستخدم أسماء مطابقة أو مشابهة جدًا). تهدف الدلالات أيضًا إلى مطابقة تلك الخاصة بالمواصفة. .IP لا تمتلك أكواد \fI\%term\%info\fP حدًا صارمًا للطول، ولكن \fI\%ncurses\fP تحافظ على حد غير رسمي من 5 محارف لإبقائها قصيرة وللسماح لعلامات الجدولة في ملف المصدر \fICaps\fP بالاصطفاف بشكل جيد. (تتجاوز بعض الأكواد القياسية هذا الحد بغض النظر عن ذلك). .bP كود TC (\fItermcap\fP) هو الكود المستخدم بواسطة واجهة برمجة التطبيقات المقابلة لـ \fI\%ncurses\fP. (بعض القدرات جديدة، ولها أسماء لم تبتكرها BSD \fItermcap\fP). .bP يحاول حقل الوصف نقل دلالات القدرة. .PP يوظف حقل الوصف بضع ترميزات. .TP \fB(P)\fP يشير إلى إمكانية تحديد حشو. .TP \fB(P*)\fP يشير إلى أن الحشو قد يختلف بالتناسب مع عدد أسطر المخرجات المتأثرة. .TP \fB#\fP\fIi\fP يشير إلى المعلمة رقم \fIi\fP للقدرة النصية؛ يجب على المبرمج تمرير النص إلى \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. \& الكود \& اسم القدرة المنطقية TI TC الوصف _ auto_left_margin bw bw T{ .na cub1 يلتف من العمود 0 إلى العمود الأخير 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 تُتجاهل السطر الجديد بعد 80 عمودًا (concept) T} erase_overstrike eo eo T{ .na يمكن مسح الكتابة الفوقية بفراغ T} generic_type gn gn T{ .na نوع سطر عام T} hard_copy hc hc T{ .na طرفية نسخة مطبوعة T} has_meta_key km km T{ .na تمتلك مفتاح meta (أي تضبط البت الثامن) T} has_status_line hs hs T{ .na تمتلك سطر حالة إضافي T} insert_null_glitch in in T{ .na نمط الإدراج يميز المحارف الفارغة (nulls) 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 يمكن استخدام مفتاح الهروب (escape) في سطر الحالة T} dest_tabs_magic_smso xt xt T{ .na علامات الجدولة مدمرة، محرف so سحري (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 mode) 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. \& الكود \& اسم الإمكانية الرقمية TI TC الوصف _ أعمدة 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 أسطر الذاكرة إذا كانت > من السطر. 0 تعني أنها متفاوتة 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/يونكس) 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. \& الكود \& اسم الإمكانية الرقمية TI TC الوصف _ 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 حجم خطوة المحرف عند التواجد في الوضع الدقيق T} micro_line_size mls Yg T{ .na حجم خطوة السطر عند التواجد في الوضع الدقيق 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. \& الكود \& اسم قدرة السلسلة TI TC الوصف _ 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 السطر الأخير، العمود الأول (في حال عدم وجود cup) 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} دخول_وضع_مجموعة_المحارف_البديلة smacs as T{ .na بدء مجموعة المحارف البديلة (P) T} enter_blink_mode blink mb T{ .na تشغيل الوميض T} enter_bold_mode bold md T{ .na تشغيل الوضع العريض (الساطع جداً) T} enter_ca_mode smcup ti T{ .na سلسلة لبدء البرامج باستخدام cup T} enter_delete_mode smdc dm T{ .na دخول وضع الحذف T} دخول_وضع_الخفوت dim mh T{ .na تشغيل وضع نصف السطوع 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 بدء وضع التميز 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 الخروج من وضع التميز T} exit_underline_mode rmul ue T{ .na الخروج من وضع التسطير T} flash_screen وميض vb T{ .na جرس مرئي (قد لا يحرك المؤشر) T} form_feed ff ff T{ .na إخراج صفحة المحطة الورقية (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 مفتاح مسافة للخلف 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} مفتاح_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 شهور T{ .na أوقف وضع ميتا (meta) T} meta_on smm mm T{ .na شغل وضع ميتا (meta) (تفعيل البت الثامن) T} newline nel nw T{ .na سطر جديد (يتصرف مثل cr متبوعًا بـ lf) T} pad_char pad pc T{ .na محرف الحشو (بدلًا من null) 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 لأعلى 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 استعد المؤشر إلى موضع آخر save_cursor 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 انتقل لعلامة الجدولة العتادية التالية ذات الـ 8 مسافات 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 أزواج محارف الرسوميات، مبنية على vt100 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 شغّل اللصائق البرمجية T} label_off rmln LF T{ .na أوقف اللصائق البرمجية T} key_beg kbeg @1 T{ .na مفتاح البداية T} key_cancel kcan @2 T{ .na مفتاح الإلغاء T} key_close kclo @3 T{ .na مفتاح الإغلاق T} key_command kcmd @4 T{ .na مفتاح الأمر T} key_copy kcpy @5 T{ .na مفتاح النسخ T} key_create kcrt @6 T{ .na مفتاح الإنشاء T} key_end kend @7 T{ .na مفتاح النهاية T} key_enter kent @8 T{ .na مفتاح الإدخال/الإرسال T} key_exit kext @9 T{ .na مفتاح الخروج T} key_find kfnd @0 T{ .na مفتاح البحث T} key_help khlp %1 T{ .na مفتاح المساعدة T} key_mark kmrk %2 T{ .na مفتاح العلامة T} key_message kmsg %3 T{ .na مفتاح الرسالة T} key_move kmov %4 T{ .na مفتاح النقل T} key_next knxt %5 T{ .na مفتاح التالي T} key_open kopn %6 T{ .na مفتاح الفتح T} key_options kopt %7 T{ .na مفتاح الخيارات T} key_previous kprv %8 T{ .na مفتاح السابق T} key_print kprt %9 T{ .na مفتاح الطباعة T} key_redo krdo %0 T{ .na مفتاح الإعادة T} key_reference kref &1 T{ .na مفتاح المرجع T} key_refresh krfr &2 T{ .na مفتاح التحديث T} key_replace krpl &3 T{ .na مفتاح الاستبدال T} key_restart krst &4 T{ .na مفتاح إعادة التشغيل T} key_resume kres &5 T{ .na مفتاح الاستئناف T} key_save ksav &6 T{ .na مفتاح الحفظ T} key_suspend kspd &7 T{ .na مفتاح التعليق T} key_undo kund &8 T{ .na مفتاح التراجع T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. key_sbeg kBEG &9 T{ .na مفتاح البداية المبدّل T} key_scancel kCAN &0 T{ .na مفتاح الإلغاء المبدّل T} key_scommand kCMD *1 T{ .na مفتاح الأوامر المبدّل T} key_scopy kCPY *2 T{ .na مفتاح النسخ المبدّل T} key_screate kCRT *3 T{ .na مفتاح الإنشاء المبدّل T} key_sdc kDC *4 T{ .na مفتاح حذف المحارف المبدّل T} key_sdl kDL *5 T{ .na مفتاح حذف السطور المبدّل T} key_select kslt *6 T{ .na مفتاح الاختيار T} key_send kEND *7 T{ .na مفتاح النهاية المبدّل T} key_seol kEOL *8 T{ .na مفتاح المسح حتى نهاية السطر المبدّل T} key_sexit kEXT *9 T{ .na مفتاح الخروج المبدّل T} key_sfind kFND *0 T{ .na مفتاح البحث المبدّل T} key_shelp kHLP #1 T{ .na مفتاح المساعدة المبدّل T} key_shome kHOM #2 T{ .na مفتاح المنزل المبدّل T} key_sic kIC #3 T{ .na مفتاح إدراج المحارف المبدّل T} key_sleft kLFT #4 T{ .na مفتاح السهم الأيسر المبدّل T} key_smessage kMSG %a T{ .na مفتاح الرسائل المبدّل T} key_smove kMOV %b T{ .na مفتاح النقل المبدّل T} key_snext kNXT %c T{ .na مفتاح التالي المبدّل T} key_soptions kOPT %d T{ .na مفتاح الخيارات المبدّل T} key_sprevious kPRV %e T{ .na مفتاح السابق المبدّل T} key_sprint kPRT %f T{ .na مفتاح الطباعة المبدّل T} key_sredo kRDO %g T{ .na مفتاح الإعادة المبدّل T} key_sreplace kRPL %h T{ .na مفتاح الاستبدال المبدّل T} key_sright kRIT %i T{ .na مفتاح السهم الأيمن المبدّل T} key_srsume kRES %j T{ .na مفتاح الاستئناف المبدّل T} key_ssave kSAV !1 T{ .na مفتاح الحفظ المبدّل T} key_ssuspend kSPD !2 T{ .na مفتاح التعليق المبدّل T} key_sundo kUND !3 T{ .na مفتاح التراجع المبدّل T} req_for_input rfi RF T{ .na أرسل محرف الإدخال التالي (للمحطات الطرفية الوهمية ptys) 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 ضبط الهامش اللين الأيسر عند العمود الحالي (ليس في \fItermcap\fP الخاص بـ BSD) 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 إيقاف مؤقت لمدة 2\-3 ثوانٍ T} wait_tone wait WA T{ .na انتظار نغمة الطلب T} user0 u0 u0 T{ .na سلسلة المستخدم رقم 0 T} user1 u1 u1 T{ .na سلسلة المستخدم رقم 1 T} user2 u2 u2 T{ .na سلسلة المستخدم رقم 2 T} user3 u3 u3 T{ .na سلسلة المستخدم رقم 3 T} user4 u4 u4 T{ .na سلسلة المستخدم رقم 4 T} user5 u5 u5 T{ .na سلسلة المستخدم رقم 5 T} user6 u6 u6 T{ .na سلسلة المستخدم رقم 6 T} user7 u7 u7 T{ .na سلسلة المستخدم رقم 7 T} user8 u8 u8 T{ .na سلسلة المستخدم رقم 8 T} user9 u9 u9 T{ .na سلسلة المستخدم رقم 9 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 إلى fg=(#2,#3,#4), bg=(#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 ادخل وضع العرض المزدوج T} .TE .TS center; Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. enter_draft_quality sdrfq ZG T{ .na ادخل وضع جودة المسودة T} enter_italics_mode sitm ZH T{ .na ادخل الوضع المائل T} enter_leftward_mode slm ZI T{ .na ابدأ حركة العربة نحو اليسار T} enter_micro_mode smicm ZJ T{ .na ابدأ وضع الحركة الدقيقة 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 أنهِ وضع الحركة الدقيقة 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 #1 في الوضع الدقيق 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 ابدأ طباعة رسوميات صور البتات 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. \& الكود \& اسم قدرة السلسلة TI TC الوصف _ 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 انتقل إلى طقم الترميز 0 (EUC set 0، ASCII) T} set1_des_seq s1ds s1 T{ .na انتقل إلى طقم الترميز 1 T} set2_des_seq s2ds s2 T{ .na انتقل إلى طقم الترميز 2 T} set3_des_seq s3ds s3 T{ .na انتقل إلى طقم الترميز 3 T} set_lr_margin smglr ML T{ .na اضبط كل من الهامشين الأيسر والأيمن إلى #1، #2. (ML ليس في termcap الخاص بـ BSD). 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 اعرض محرف الحاسوب الشخصي #1 T} enter_pc_charset_mode smpch S2 T{ .na ادخل إلى وضع عرض محارف الحاسوب الشخصي T} exit_pc_charset_mode rmpch S3 T{ .na اخرج من وضع عرض محارف الحاسوب الشخصي T} enter_scancode_mode smsc S4 T{ .na ادخل إلى وضع رمز المسح (scancode) للحاسوب الشخصي T} exit_scancode_mode rmsc S5 T{ .na اخرج من وضع رمز المسح (scancode) للحاسوب الشخصي T} pc_term_options pctrm S6 T{ .na خيارات طرفية الحاسوب الشخصي T} scancode_escape scesc S7 T{ .na هروب (Escape) لمحاكاة رمز المسح T} alt_scancode_esc scesa S8 T{ .na هروب (Escape) بديل لمحاكاة رمز المسح T} .TE .PP . أضاف معيار XSI Curses إمكانيات النسخ المطبوع هذه. واستُخدمت في بعض إصدارات ما بعد 4.1 من System V curses، مثل Solaris 2.5 و IRIX 6.x. باستثناء \fBYI\fP، فإن أسماء termcap الخاصة بـ \fBncurses\fP لها مخترعة. ووفقاً لمعيار XSI Curses، ليس لها أسماء termcap. إذا كانت مدخلات terminfo المجمّعة لديك تستخدم هذه الإمكانيات، فقد لا تكون متوافقة ثنائياً مع مدخلات System V terminfo بعد SVr4.1؛ فاحذر! . .PP .TS center; Lb Cb S Lb Lb Lb Lb Lb Lbw(25n)2 Lbw(8n)2 Lb2 Lw(17n)x. \& الكود \& اسم قدرة السلسلة TI TC الوصف _ 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 "الإمكانيات المعرفة من قبل المستخدم" . سرد القسم السابق الإمكانيات \fIالقياسية\fP. بعضها غامض، ويدعم وظائف لا تنفذها محاكيات الطرفيات، أو ربما لم تُحقق أبداً في الأجهزة المصنعة. أحياناً، تمتلك المحاكيات ميزات خاصة يصعب أو يستحيل تمثيلها عبر الإمكانيات القياسية. .PP يعالج \fI\%ncurses\fP هذا القصور بالسماح بالإمكانيات المعرفة من قبل المستخدم. يوفر برنامجا \fB\%tic\fP و \fB\%infocmp\fP الخيار \fB\-x\fP لهذا الغرض. عند استخدام \fB\-x\fP، يعامل \fB\%tic\fP الإمكانيات غير المعروفة على أنها معرفة من قبل المستخدم. أي إذا واجه \fB\%tic\fP اسم إمكانية لا يتعرف عليه، فإن البرنامج يستنتج نوع الإمكانية (منطقية، أو رقمية، أو نصية) من صيغة قيمة الإمكانية وينشئ مدخلاً موسعاً في الجدول لتلك الإمكانية. تجعل \fBuse_extended_names\fP(3X) هذه المعلومات متاحة للتطبيقات بشكل مشروط. وتزود دوال مكتبة \fI\%ncurses\fP المستدعِين ببيانات الإمكانية، والتي يعود تفسيرها غالباً إلى التطبيق. .bP يعامل \fI\%ncurses\fP إمكانيات السلاسل النصية المعرفة من قبل المستخدم والتي تبدأ أسماؤها بـ \*(``k\*('' كمفاتيح وظائف. .bP يمكن استنتاج أنواع الإمكانيات (منطقية، أو رقمية، أو نصية) التي يحددها \fB\%tic\fP عبر استدعاءات ناجحة لـ \fB\%tigetflag\fP(3X) و \fB\%tigetnum\fP(3X) و \fB\%tigetstr\fP(3X). .bP إذا كان اسم الإمكانية مكوناً من حرفين، فستكون الإمكانية متاحة أيضاً عبر واجهة termcap. .PP بينما يُقال إن \fItermcap\fP قابل للتوسيع لأنه لا يفرض أي إمكانيات، إلا أنه في الممارسة العملية اقتصر على تلك المحددة بواسطة تطبيقات \fI\%term\%info\fP. كقاعدة، لا تستخدم سوى الإمكانيات المعرفة من قبل المستخدم من النوع المنطقي والرقمي مع تطبيقات \fItermcap\fP لتجنب تجاوز حد 1023 بايت الذي تفترضه تطبيقات \fItermcap\fP وتطبيقاتها. وتحديداً، فإن دعم الأطقم الموسعة من مفاتيح الوظائف (بعد المفاتيح الستين المرقمة وحفنة المفاتيح الخاصة المسماة) يتحقق بشكل أفضل باستخدام الأسماء الأطول المتاحة عبر \fI\%term\%info\fP. .PP تستخدم مكتبة \fI\%ncurses\fP القليل من هذه الإمكانيات المعرفة من قبل المستخدم، كما هو موضح في \fBuser_caps\fP(5). بالنسبة للإمكانيات الأخرى المعرفة من قبل المستخدم، بما في ذلك مفاتيح الوظائف، راجع شكل المصدر لقاعدة بيانات الطرفية، \fI\%terminfo.src\fP، تحت العنوان \*(``NCURSES USER\-DEFINABLE CAPABILITIES\*(''. . .SS "مدخل عينة" . المدخل التالي، الذي يصف طرفية قياسية ANSI\ X3.64\- (أو ECMA\-48\-) (يُشار إليها فيما يلي بـ \*(``قياسية ANSI\*('' للاختصار)، يمثل ما يبدو عليه مدخل \fI\%term\%info\fP لطرفية حديثة عادةً. .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 يمكن أن تمتد المدخلات على عدة أسطر بوضع مسافة بيضاء في بداية كل سطر باستثناء السطر الأول. يمكن تضمين التعليقات في الأسطر التي تبدأ بـ \*(``#\*(''. إمكانيات \fIterminfo\fP هي من ثلاثة أنواع: .bP الإمكانيات المنطقية (Boolean) التي تشير إلى أن الطرفية تمتلك ميزة معينة، .bP الإمكانيات الرقمية التي تعطي حجم الطرفية أو حجم تأخيرات معينة، و .bP إمكانيات السلاسل النصية، التي تعطي تسلسلاً يمكن استخدامه لإجراء عمليات طرفية معينة. .SS "أنواع الإمكانيات" كل الإمكانيات لها أسماء. على سبيل المثال، حقيقة أن طرفيات ANSI القياسية لها \fIهوامش آلية\fP (أي عودة آلية وتغذية سطر عند الوصول إلى نهاية السطر) يشار إليها بالإمكانية \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\*^\fP\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 \fIسطر جديد\fP، \fIتغذية سطر\fP، \fIعودة\fP، \fIجدولة\fP، \fIمسافة للخلف\fP، \fIتغذية نموذج\fP، و \fIمسافة\fP، .RE .IP على التوالي. .PP لا يذكر X/Open Curses ما قد يكون عليه \*(``\fIx\fP المناسب\*(''. في الممارسة العملية، يكون محرفاً رسومياً من ASCII قابلاً للطباعة. تُفسر الحالة الخاصة \*(``\*^?\*('' على أنها DEL (127). في جميع الحالات الأخرى، تُجرى عملية \*(``and\*('' منطقية لقيمة المحرف مع 0x1f، مما يحولها إلى رموز تحكم ASCII في النطاق من 0 إلى 31. .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، والتي لا تنهي سلسلة نصية ولكنها تتصرف كمحرف null في معظم الطرفيات، بشرط تحديد CS7. انظر \fBstty\fP(1). .IP السبب الرئيس لهذه الغرابة هو الحفاظ على التوافق الثنائي لملفات terminfo المجمعة مع التطبيقات الأخرى، مثل أنظمة SVr4 التي توثق هذا. تستخدم ملفات terminfo المجمعة سلاسل نصية منتهية بصفر (null\-terminated)، دون أطوال. تعديل هذا سيتطلب تنسيقًا ثنائيًا جديدًا، وهو ما لن يعمل مع التطبيقات الأخرى. .PP أخيرًا، يمكن إعطاء المحارف كأرقام ثمانية ثلاثة بعد \fB\e\fP. .PP قد يظهر تأخير بالميلي ثانية في أي مكان في قدرة السلسلة النصية، محصورًا بين قوسين $<..>، كما في \fBel\fP=\eEK$<5>، وتوفر \fBtputs\fP(3X) محارف حشو لتوفير هذا التأخير. .bP يجب أن يكون التأخير رقمًا بدقة خانة عشرية واحدة على الأكثر؛ وقد تتبعه اللاحقتان \*(``*\*('' أو \*(``/\*('' أو كلتاهما. .bP تشير \*(``*\*('' إلى أن الحشو المطلوب يتناسب مع عدد الأسطر المتأثرة بالعملية، والكمية المعطاة هي الحشو المطلوب لكل وحدة متأثرة. (في حالة إدراج محرف، يظل العامل هو عدد \fIالأسطر\fP المتأثرة). .IP عادةً، تكون الحشوة استشارية إذا كان الجهاز يمتلك قدرة \fBxon\fP؛ وتُستخدم لحساب التكلفة ولكنها لا تؤدي إلى تأخيرات. .bP تشير اللاحقة \*(``/\*('' إلى أن الحشو إلزامي ويفرض تأخيرًا بعدد الميلي ثانية المعطى حتى على الأجهزة التي يتوفر فيها \fBxon\fP للإشارة إلى التحكم في التدفق. .PP يجب أحيانًا تعليق القدرات الفردية. للقيام بذلك، ضع نقطة قبل اسم القدرة. على سبيل المثال، انظر \fBind\fP الثانية في المثال أعلاه. .br .ne 5 .SS "جلب الأوصاف المجمعة" تُخزن أوصاف الطرفية في \fI\%ncurses\fP في قواعد بيانات الطرفية. هذه القواعد، التي يُعثر عليها عبر مساراتها، يمكن أن تُضبط إما كأشجار أدلة أو قواعد بيانات مجزأة (انظر \fBterm\fP(5))، .PP تستخدم المكتبة قائمة مدمجة من المسارات، والتي يمكن تجاوزها بواسطة متغيرات البيئة. قبل بدء البحث، تفحص \fI\%ncurses\fP قائمة البحث، وتستبعد المكررات والمسارات التي لا توجد فيها قاعدة بيانات طرفية. تقرأ مكتبة \fI\%ncurses\fP الوصف الأول الذي يجتاز فحوصات الاتساق الخاصة بها. .bP يُفحص متغير البيئة \fBTERMINFO\fP أولاً، للبحث عن قاعدة بيانات طرفية تحتوي على وصف الطرفية. .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\fP على وصف طرفية بدلاً من مسار قاعدة بيانات طرفية. إذا بدأ هذا المتغير بـ \*(``hex:\*('' أو \*(``b64:\*('' فإن \fI\%ncurses\fP تقرأ وصف الطرفية من بيانات مشفرة بنظام سداسي عشري أو base64، وإذا طابق ذلك الوصف الاسم المطلوب، فسيُستخدم. يمكن ضبط هذه البيانات المشفرة باستخدام الخيار \*(``\-Q\*('' للأداتين \fBtic\fP أو \fBinfocmp\fP. .PP ما سبق يتناول الضبط المعتاد لـ \fI\%ncurses\fP، والذي يستخدم أوصاف الطرفية المعدة بتنسيق \fIterminfo\fP. ورغم أن \fItermcap\fP أقل تعبيرًا، يمكن أيضًا اضبط \fI\%ncurses\fP لقراءة أوصاف \fItermcap\fP. في هذا الضبط، تفحص المكتبة المتغيرين \fI\%TERMCAP\fP و \fI\%TERMPATH\fP (للمحتوى ومسار البحث، على التوالي) بعد قاعدة بيانات الطرفية الخاصة بالنظام. .SS "إعداد الأوصاف" نوجز الآن كيفية إعداد أوصاف الطرفيات. الطريقة الأكثر فعالية لإعداد وصف طرفية هي تقليد وصف طرفية مماثلة في \fIterminfo\fP وبناء الوصف تدريجيًا، باستخدام أوصاف جزئية مع \fIvi\fP أو أي برنامج آخر موجه للشاشة للتحقق من صحتها. كن على علم بأن الطرفية غير المألوفة للغاية قد تكشف عن أوجه قصور في قدرة ملف \fIterminfo\fP على وصفها أو أخطاء في كود معالجة الشاشة لبرنامج الاختبار. .PP للحصول على الحشو الصحيح لإدراج سطر (إذا لم يوثق مصنع الطرفية ذلك) فإن الاختبار القاسي هو تحرير ملف كبير بمعدل 9600 باود، وحذف 16 سطرًا أو نحو ذلك من منتصف الشاشة، ثم الضغط على مفتاح \*(``u\*('' عدة مرات بسرعة. إذا اختل أداء الطرفية، فعادة ما تكون هناك حاجة إلى مزيد من الحشو. يمكن استخدام اختبار مماثل لإدراج محرف. .SS "القدرات الأساسية" يُعطى عدد الأعمدة في كل سطر للطرفية بواسطة القدرة الرقمية \fBcols\fP. إذا كانت الطرفية من نوع \s-1CRT\s0، فإن عدد الأسطر على الشاشة يُعطى بواسطة القدرة \fBlines\fP. إذا كانت الطرفية تلتف إلى بداية السطر التالي عندما تصل إلى الهامش الأيمن، فيجب أن تمتلك القدرة \fBam\fP. إذا كانت الطرفية تستطيع مسح شاشتها وترك المؤشر في موضع البدء (home)، فإن هذا يُعطى بواسطة قدرة السلسلة \fBclear\fP. إذا كانت الطرفية تطبع فوق المحارف (بدلاً من مسح الموضع عند كتابة محرف فوق آخر)، فيجب أن تمتلك القدرة \fBos\fP. إذا كانت الطرفية طرفية طباعة بدون وحدة نسخ ناعمة، فأعطها كلاً من \fBhc\fP و \fBos\fP. (تنطبق \fBos\fP على طرفيات تخزين النطاق، مثل سلسلة \s-1TEKTRONIX\s+1 4010، بالإضافة إلى الطرفيات الورقية وطرفيات APL). إذا وجد كود لنقل المؤشر إلى الحافة اليسرى للسطر الحالي، فأعطه كـ \fBcr\fP. (عادةً ما يكون هذا محرف الرجوع، control/M). وإذا وجد كود لإصدار إشارة صوتية (جرس، صفارة، إلخ) فأعطه كـ \fBbel\fP. .PP إذا وُجد كود لتحريك المؤشر موضعًا واحدًا إلى اليسار (مثل المسافة للخلف)، فيجب إعطاء هذه القدرة كـ \fBcub1\fP. وبالمثل، يجب إعطاء أكواد التحرك إلى اليمين ولأعلى ولأسفل كـ \fBcuf1\fP و \fBcuu1\fP و \fBcud1\fP. لا ينبغي لحركات المؤشر المحلية هذه أن تغير النص الذي تمر فوقه؛ على سبيل المثال، لن تستخدم عادةً \*(``\fBcuf1\fP=\ \*('' لأن المسافة ستمسح المحرف الذي تم المرور فوقه. .PP نقطة بالغة الأهمية هنا هي أن حركات المؤشر المحلية المشفرة في \fIterminfo\fP غير محددة عند الحافتين اليسرى والعلوية لطرفية \s-1CRT\s0. لا ينبغي أبدًا للبرامج محاولة الرجوع للخلف حول الحافة اليسرى، ما لم تُعطَ \fBbw\fP، ولا تحاول أبدًا الصعود محليًا خارج الحافة العلوية. ومن أجل تمرير النص للأعلى، سينتقل البرنامج إلى الزاوية اليسرى السفلية من الشاشة ويرسل سلسلة \fBind\fP (الفهرس). .PP لتمرير النص للأسفل، ينتقل البرنامج إلى الزاوية اليسرى العلوية من الشاشة ويرسل سلسلة \fBri\fP (الفهرس العكسي). تكون السلاسل \fBind\fP و \fBri\fP غير محددة عندما لا تكون في زواياهما المخصصة من الشاشة. .PP النسخ ذات المعلمات لتسلسلات التمرير هي \fBindn\fP و \fBrin\fP واللتان لهما نفس دلالات \fBind\fP و \fBri\fP باستثناء أنهما تأخذان معلمة واحدة، وتمرران هذا العدد من الأسطر. كما أنهما غير محددتين إلا عند حافة الشاشة المناسبة. .PP تخبر القدرة \fBam\fP ما إذا كان المؤشر يلتصق بالحافة اليمنى للشاشة عند إخراج النص، ولكن هذا لا ينطبق بالضرورة على \fBcuf1\fP من العمود الأخير. الحركة المحلية الوحيدة المحددة من الحافة اليسرى هي في حالة إعطاء \fBbw\fP، فعندها سينتقل \fBcub1\fP من الحافة اليسرى إلى الحافة اليمنى للسطر السابق. وإذا لم تُعطَ \fBbw\fP، فإن النتيجة غير محددة. هذا مفيد لرسم إطار حول حافة الشاشة، على سبيل المثال. إذا كانت الطرفية تحتوي على هوامش تلقائية يمكن اختيارها بمفتاح، فإن ملف \fIterminfo\fP يفترض عادةً أنها مفعلة؛ أي \fBam\fP. وإذا كانت الطرفية تحتوي على أمر ينتقل إلى العمود الأول من السطر التالي، فيمكن إعطاء هذا الأمر كـ \fBnel\fP (سطر جديد). لا يهم إذا كان الأمر يمسح ما تبقى من السطر الحالي، لذا إذا كانت الطرفية لا تحتوي على \fBcr\fP و \fBlf\fP فقد يظل من الممكن صياغة \fBnel\fP عاملة من أحدهما أو كليهما. .PP تكفي هذه القدرات لوصف الطرفيات الورقية وطرفيات \*(``glass\-tty\*(''. وهكذا تُوصف مبرقة الكاتب model 33 كالتالي: .PP .EX .\".in -2 .\".in +2 \s-133\||\|tty33\||\|tty\||\|model 33 teletype, bel=\*^G, cols#72, cr=\*^M, cud1=\*^J, hc, ind=\*^J, os,\s+1 .EE .PP بينما تُوصف Lear Siegler \s-1ADM\-3\s0 كالتالي: .PP .EX .nf .\".in -2 .\".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 .fi .EE .SS "السلاسل النصية ذات المعلمات" تُوصف عنونة المؤشر والسلاسل الأخرى التي تتطلب معلمات في الطرفية بواسطة قدرة سلسلة ذات معلمات، مع محارف هروب تشبه \fIprintf\fP مثل \fI%x\fP فيها. على سبيل المثال، لعنونة المؤشر، تُعطى القدرة \fBcup\fP، باستخدام معلمتين: السطر والعمود المراد العنونة إليهما. (تُرقم الأسطر والأعمدة بدءًا من الصفر وتشير إلى الشاشة المادية المرئية للمستخدم، وليس إلى أي ذاكرة غير مرئية). إذا كانت الطرفية تحتوي على عنونة مؤشر نسبية للذاكرة، فيمكن الإشارة إلى ذلك بواسطة \fBmrcup\fP. .PP تستخدم آلية المعلمات مكدسًا وأكواد \fB%\fP خاصة للتلاعب به. عادةً ما يقوم التسلسل بدفع إحدى المعلمات إلى المكدس ثم طباعتها بتنسيق ما. تعد الطباعة (مثل \*(``%d\*('') حالة خاصة. العمليات الأخرى، بما في ذلك \*(``%t\*(''، تسحب معاملها من المكدس. ويُلاحظ أن العمليات الأكثر تعقيدًا غالبًا ما تكون ضرورية، مثلاً في سلسلة \fBsgr\fP. .PP ترميزات \fB%\fP لها المعاني التالية: .TP 5 \fB%%\fP يخرج \*(``%\*('' .TP \fB%\fP\fI[[\fP:\fI]أعلام][عرض[.دقة]][\fP\fBdoxXs\fP\fI]\fP كما في \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\fP\fI[1\-9]\fP يدفع المعلمة رقم \fIi\fP .TP \fB%P\fP\fI[a\-z]\fP يضبط المتغير الديناميكي \fI[a\-z]\fP إلى \fIpop()\fP .TP \fB%g\fP\fI[a\-z]\fP يجلب المتغير الديناميكي \fI[a\-z]\fP ويدفعه .TP \fB%P\fP\fI[A\-Z]\fP يضبط المتغير الساكن \fI[a\-z]\fP إلى \fIpop()\fP .TP \fB%g\fP\fI[A\-Z]\fP يجلب المتغير الساكن \fI[a\-z]\fP ويدفعه .IP المصطلحان \*(``ساكن\*('' و \*(``ديناميكي\*('' مضللان. تاريخيًا، هما ببساطة مجموعتان مختلفتان من المتغيرات، لا تُعاد ضبط قيمهما بين الاستدعاءات لـ \fBtparm\fP(3X). ومع ذلك، فإن هذه الحقيقة غير موثقة في التطبيقات الأخرى. الاعتماد عليها سيؤثر سلبًا على قابلية النقل للتطبيقات الأخرى: .RS .bP دعمت curses في الإصدار SVr2 المتغيرات \fIالديناميكية\fP. تُضبط هذه المتغيرات فقط بواسطة عامل \fB%P\fP. سيؤدي استخدام \fB%g\fP لمتغير معين دون ضبطه أولاً بـ \fB%P\fP إلى نتائج غير متوقعة، لأن المتغيرات الديناميكية هي مصفوفة محلية غير مهيأة على المكدس في دالة \fBtparm\fP. .bP دعمت curses في الإصدار SVr3.2 المتغيرات \fIالساكنة\fP. وهي عبارة عن مصفوفة في هيكل \fI\%TERMINAL\fP (مُصرح عنها في \fBterm.h\fP)، وتُصفر آليًا عندما تخصص دالة \fBsetupterm\fP البيانات. .bP لم تقدم curses في الإصدار SVr4 أي تحسينات إضافية لميزة المتغيرات \fIالديناميكية/الساكنة\fP. .bP لا تفرق curses في Solaris XPG4 بين المتغيرات \fIالديناميكية\fP و \fIالساكنة\fP. فهما الشيء نفسه. ومثل curses في SVr4، لا تهيئ XPG4 هذه المتغيرات صراحة. .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، نطاق المتغيرات الديناميكية في \fI\%ncurses\fP هو ضمن الاستدعاء الحالي لـ \fBtparm\fP. استخدم المتغيرات الساكنة إذا كانت هناك حاجة لتخزين دائم. .RE .RE .TP \fB%\*'\fP\fIc\fP\fB\*'\fP ثابت محرف \fIc\fP .TP \fB%{\fP\fInn\fP\fB}\fP ثابت صحيح \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\*('' الحصرية): \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 إضافة 1 لأول معلمتين (لطرفيات 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's بأسلوب 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\fP أو \fBinfocmp\fP لرؤية بنية if\-then\-else. يمكن لبعض السلاسل، مثل \fBsgr\fP، أن تكون معقدة للغاية عند كتابتها في سطر واحد. يقوم الخيار \fB\-f\fP بتقسيم السلسلة إلى أسطر مع إزاحة الأجزاء. .PP العمليات الثنائية تكون بصيغة postfix مع المعاملات بالترتيب المعتاد. أي للحصول على x\-5 سيُستخدم \*(``%gx%{5}%\-\*(''. متغيرات \fB%P\fP و \fB%g\fP مستمرة عبر تقييمات سلاسل الهروب. .PP تأمل في HP2645، التي تحتاج للوصول إلى السطر 3 والعمود 12، إرسال \eE&a12c03Y مع حشو لمدة 6 ميلي ثانية. ترتيب الأسطر والأعمدة هنا مقلوب، وتُطبع الأسطر والأعمدة كرقمنين. يُعبر عن وصف الطرفية المقابل كالتالي: .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=\*(''، يُدفع المعلم الأول، وتُدفع قيمة ASCII للمسافة (32)، ثم يُجمعان (مما يدفع المجموع إلى المكدس بدلاً من القيمتين السابقتين) ويُخرج تلك القيمة كمحرف. ثم يُفعل الشيء نفسه للمعلم الثاني. من الممكن إجراء عمليات حسابية أكثر تعقيدًا باستخدام المكدس. .SS "حركات المؤشر" إذا كانت الطرفية تحتوي على طريقة سريعة لإعادة المؤشر لموضع البدء (home) (إلى الزاوية اليسرى العلوية القصوى من الشاشة) فيمكن إعطاء ذلك كـ \fBhome\fP؛ وبالمثل يمكن إعطاء طريقة سريعة للوصول إلى الزاوية اليسرى السفلية كـ \fBll\fP؛ قد يتضمن هذا الصعود بـ \fBcuu1\fP من موضع البدء، ولكن لا ينبغي للبرنامج أن يفعل ذلك بنفسه أبدًا (ما لم يفعل \fBll\fP ذلك) لأنه لا يمكنه وضع أي افتراض حول تأثير الصعود من موضع البدء. لاحظ أن موضع البدء هو نفسه العنونة إلى (0،0): إلى الزاوية اليسرى العلوية للشاشة، وليس للذاكرة. (بالتالي، لا يمكن استخدام تسلسل \eEH في طرفيات HP لـ \fBhome\fP). .PP إذا كانت الطرفية تحتوي على عنونة مؤشر مطلقة للسطر أو العمود، فيمكن إعطاء هذه كقدرات ذات معلمة واحدة \fBhpa\fP (موضع أفقي مطلق) و \fBvpa\fP (موضع عمودي مطلق). أحيانًا تكون هذه أقصر من التسلسل العام ذي المعلمتين (كما في hp2645) ويمكن استخدامها بدلاً من \fBcup\fP. وإذا وُجدت حركات محلية ذات معلمات (مثل التحرك \fIn\fP مسافة لليمين) فيمكن إعطاء هذه كـ \fBcud\fP و \fBcub\fP و \fBcuf\fP و \fBcuu\fP مع معلمة واحدة تشير لعدد المسافات المراد التحرك بها. هذه مفيدة أساسًا إذا كانت الطرفية لا تمتلك \fBcup\fP، مثل \s-1TEKTRONIX\s+1 4025. .PP إذا كانت الطرفية بحاجة لأن تكون في وضع خاص عند تشغيل برنامج يستخدم هذه القدرات، فيمكن إعطاء أكواد الدخول والخروج من هذا الوضع كـ \fBsmcup\fP و \fBrmcup\fP. يحدث هذا، على سبيل المثال، في طرفيات مثل Concept التي تحتوي على أكثر من صفحة ذاكرة. إذا كانت الطرفية تمتلك عنونة مؤشر نسبية للذاكرة فقط وليس نسبية للشاشة، فيجب تثبيت نافذة بحجم شاشة واحدة في الطرفية لتعمل عنونة المؤشر بشكل صحيح. يُستخدم هذا أيضًا لـ \s-1TEKTRONIX\s+1 4025، حيث يضبط \fBsmcup\fP محرف الأمر ليكون هو المحرف المستخدم بواسطة terminfo. إذا كان تسلسل \fBsmcup\fP لن يستعيد الشاشة بعد إخراج تسلسل \fBrmcup\fP (إلى الحالة التي كانت عليها قبل إخراج \fBrmcup\fP)، فحدد \fBnrrmc\fP. .SS الهوامش تسرد 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 "مسح المناطق" .\" إذا استطاعت الطرفية المسح من الموضع الحالي إلى نهاية السطر، مع ترك المؤشر مكانه، فيجب إعطاء هذا كـ \fBel\fP. وإذا استطاعت المسح من بداية السطر إلى الموضع الحالي شمولاً، مع ترك المؤشر مكانه، فيجب إعطاء هذا كـ \fBel1\fP. وإذا استطاعت الطرفية المسح من الموضع الحالي إلى نهاية العرض، فيجب إعطاء هذا كـ \fBed\fP. يُعرف \fBEd\fP فقط من العمود الأول للسطر. (وبالتالي، يمكن محاكاته بطلب حذف عدد كبير من الأسطر، إذا لم يتوفر \fBed\fP حقيقي). .SS "إدراج/حذف سطر والحركات العمودية" إذا استطاعت الطرفية فتح سطر فارغ جديد قبل السطر الذي يوجد فيه المؤشر، فيجب إعطاء هذا كـ \fBil1\fP؛ ويُفعل ذلك فقط من الموضع الأول للسطر. يجب أن يظهر المؤشر بعدها على السطر الفارغ الجديد. وإذا استطاعت الطرفية حذف السطر الذي يقف عليه المؤشر، فيجب إعطاء هذا كـ \fBdl1\fP؛ ويُفعل ذلك فقط من الموضع الأول في السطر المراد حذفه. نُسخ \fBil1\fP و \fBdl1\fP التي تأخذ معلمة واحدة وتدرج أو تحذف هذا العدد من الأسطر يمكن إعطاؤها كـ \fBil\fP و \fBdl\fP. .PP إذا كانت الطرفية تحتوي على منطقة تمرير قابلة للضبط (مثل vt100) فإن الأمر لضبط ذلك يمكن وصفه بقدرة \fBcsr\fP، والتي تأخذ معلمتين: السطرين العلوي والسفلي لمنطقة التمرير. ويا للأسف، يكون موضع المؤشر غير محدد بعد استخدام هذا الأمر. .PP من الممكن الحصول على تأثير إدراج أو حذف سطر باستخدام \fBcsr\fP على منطقة مختارة بشكل صحيح؛ قد يكون الأمري \fBsc\fP و \fBrc\fP (حفظ واستعادة المؤشر) مفيدين لضمان أن سلسلة الإدراج/الحذف الاصطناعية لا تحرك المؤشر. (لاحظ أن مكتبة \fB\%ncurses\fP(3X) تقوم بهذا الاصطناع آليًا، لذا لست بحاجة لصياغة سلاسل إدراج/حذف لمدخل يحتوي على \fBcsr\fP). .PP طريقة أخرى لبناء الإدراج والحذف قد تكون استخدام مزيج من الفهرس مع ميزة قفل الذاكرة الموجودة في بعض الطرفيات (مثل سلسلة HP\-700/90، التي تحتوي أيضًا على إدراج/حذف). .PP يمكن أيضًا إدراج أسطر في أعلى أو أسفل الشاشة باستخدام \fBri\fP أو \fBind\fP في العديد من الطرفيات التي لا تحتوي على إدراج/حذف سطر حقيقي، وغالبًا ما يكون ذلك أسرع حتى في الطرفيات التي تمتلك تلك الميزات. .PP يجب ضبط القيمة البوليانية \fBnon_dest_scroll_region\fP إذا كانت كل نافذة تمرير هي فعليًا منفذ عرض على لوحة بحجم الشاشة. لاختبار هذه القدرة، أنشئ منطقة تمرير في منتصف الشاشة، واكتب شيئًا في السطر السفلي، وانقل المؤشر إلى أعلى المنطقة، وقم بـ \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 إذا استطاعت الطرفية تعريف نافذة كجزء من الذاكرة، تؤثر عليها جميع الأوامر، فيجب إعطاء ذلك كسلسلة ذات معلمات \fBwind\fP. المعلمات الأربع هي أسطر البداية والنهاية في الذاكرة وأعمدة البداية والنهاية في الذاكرة، بهذا الترتيب. .PP إذا استطاعت الطرفية الاحتفاظ بذاكرة العرض بالأعلى، فيجب إعطاء القدرة \fBda\fP؛ وإذا أمكن الاحتفاظ بذاكرة العرض بالأسفل، فيجب إعطاء \fBdb\fP. تشير هذه إلى أن حذف سطر أو التمرير قد يرفع أسطرًا غير فارغة من الأسفل، أو أن التمرير للخلف بـ \fBri\fP قد ينزل أسطرًا غير فارغة. .SS "إدراج/حذف محرف" هناك نوعان رئيسان من النهايات الطرفية الذكية فيما يتعلق بإدراج/حذف المحارف والتي يمكن وصفها باستخدام \fIterminfo\fP. عمليات إدراج/حذف المحارف الأكثر شيوعًا تؤثر فقط على المحارف في السطر الحالي وتزيح المحارف خارج نهاية السطر بشكل صارم. نهايات طرفية أخرى، مثل Concept 100 و Perkin Elmer Owl، تفرق بين الفراغات المكتوبة وغير المكتوبة على الشاشة، حيث تزيح عند الإدراج أو الحذف فقط إلى فراغ غير مكتوب على الشاشة والذي إما يُحذف، أو يُوسع إلى فراغين غير مكتوبين. .PP يمكنك تحديد نوع النهاية الطرفية لديك عن طريق مسح الشاشة ثم كتابة نص مفصول بحركات المؤشر. اكتب \*(``abc\ \ \ \ def\*('' باستخدام حركات المؤشر المحلية (وليس المسافات) بين \*(``abc\*('' و \*(``def\*(''). ثم ضع المؤشر قبل \*(``abc\*('' واجعل النهاية الطرفية في وضع الإدراج. إذا أدت كتابة المحارف إلى إزاحة بقية السطر بشكل صارم وسقوط المحارف من النهاية، فإن نهايتك الطرفية لا تفرق بين الفراغات والمواقع غير المكتوبة. أما إذا انزاحت \*(``abc\*('' نحو \*(``def\*('' ثم تحركتا معًا حول نهاية السطر الحالي وإلى السطر التالي أثناء الإدراج، فلديك النوع الثاني من النهايات الطرفية، ويجب عليك إعطاء الميزة \fBin\fP، والتي ترمز إلى \*(``insert null\*('') (إدراج حرف فارغ). .PP على الرغم من أن هاتين صفتان منفصلتان منطقيًا (وضع إدراج لسطر واحد مقابل وضع إدراج لأسطر متعددة، والمعاملة الخاصة للمسافات غير المكتوبة) إلا أننا لم نرَ أي نهايات طرفية لا يمكن وصف وضع الإدراج فيها بصفة واحدة. .PP يمكن لـ Terminfo وصف كل من النهايات الطرفية التي تحتوي على وضع إدراج، والنهايات الطرفية التي ترسل \fBتسلسل\fP بسيطًا لفتح موضع فارغ في السطر الحالي. أعطِ \fBsmir\fP كـ \fBتسلسل\fP للدخول في وضع الإدراج. وأعطِ \fBrmir\fP كـ \fBتسلسل\fP للخروج من وضع الإدراج. والآن أعطِ \fBich1\fP لأي \fBتسلسل\fP يجب إرساله مباشرة قبل إرسال المحرف المراد إدراجه. معظم النهايات الطرفية ذات وضع الإدراج الحقيقي لن تعطي \fBich1\fP؛ بينما النهايات الطرفية التي ترسل \fBتسلسل\fP لفتح موضع شاشة يجب أن تعطيه هنا. .PP إذا كانت نهايتك الطرفية تدعم كليهما، فعادة ما يُفضل وضع الإدراج على \fBich1\fP. من الناحية التقنية، لا ينبغي إعطاء كليهما إلا إذا كانت النهاية الطرفية تتطلب استخدامهما معًا بالفعل. وبناءً على ذلك، ترتبك بعض التطبيقات التي لا تستخدم curses إذا وُجد كلاهما؛ والعرض هو تضاعف المحارف في التحديث باستخدام الإدراج. هذا المتطلب نادر الآن؛ فمعظم \fBتسلسلات\fP \fBich\fP لا تتطلب smir سابقًا، ومعظم أوضاع إدراج smir لا تتطلب \fBich1\fP قبل كل محرف. لذلك، يفترض \fBcurses\fP الجديد أن هذا هو الحال ويستخدم إما \fBrmir\fP/\fBsmir\fP أو \fBich\fP/\fBich1\fP حسب الاقتضاء (ولكن ليس كليهما). إذا كان عليك كتابة مدخلة لاستخدامها تحت curses الجديد لنهاية طرفية قديمة بما يكفي لتحتاج إلى كليهما، فضمن \fBتسلسلات\fP \fBrmir\fP/\fBsmir\fP في \fBich1\fP. .PP إذا كانت هناك حاجة إلى حشو (padding) بعد الإدراج، فأعطِ هذا كعدد من المللي ثانية في \fBip\fP (خيار سلسلة نصية). أي \fBتسلسل\fP آخر قد يلزم إرساله بعد إدراج محرف واحد يمكن إعطاؤه أيضًا في \fBip\fP. إذا كانت نهايتك الطرفية تحتاج إلى وضعها في \*(``وضع الإدراج\*('' ورمز خاص يسبق كل محرف مُدرج، فيمكن إعطاء كل من \fBsmir\fP/\fBrmir\fP و \fBich1\fP، وسيُستخدم كلاهما. ميزة \fBich\fP، مع معطى واحد \fIn\fP، ستكرر تأثيرات \fBich1\fP لـ \fIn\fP من المرات. .PP إذا كان الحشو ضروريًا بين المحارف المكتوبة أثناء عدم التواجد في وضع الإدراج، فأعطِ هذا كعدد مللي ثانية من الحشو في \fBrmp\fP. .PP من الضروري أحياناً التنقل أثناء التواجد في وضع الإدراج لحذف المحارف في نفس السطر (على سبيل المثال، إذا كانت هناك علامة جدولة بعد موضع الإدراج). إذا كانت طرفيتك تسمح بالحركة أثناء التواجد في وضع الإدراج، فيمكنك منح القدرة \fBmir\fP لتسريع الإدراج في هذه الحالة. سيؤثر حذف \fBmir\fP على السرعة فقط. يجب ألا تمتلك بعض الطرفيات (لا سيما طرفيات Datamedia) القدرة \fBmir\fP بسبب طريقة عمل وضع الإدراج فيها. .PP أخيرًا، يمكنك تحديد \fBdch1\fP لحذف محرف واحد، و \fBdch\fP مع معطى واحد، \fIn\fP، لحذف \fIn\fP من المحارف، ووضع الحذف عن طريق إعطاء \fBsmdc\fP و \fBrmdc\fP للدخول والخروج من وضع الحذف (أي وضع يجب وضع النهاية الطرفية فيه ليعمل \fBdch1\fP). .PP يمكن إعطاء أمر لمسح \fIn\fP من المحارف (ما يعادل إخراج \fIn\fP من الفراغات دون تحريك المؤشر) كـ \fBech\fP مع معطى واحد. .SS "الإبراز، والتسطير، والأجراس المرئية" إذا كانت نهايتك الطرفية تحتوي على نوع واحد أو أكثر من سمات العرض، فيمكن تمثيل هذه السمات بعدة طرق مختلفة. يجب عليك اختيار شكل عرض واحد كـ \fIوضع البروز\fP (standout mode)، ليمثل تنسيقًا جيدًا عالي التباين ومريحًا للعين لإبراز رسائل الخطأ وغيرها من منبهات الانتباه. (إذا كان لديك خيار، فإن الفيديو المعكوس مع نصف السطوع جيد، أو الفيديو المعكوس وحده). تُعطى \fBتسلسلات\fP الدخول والخروج من وضع البروز كـ \fBsmso\fP و \fBrmso\fP على التوالي. إذا كان الرمز المستخدم للتغيير إلى وضع البروز أو الخروج منه يترك مسافة فارغة واحدة أو حتى اثنتين على الشاشة، كما تفعل TVI 912 و Teleray 1061، فيجب إعطاء \fBxmc\fP لتحديد عدد المساحات المتروكة. .PP يمكن إعطاء رموز لبدء التسطير وإنهاء التسطير كـ \fBsmul\fP و \fBrmul\fP على التوالي. إذا كانت النهاية الطرفية تحتوي على رمز لتسطير المحرف الحالي وتحريك المؤشر مسافة واحدة إلى اليمين، مثل Microterm Mime، فيمكن إعطاء ذلك كـ \fBuc\fP. .PP تتضمن الميزات الأخرى للدخول في أوضاع إبراز متنوعة \fBblink\fP (وميض)، و \fBbold\fP (عريض أو ساطع للغاية)، و \fBdim\fP (خافت أو نصف ساطع)، و \fBinvis\fP (نص فارغ أو غير مرئي)، و \fBprot\fP (محمي)، و \fBrev\fP (فيديو معكوس)، و \fBsgr0\fP (إيقاف \fIجميع\fP أوضاع السمات)، و \fBsmacs\fP (الدخول في وضع مجموعة المحارف البديلة)، و \fBrmacs\fP (الخروج من وضع مجموعة المحارف البديلة). تشغيل أي من هذه الأوضاع بشكل فردي قد يؤدي أو لا يؤدي إلى إيقاف الأوضاع الأخرى. .PP إذا كان هناك \fBتسلسل\fP لضبط تركيبات عشوائية من الأوضاع، فيجب إعطاء ذلك كـ \fBsgr\fP (ضبط السمات)، مع أخذ 9 معطيات. كل معطى يكون إما صفرًا (0) أو غير صفري، حسب ما إذا كانت السمة المقابلة مفعلة أو معطلة. المعطيات التسعة هي، بالترتيب: البروز، التسطير، العكس، الوميض، الخفوت، التعريض، الفراغ، الحماية، مجموعة المحارف البديلة. لا يلزم دعم جميع الأوضاع بواسطة \fBsgr\fP، بل فقط تلك التي توجد لها أوامر سمات منفصلة مقابلة. .PP على سبيل المثال، يدعم DEC vt220 معظم الأوضاع: .PP .TS center; Lb Lb Lb L L L . معطى tparm السمة تسلسل الهروب _ لا شيء لا شيء \eE[0m p1 standout \eE[0;1;7m p2 التسطير \eE[0;4m p3 العكس \eE[0;7m p4 blink \eE[0;5m p5 dim غير متاح p6 bold \eE[0;1m p7 invis \eE[0;8m p8 الحماية غير مستخدم p9 مجموعة محارف بديلة \*^O (معطل) \*^N (مفعل) .TE .PP نبدأ كل \fBتسلسل\fP هروب بإيقاف أي أوضاع موجودة، حيث لا توجد طريقة سريعة لتحديد ما إذا كانت نشطة. تم ضبط البروز ليكون مزيجًا من العكس والتعريض. تحتوي النهاية الطرفية vt220 على وضع حماية، على الرغم من أنه لا يُستخدم بشكل شائع في sgr لأنه يحمي المحارف الموجودة على الشاشة من عمليات المسح الخاصة بالمضيف. يختلف وضع altcharset أيضًا في أنه إما \*^O أو \*^N، اعتمادًا على ما إذا كان معطلاً أو مفعلاً. إذا تم تشغيل جميع الأوضاع، فإن \fBالتسلسل\fP الناتج هو \eE[0;1;4;5;7;8m\*^N. .PP بعض \fBالتسلسلات\fP مشتركة بين أوضاع مختلفة. على سبيل المثال، يتم إخراج ;7 عندما يكون p1 أو p3 صحيحًا، أي إذا تم تشغيل وضعي البروز أو العكس. .PP كتابة \fBالتسلسلات\fP المذكورة أعلاه، مع تبعياتها، تعطي .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. أيضًا، تعتمد بعض التطبيقات على إعطاء sgr إذا أُعطي sgr0، ومع ذلك، لا تمتلك جميع مدخلات terminfo بالضرورة سلسلة sgr. العديد من مدخلات terminfo مشتقة من مدخلات termcap التي لا تحتوي على سلسلة sgr. العيب الوحيد لإضافة سلسلة sgr هو أن termcap يفترض أيضًا أن sgr0 لا يخرج من وضع مجموعة المحارف البديلة. .PP النهايات الطرفية التي تعاني من خلل \*(``magic cookie\*('' (\fBxmc\fP) تضع \*(``cookies\*('' خاصة عندما تتلقى \fBتسلسلات\fP ضبط الوضع، مما يؤثر على خوارزمية العرض بدلاً من وجود بتات إضافية لكل محرف. تخرج بعض النهايات الطرفية، مثل HP 2621، آليًا من وضع البروز عندما تنتقل إلى سطر جديد أو يتم توجيه المؤشر. البرامج التي تستخدم وضع البروز يجب أن تخرج من وضع البروز قبل تحريك المؤشر أو إرسال سطر جديد، ما لم تكن ميزة \fBmsgr\fP، التي تؤكد أنه من الآمن التحرك في وضع البروز، موجودة. .PP إذا كانت لدى النهاية الطرفية طريقة لوميض الشاشة للإشارة إلى وجود خطأ بهدوء (بديل للجرس) فيمكن إعطاء ذلك كـ \fBflash\fP؛ ويجب ألا يحرك المؤشر. .PP إذا كان المؤشر يحتاج إلى جعله أكثر وضوحًا من المعتاد عندما لا يكون في السطر السفلي (لجعل، على سبيل المثال، التسطير غير الوامض عبارة عن كتلة أو تسطير وامض يسهل العثور عليه) فأعطِ هذا \fBالتسلسل\fP كـ \fBcvvis\fP. إذا كانت هناك طريقة لجعل المؤشر غير مرئي تمامًا، فأعطِ ذلك كـ \fBcivis\fP. يجب إعطاء الميزة \fBcnorm\fP التي تلغي تأثيرات كلا هذين الوضعين. .PP إذا كانت نهايتك الطرفية تولد محارف مسطرة بشكل صحيح (دون الحاجة إلى رموز خاصة) على الرغم من أنها لا تقوم بالطباعة الفوقية (overstrike)، فيجب عليك إعطاء الميزة \fBul\fP. إذا كان محرف يطبع فوق آخر يترك كلا المحرفين على الشاشة، فحدد الميزة \fBos\fP. إذا كانت الطباعات الفوقية قابلة للمسح بفراغ، فيجب الإشارة إلى ذلك بإعطاء \fBeo\fP. .SS "لوحة المفاتيح الرقمية ومفاتيح الوظائف" إذا كانت النهاية الطرفية تحتوي على لوحة مفاتيح رقمية ترسل رموزًا عند الضغط على المفاتيح، فيمكن إعطاء هذه المعلومات. لاحظ أنه ليس من الممكن التعامل مع النهايات الطرفية حيث تعمل لوحة المفاتيح في الوضع المحلي فقط (ينطبق هذا، على سبيل المثال، على مفاتيح HP 2621 غير المزاحة). إذا كان من الممكن ضبط لوحة المفاتيح للإرسال أو عدم الإرسال، فأعطِ هذه الرموز كـ \fBsmkx\fP و \fBrmkx\fP. وإلا فيُفترض أن لوحة المفاتيح ترسل دائمًا. .PP الرموز المرسلة بواسطة مفاتيح السهم الأيسر، والسهم الأيمن، والسهم للأعلى، والسهم للأسفل، ومفاتيح البداية (home) يمكن إعطاؤها كـ \fBkcub1 و kcuf1 و kcuu1 و kcud1 و \fPو\fB khome\fP على التوالي. إذا كانت هناك مفاتيح وظائف مثل f0، f1، ...، f10، فإن الرموز التي ترسلها يمكن إعطاؤها كـ \fBkf0، kf1، ...، kf10\fP. إذا كانت لهذه المفاتيح \fBلصائق\fP غير المبدئية f0 عبر f10، فيمكن إعطاء الـ \fBلصائق\fP كـ \fBlf0، lf1، ...، lf10\fP. .PP الرموز التي ترسلها مفاتيح خاصة أخرى معينة يمكن إعطاؤها: .bP \fBkll\fP (نهاية الصفحة)، .bP \fBkbs\fP (مفتاح الرجوع)، .bP \fBktbc\fP (مسح جميع علامات الجدولة)، .bP \fBkctab\fP (مسح علامة الجدولة في هذا العمود)، .bP \fBkclr\fP (مفتاح مسح الشاشة أو الحذف)، .bP \fBkdch1\fP (حذف محرف)، .bP \fBkdl1\fP (حذف سطر)، .bP \fBkrmir\fP (الخروج من وضع الإدراج)، .bP \fBkel\fP (مسح حتى نهاية السطر)، .bP \fBked\fP (مسح حتى نهاية الشاشة)، .bP \fBkich1\fP (إدراج محرف أو الدخول في وضع الإدراج)، .bP \fBkil1\fP (إدراج سطر)، .bP \fBknp\fP (الصفحة التالية)، .bP \fBkpp\fP (الصفحة السابقة)، .bP \fBkind\fP (التمرير للأمام/للأسفل)، .bP \fBkri\fP (التمرير للخلف/للأعلى)، .bP \fBkhts\fP (ضبط علامة جدولة في هذا العمود). .PP بالإضافة إلى ذلك، إذا كانت لوحة المفاتيح تحتوي على مصفوفة 3 في 3 من المفاتيح بما في ذلك مفاتيح الأسهم الأربعة، فيمكن إعطاء المفاتيح الخمسة الأخرى كـ \fBka1\fP و \fBka3\fP و \fBkb2\fP و \fBkc1\fP و \fBkc3\fP. هذه المفاتيح مفيدة عندما تكون هناك حاجة إلى تأثيرات لوحة اتجاهية 3 في 3. .PP السلاسل النصية لبرمجة مفاتيح الوظائف يمكن إعطاؤها كـ \fBpfkey\fP و \fBpfloc\fP و \fBpfx\fP. يجب تحديد سلسلة لبرمجة \fBلصائق\fP الشاشة كـ \fBpln\fP. تأخذ كل سلسلة من هذه السلاسل معطيين: رقم مفتاح الوظيفة المراد برمجته (من 0 إلى 10) والسلسلة المراد برمجته بها. أرقام مفاتيح الوظائف خارج هذا النطاق قد تبرمج مفاتيح غير محددة بطريقة تعتمد على النهاية الطرفية. الفرق بين الميزات هو أن \fBpfkey\fP يجعل الضغط على المفتاح المعطى مماثلاً لكتابة المستخدم للسلسلة المعطاة؛ بينما \fBpfloc\fP يجعل السلسلة تُنفذ بواسطة النهاية الطرفية محليًا؛ و \fBpfx\fP يجعل السلسلة تُرسل إلى الـ حاسوب. .PP تحدد الميزات \fBnlab\fP و \fBlw\fP و \fBlh\fP عدد الـ \fBلصائق\fP القابلة للبرمجة على الشاشة وعرضها وارتفاعها. إذا كانت هناك أوامر لتشغيل الـ \fBلصائق\fP وإيقافها، فأعطها في \fBsmln\fP و \fBrmln\fP. يتم إخراج \fBsmln\fP عادةً بعد \fBتسلسل\fP pln واحد أو أكثر للتأكد من أن التغيير قد أصبح مرئيًا. .SS "علامات الجدولة والبدء" تُستخدم ميزات قليلة فقط لإدارة علامات توقف الجدولة. .bP إذا كانت النهاية الطرفية تحتوي على علامات جدولة عتادية، فحدد \fBتسلسل\fP المحارف الذي ينتقل إلى علامة التوقف التالية كقيمة لميزة السلسلة \fBtab\fP (\fBht\fP) (عادة Control+I). .bP حدد \fBتسلسل\fP محارف يرجع (يتحرك يسارًا) إلى علامة توقف الجدولة السابقة كقيمة لميزة السلسلة \fB\%back_tab\fP (\fBcbt\fP). .IP حسب العرف، إذا ضُبطت أوضاع النهاية الطرفية بحيث تُوسع علامات الجدولة بواسطة المضيف بدلاً من النهاية الطرفية، فلا ينبغي للتطبيقات استخدام ميزات \fBtab\fP (\fBht\fP) أو \fB\%back_tab\fP (\fBcbt\fP) حتى لو كانت موجودة، لأن المستخدم قد لا يكون قد ضبط علامات توقف الجدولة بشكل صحيح. .bP إذا كانت النهاية الطرفية تحتوي على علامات توقف جدولة عتادية تُضبط عند كل \fIn\fP من خلايا المحارف عند تشغيل النهاية الطرفية، فحدد \fIn\fP كقيمة للميزة العددية \fB\%init_tabs\fP (\fBit\fP)\&. .IP يفسر الأمرا \fB\%tset\fP و \*(``\fB\%tput\fP \fBinit\fP\*('' وجود ميزة \fB\%init_tabs\fP (\fBit\fP) على أنها تعني أن النهاية الطرفية مسؤولة عن توسيع علامات الجدولة بالإضافة إلى أنها تعليمات لضبط علامات توقف الجدولة على قيمتها. إذا كانت النهاية الطرفية تحتوي على علامات توقف جدولة يمكن حفظها في ذاكرة غير متطايرة، فيمكن لوصف نوع \fI\%term\%info\fP الخاص بها افتراض أنها مضبوطة بشكل صحيح. .PP تتضمن الميزات الأخرى .bP \fBis1\fP و \fBis2\fP و \fBis3\fP، وهي سلاسل بدء للنهاية الطرفية، .bP \fBiprog\fP، وهو مسار برنامج سيُشغل لبدء النهاية الطرفية، .bP و \fBif\fP، وهو اسم ملف يحتوي على سلاسل بدء طويلة. .PP يُتوقع من هذه السلاسل ضبط النهاية الطرفية في أوضاع متوافقة مع بقية وصف terminfo. تُرسل عادةً إلى النهاية الطرفية، بواسطة خيار \fIinit\fP لبرنامج \fBtput\fP، في كل مرة يسجل فيها المستخدم دخوله. وستُطبع بالترتيب التالي: .RS .TP شغل البرنامج \fBiprog\fP .TP أخرج .br \fBis1\fP و .br \fBis2\fP .TP اضبط الهوامش باستخدام \fBmgc\fP أو .br \fBsmglp\fP و \fBsmgrp\fP أو .br \fBsmgl\fP و \fBsmgr\fP .TP اضبط علامات الجدولة باستخدام \fBtbc\fP و \fBhts\fP .TP اطبع الملف \fBif\fP .TP وفي النهاية أخرج \fBis3\fP. .RE .PP يتم إجراء معظم عمليات البدء باستخدام \fBis2\fP. يمكن ضبط أوضاع النهاية الطرفية الخاصة دون تكرار السلاسل بوضع \fBالتسلسلات\fP المشتركة في \fBis2\fP والحالات الخاصة في \fBis1\fP و \fBis3\fP. .PP مجموعة من \fBالتسلسلات\fP التي تقوم بإعادة ضبط أقوى من حالة غير معروفة تمامًا يمكن إعطاؤها كـ \fBrs1\fP و \fBrs2\fP و \fBrf\fP و \fBrs3\fP، بشكل مماثل لـ \fBis1\fP و \fBis2\fP و \fBif\fP و \fBis3\fP على التوالي. تُخرج هذه السلاسل بواسطة خيار \fIreset\fP لبرنامج \fBtput\fP، أو بواسطة برنامج \fBreset\fP (وهو اسم مستعار لـ \fBtset\fP)، والذي يُستخدم عندما تصل النهاية الطرفية إلى حالة عالقة. توضع الأوامر عادةً في \fBrs1\fP و \fBrs2\fP و \fBrs3\fP و \fBrf\fP فقط إذا كانت تنتج تأثيرات مزعجة على الشاشة وليست ضرورية عند تسجيل الدخول. على سبيل المثال، الأمر لضبط vt100 في وضع 80 عمودًا سيكون عادةً جزءًا من \fBis2\fP، ولكنه يسبب خللاً مزعجًا في الشاشة ولا يلزم عادةً لأن النهاية الطرفية تكون بالفعل في وضع 80 عمودًا. .PP يكتب برنامج \fBreset\fP سلاسل تتضمن \fBiprog\fP، إلخ، بنفس الترتيب الذي يتبعه برنامج \fIinit\fP، مستخدمًا \fBrs1\fP، إلخ، بدلاً من \fBis1\fP، إلخ. وإذا كانت أي من سلاسل ميزة إعادة الضبط \fBrs1\fP أو \fBrs2\fP أو \fBrs3\fP أو \fBrf\fP مفقودة، فإن برنامج \fBreset\fP يعود إلى ميزة سلسلة البدء المقابلة. .PP إذا كانت هناك أوامر لضبط ومسح علامات توقف الجدولة، فيمكن إعطاؤها كـ \fBtbc\fP (مسح جميع علامات توقف الجدولة) و \fBhts\fP (ضبط علامة توقف جدولة في العمود الحالي لكل سطر). إذا كانت هناك حاجة إلى \fBتسلسل\fP أكثر تعقيدًا لضبط الجدولة مما يمكن وصفه بهذا، فيمكن وضع \fBالتسلسل\fP في \fBis2\fP أو \fBif\fP. .PP يستخدم أمر \fBtput reset\fP نفس سلاسل الميزات التي يستخدمها أمر \fBreset\fP، على الرغم من أن البرنامجين (\fBtput\fP و \fBreset\fP) يوفران خيارات \fBسطر أوامر\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 "التأخيرات والحشو" العديد من النهايات الطرفية القديمة والبطيئة لا تدعم مصافحة XON/XOFF أو DTR، بما في ذلك نهايات النسخ الورقي وبعض شاشات CRT العتيقة جدًا (بما في ذلك، على سبيل المثال، DEC VT100s). قد تتطلب هذه محارف حشو بعد حركات معينة للمؤشر وتغييرات الشاشة. .PP إذا كانت النهاية الطرفية تستخدم مصافحة xon/xoff للتحكم في التدفق (أي أنها ترسل آليًا \*^S إلى المضيف عندما تقترب عوازل الإدخال الخاصة بها من الامتلاء)، فاضبط \fBxon\fP. تعمل هذه الميزة على منع إصدار الحشو. يمكنك أيضًا ضبطها لأجهزة الكونسول المخططة في الذاكرة بشكل فعال والتي ليس لها حد للسرعة. يجب أن تظل معلومات الحشو مضمنة حتى تتمكن الروتينات من اتخاذ قرارات أفضل بشأن التكاليف النسبية، ولكن محارف الحشو الفعلية لن تُرسل. .PP إذا أُعطيت \fBpb\fP (معدل بود للحشو)، فسيُكبح الحشو عند معدلات بود أقل من قيمة \fBpb\fP. إذا لم تكن للمدخلة معدل بود للحشو، فإن ما إذا كان الحشو سيُصدر أم لا يُتحكم فيه بالكامل بواسطة \fBxon\fP. .PP إذا كانت النهاية الطرفية تتطلب محرفًا غير المحرف الخالي (صفر) كحشو، فيمكن إعطاء ذلك كـ \fBpad\fP. يتم استخدام المحرف الأول فقط من سلسلة \fBpad\fP. .SS "أسطر الحالة" تحتوي بعض النهايات الطرفية على \*(``سطر حالة\*('' إضافي لا تستخدمه البرمجيات عادةً (وبالتالي لا يُحسب في ميزة \fBlines\fP الخاصة بالنهاية الطرفية). .PP أبسط حالة هي سطر الحالة الذي يمكن توجيه المؤشر إليه ولكنه ليس جزءًا من منطقة التمرير الرئيسة على الشاشة؛ يمتلك Heathkit H19 سطر حالة من هذا النوع، وكذلك VT100 المكون من 24 سطرًا مع منطقة تمرير من 23 سطرًا ضُبطت عند البدء. يُشار إلى هذه الحالة بميزة \fBhs\fP. .PP تحتاج بعض النهايات الطرفية ذات أسطر الحالة إلى \fBتسلسلات\fP خاصة للوصول إلى سطر الحالة. يمكن التعبير عن ذلك كسلسلة مع معطى واحد \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 "رسوميات الخطوط" تمتلك العديد من الطرفيات مجموعات محارف بديلة مفيدة لرسم النماذج. توفر 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 \*~ خط المسح 1 ACS_S3 0x70 p \- خط المسح 3 ACS_HLINE 0x71 q \- خط أفقي ACS_S7 0x72 r \- خط المسح 7 ACS_S9 0x73 s \&_ خط المسح 9 ACS_LTEE 0x74 t + تي تشير لليمين ACS_RTEE 0x75 u + تي تشير لليسار ACS_BTEE 0x76 v + تي تشير للأعلى ACS_TTEE 0x77 w + تي تشير للأسفل ACS_VLINE 0x78 x | خط عمودي ACS_LEQUAL 0x79 y < أقل من أو يساوي ACS_GEQUAL 0x7a z > أكبر من أو يساوي ACS_PI 0x7b { * باي (pi) اليونانية ACS_NEQUAL 0x7c | ! لا يساوي ACS_STERLING 0x7d } f علامة الجنيه الإسترليني ACS_BULLET 0x7e \*~ o نقطة تعداد .TE .PP تنطبق بضع ملاحظات على الجدول نفسه: .bP تذكر X/Open Curses بشكل غير صحيح أن تعيين \fIlantern\fP هو حرف \*(``I\*('' كبير بالرغم من أن تنفيذيّات Unix تستخدم تعيين الحرف الصغير \*(``i\*('' . .bP نفذت DEC VT100 الرسوميات باستخدام ميزة مجموعة المحارف البديلة، عبر تبديل \fImodes\fP مؤقتًا وإرسال محارف في النطاق من 0x60 (96) إلى 0x7e (126) (عمود \fBacsc Value\fP في الجدول). .bP أضافت طرفية AT&T محارف رسومية خارج ذلك النطاق. .IP بعض المحارف ضمن النطاق لا تطابق VT100؛ من المفترض أنها استُخدمت في طرفية AT&T: حيث يحل \fIboard of squares\fP محل رمز \fInewline\fP الخاص بـ VT100، بينما يحل \fIlantern symbol\fP محل رمز \fIvertical tab\fP الخاص بـ VT100. رموز VT100 الأخرى لمحارف التحكم (\fIhorizontal tab\fP، و \fIcarriage return\fP و \fIline\-feed\fP) لم تُستخدم (أو يُعاد استخدامها) في curses. .PP أفضل طريقة لتعريف مجموعة رسوميات لجهاز جديد هي إضافة عمود إلى نسخة من هذا الجدول لطرفيتك، مع ذكر المحرف الذي (عند إرساله بين تبديلات \fBsmacs\fP/\fBrmacs\fP) سَيُصيّر كرسم مقابل. ثم اقرأ أزواج محارف VT100/طرفيتك من اليمين إلى اليسار على التوالي؛ لتصبح هذه هي سلسلة ACSC. .SS "التعامل مع الألوان" تتحكم دوال مكتبة \fIcurses\fP المسماة \fB\%init_pair\fP و \fB\%init_color\fP في \fIأزواج الألوان\fP و \fIالألوان\fP (قيم الألوان أو فهارسها، مثل \*(``1=أحمر\*('') المناقشة في هذا القسم (انظر \fB\%curs_color\fP(3X) للمزيد من التفاصيل حول هذه الدوال والدوال ذات الصلة). .PP تتبع معظم الطرفيات الملونة نهج \*(``Tektronix\-like\*('' أو \*(``HP\-like\*('' في إدارة الألوان. .bP تُعرف الطرفيات من نوع \fITektronix\-like\fP مجموعة من \fIn\fP من الألوان (حيث \fIn\fP هي 8 عادةً)، ويمكنها تغيير ألوان المقدمة والخلفية لخلية المحرف بشكل مستقل، ومزجها في \fIn\fP\(mu\fIn\fP زوج لوني. الطرفيات القياسية ANSI هي من نوع Tektronix\-like. .bP في طرفيات \fIHP\-like\fP، يجب على المستخدم ضبط كل زوج لوني على حدة؛ فالمقدمة والخلفية لا يمكن تغييرهما بشكل مستقل. يمكن ضبط ما يصل إلى \fIm\fP من أزواج الألوان من أصل 2\(mu\fIm\fP لون مختلف. .PP بعض قدرات إدارة الألوان الأساسية مستقلة عن طريقة ترميز الألوان. تحدد القدرات الرقمية \fB\%max_colors\fP (\fB\%colors\fP) و \fB\%max_pairs\fP (\fB\%pairs\fP) الحد الأقصى لعدد الألوان وأزواج الألوان التي يمكن للجهاز عرضها في آن واحد. تقوم قدرة السلسلة النصية \fB\%orig_pair\fP (\fB\%op\fP) (\*(``الزوج الأصلي\*('') بإعادة تعيين ألوان المقدمة والخلفية إلى قيمها المبدئية للطرفية. أما قدرة السلسلة \fB\%orig_colors\fP (\fB\%oc\fP) (\*(``الألوان الأصلية\*('') فتعيد تعيين جميع الألوان أو أزواج الألوان إلى قيمها المبدئية للطرفية. تقوم بعض أنواع الطرفيات (بما في ذلك العديد من محاكيات طرفية الحاسوب الشخصي) بمسح مساحات الشاشة بلون الخلفية الحالي بدلاً من الخلفية المبدئية عند التشغيل؛ ويجب على هذه الطرفيات التصريح عن القدرة المنطقية \fB\%back_color_erase\fP (\fBbce\fP). .PP بينما تعمل مكتبة \fIcurses\fP باستخدام \fIأزواج الألوان\fP (مما يعكس عدم قدرة بعض الأجهزة على ضبط ألوان المقدمة والخلفية بشكل مستقل)، توجد قدرات منفصلة لضبط هذه الميزات: .bP لتغيير لون المقدمة أو الخلفية الحالي على طرفية من نوع Tektronix، استخدم \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 وسيطًا رقميًا واحدًا. تُعرف قيم الوسائط 0\-7 لـ \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 في طرفية من نوع HP، استخدم \fBscp\fP مع وسيط رقم الزوج اللوني لضبط أي زوج لوني هو الحالي. .PP تسمح بعض الطرفيات بتعديل \fIقيم الألوان\fP: .bP في طرفية من نوع Tektronix، قد توجد القدرة \fBccc\fP للإشارة إلى إمكانية تعديل الألوان. إذا كان الأمر كذلك، فإن القدرة \fBinitc\fP ستأخذ رقم اللون (0 إلى \fBcolors\fP \- 1) وثلاثة وسائط إضافية تصف اللون. يتم تفسير هذه الوسائط الثلاثة مبدئيًا كقيم RGB (أحمر، أخضر، أزرق). إذا وجدت القدرة المنطقية \fBhls\fP، فيتم تفسيرها بدلاً من ذلك كفهارس HLS (صبغة، إضاءة، تشبع). تعتمد النطاقات على نوع الطرفية. .bP في طرفية من نوع HP، قد توفر \fBinitp\fP قدرة لتغيير قيمة زوج لوني. وتأخذ سبعة وسائط؛ رقم الزوج اللوني (0 إلى \fBmax_pairs\fP \- 1)، وثلاثيتين تصفان أولاً ألوان الخلفية ثم ألوان المقدمة. يجب أن تكون هذه الوسائط (أحمر، أخضر، أزرق) أو (صبغة، إضاءة، تشبع) اعتمادًا على \fBhls\fP. .PP في بعض الطرفيات الملونة، تتعارض الألوان مع ميزات الإبراز. يمكنك تسجيل هذه التعارضات باستخدام القدرة \fBncv\fP. هذا قناع بتات (bit mask) للسمات التي يجب عدم استخدامها عند تفعيل الألوان. التوافق مع السمات التي تفهمها مكتبة \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 الشخصية، تتعارض سمة التسطير مع اللون الأزرق للمقدمة وتكون غير متاحة في وضع الألوان. يجب أن يكون لهذه الوحدات قدرة \fBncv\fP بقيمة 2. .PP لا تفعل مكتبة curses في إصدار SVr4 شيئًا بـ \fBncv\fP، بينما تتعرف عليها \fI\%ncurses\fP وتحسن المخرجات لصالح الألوان. .SS متفرقات إذا كانت الطرفية تتطلب محرفًا آخر غير المحرف الصفري (null) كحشوة، فيمكن توفيره كـ pad. يتم استخدام المحرف الأول فقط من سلسلة الحشوة. إذا لم يكن للطرفية محرف حشوة، فحدد npc. لاحظ أن \fI\%ncurses\fP تنفذ المتغير \fBPC\fP المتوافق مع termcap؛ وبالرغم من أن التطبيق قد يضبط هذه القيمة لشيء آخر غير الصفر، إلا أن \fI\%ncurses\fP ستختبر \fBnpc\fP أولاً وتستخدم napms إذا لم يكن للطرفية محرف حشوة. .PP إذا كانت الطرفية تستطيع التحرك للأعلى أو للأسفل بمقدار نصف سطر، فيمكن الإشارة إلى ذلك بـ \fBhu\fP (نصف سطر للأعلى) و \fBhd\fP (نصف سطر للأسفل). هذا مفيد بشكل رئيس للأسس والمنخفضات في الطرفيات الورقية. إذا كانت الطرفية الورقية تستطيع الانتقال إلى الصفحة التالية (تغذية النموذج)، فأعطِ ذلك كـ \fBff\fP (عادةً control/L). .PP إذا كان هناك أمر لتكرار محرف معين لعدد معين من المرات (لتوفير وقت إرسال عدد كبير من المحارف المتطابقة)، فيمكن الإشارة إلى ذلك باستخدام السلسلة ذات المعاملات \fBrep\fP. المعامل الأول هو المحرف المطلوب تكراره والثاني هو عدد مرات تكراره. وبالتالي، فإن tparm(repeat_char, \*'x\*', 10) يعادل \*(``xxxxxxxxxx\*(''. .PP إذا كانت للطرفية محرف أوامر قابل للضبط، مثل \s-1TEKTRONIX\s+1 4025، فيمكن الإشارة إلى ذلك بـ \fBcmdch\fP. يتم اختيار محرف أوامر نموذجي يستخدم في جميع القدرات. يُعطى هذا المحرف في القدرة \fBcmdch\fP للتعريف به. الاتفاق التالي مدعوم في بعض أنظمة يونكس: يتم البحث في البيئة عن متغير \fBCC\fP، وإذا وُجد، يتم استبدال جميع حالات ظهور المحرف النموذجي بالمحرف الموجود في متغير البيئة. .PP أوصاف الطرفيات التي لا تمثل نوعًا محددًا من الطرفيات المعروفة، مثل \fIswitch\fP و \fIdialup\fP و \fIpatch\fP و \fInetwork\fP، يجب أن تتضمن القدرة \fBgn\fP (عامة) حتى تتمكن البرامج من الاعتراض بأنها لا تعرف كيفية التحدث إلى الطرفية. (لا تنطبق هذه القدرة على أوصاف الطرفيات \fIالافتراضية\fP التي تُعرف تسلسلات الهروب الخاصة بها). .PP إذا كانت الطرفية تحتوي على \*(``مفتاح ميتا\*('' يعمل كمفتاح تبديل (shift)، بحيث يضبط البت الثامن لأي محرف يتم إرساله، فيمكن الإشارة إلى هذه الحقيقة بـ \fBkm\fP. وإلا، فستفترض البرمجيات أن البت الثامن هو بت تماثل (parity) وسيتم مسحه عادةً. إذا وجدت سلاسل لتشغيل وإيقاف \*(``وضع ميتا\*('' هذا، فيمكن إعطاؤها كـ \fBsmm\fP و \fBrmm\fP. .PP إذا كانت الطرفية تحتوي على عدد من أسطر الذاكرة أكثر مما يتسع له الشاشة في وقت واحد، فيمكن الإشارة إلى عدد أسطر الذاكرة بـ \fBlm\fP. وتشير القيمة \fBlm\fP#0 إلى أن عدد الأسطر غير ثابت، ولكن لا يزال هناك ذاكرة أكبر مما يتسع له الشاشة. .PP إذا كانت الطرفية واحدة من تلك المدعومة بواسطة بروتوكول طرفية يونكس الافتراضية، فيمكن إعطاء رقم الطرفية كـ \fBvt\fP. .PP سلاسل نسخ الوسائط التي تتحكم في طابعة مساعدة متصلة بالطرفية يمكن إعطاؤها كـ \fBmc0\fP: لطباعة محتويات الشاشة، و \fBmc4\fP: لإيقاف الطابعة، و \fBmc5\fP: لتشغيل الطابعة. عندما تكون الطابعة قيد التشغيل، سيتم إرسال جميع النصوص المرسلة إلى الطرفية إلى الطابعة. ومن غير المحدد ما إذا كان النص سيُعرض أيضًا على شاشة الطرفية عندما تكون الطابعة قيد التشغيل. هناك تنويع \fBmc5p\fP يأخذ معاملًا واحدًا، ويترك الطابعة تعمل لعدد من المحارف يساوي قيمة المعامل، ثم يغلق الطابعة. يجب ألا يتجاوز المعامل 255. يتم تمرير جميع النصوص، بما في ذلك \fBmc4\fP، بشفافية إلى الطابعة أثناء تفعيل \fBmc5p\fP. .SS "العلل والعيوب التصميمية" طرفيات Hazeltine، التي لا تسمح بعرض محارف \*(``\*~\*(''، يجب أن تشير إلى \fBhz\fP. .PP الطرفيات التي تتجاهل تغذية السطر فورًا بعد التفاف \fBam\fP، مثل Concept و vt100، يجب أن تشير إلى \fBxenl\fP. .PP إذا كان \fBel\fP مطلوبًا للتخلص من وضع الإبراز (standout) (بدلاً من مجرد كتابة نص عادي فوقه)، فيجب إعطاء \fBxhp\fP. .PP طرفيات Teleray، حيث تحول علامات التبويب جميع المحارف التي يتم المرور فوقها إلى فراغات، يجب أن تشير إلى \fBxt\fP (علامات تبويب مدمرة). ملاحظة: المتغير الذي يشير إلى ذلك هو الآن \*(``dest_tabs_magic_smso\*('')؛ في الإصدارات الأقدم، كان teleray_glitch. تُفهم هذه العلة أيضًا على أنها تعني عدم إمكانية وضع المؤشر فوق \*(``magic cookie\*('')، وأنه لمسح وضع الإبراز، من الضروري بدلاً من ذلك استخدام حذف وإدراج السطر. يتجاهل تنفيذ \fI\%ncurses\fP هذه العلة. .PP طرفية Beehive Superbee، التي تعجز عن إرسال محارف الهروب أو control/C بشكل صحيح، لديها \fBxsb\fP، مما يشير إلى أن مفتاح f1 يُستخدم للهروب و f2 لـ control/C. (بعض أجهزة Superbee فقط تعاني من هذه المشكلة، اعتمادًا على ذاكرة القراءة فقط ROM). لاحظ أنه في إصدارات terminfo الأقدم، كانت هذه القدرة تسمى \*(``beehive_glitch\*('')؛ وهي تسمى الآن \*(``no_esc_ctl_c\*(''). .PP يمكن تصحيح مشاكل الطرفيات المحددة الأخرى عن طريق إضافة المزيد من القدرات بالصيغة \fBx\fP\fIx\fP. .SS "مزالق المدخلات الطويلة" من المستبعد أن تشكل مدخلات terminfo الطويلة مشكلة؛ فحتى الآن لم يقترب أي مدخل من الحد الأقصى لجدول السلاسل في terminfo والبالغ 4096 بايت. لسوء الحظ، ترجمات termcap محدودة بصرامة أكبر (إلى 1023 بايت)، لذا فإن ترجمات termcap لمدخلات terminfo الطويلة يمكن أن تسبب مشاكل. .PP توجه صفحات الدليل للإصدار 4.3BSD والإصدارات الأقدم من \fBtgetent\fP المستخدم لتخصيص ذاكرة وسيطة بسعة 1024 بايت لمدخل termcap. يتم إنهاء المدخل بمحرف صفري (null) بواسطة مكتبة termcap، مما يجعل الحد الأقصى الآمن لطول مدخل termcap هو 1k\-1 (أي 1023) بايت. اعتمادًا على ما يفعله التطبيق ومكتبة termcap المستخدمة، ومكان نوع الطرفية التي يبحث عنها \fBtgetent\fP في ملف termcap، يمكن أن تحدث عدة أشياء سيئة: .bP بعض مكتبات termcap تطبع رسالة تحذير، .bP بعضها يخرج إذا وجد مدخلاً أطول من 1023 بايت، .bP بعضها لا يخرج ولا يحذر، ولا يفعل شيئًا مفيدًا، و .bP بعضها يكتفي ببتر المدخلات إلى 1023 بايت. .PP تخصص بعض البرامج التطبيقية أكثر من 1K الموصى بها لمدخل termcap؛ والبعض الآخر لا يفعل. .PP كل مدخل termcap له حجمان مهمان مرتبطان به: قبل توسيع \*(``tc\*('')، وبعد توسيع \*(``tc\*('') . و \*(``tc\*('') هي القدرة التي تضيف مدخل termcap آخر إلى نهاية المدخل الحالي، لإضافة قدراته. إذا كان مدخل termcap لا يستخدم قدرة \*(``tc\*('')، فإن الطولين بالطبع يكونان متماثلين. .PP طول \*(``قبل توسيع tc\*('') هو الأكثر أهمية، لأنه يؤثر على أكثر من مجرد مستخدمي تلك الطرفية المعينة. هذا هو طول المدخل كما هو موجود في /etc/termcap، مطروحًا منه أزواج (الشرطة المائلة العكسية\-السطر الجديد)، التي يحذفها \fBtgetent\fP أثناء قراءته. تحذف بعض مكتبات termcap السطر الجديد النهائي أيضًا (بينما لا تفعل ذلك مكتبة GNU termcap). الآن لنفترض: .bP أن مدخل termcap قبل التوسيع أطول من 1023 بايت، .bP وأن التطبيق خصص فقط ذاكرة وسيطة بسعة 1k، .bP وأن مكتبة termcap (مثل تلك الموجودة في BSD/OS 1.1 و GNU) تقرأ المدخل بالكامل في الذاكرة الوسيطة، بغض النظر عن طوله، لترى ما إذا كان هو المدخل الذي تريده، .bP وأن \fBtgetent\fP يبحث عن نوع طرفية هو إما هذا المدخل الطويل، أو يظهر في ملف termcap بعد المدخل الطويل، أو لا يظهر في الملف على الإطلاق (بحيث يضطر \fBtgetent\fP للبحث في ملف termcap بالكامل). .PP حينئذٍ سيقوم \fBtgetent\fP بالكتابة فوق الذاكرة، وربما فوق المكدس (stack) الخاص به، وعلى الأرجح سينهار البرنامج ويفرغ الذاكرة (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 الذي يزيد طوله عن 1023 بايت أن يسبب، في توليفات مختلفة من مكتبات termcap والتطبيقات، انهيار البرنامج، أو صدور تحذيرات، أو تشغيلًا غير صحيح. إذا كان طويلاً جدًا حتى قبل توسيع \*(``tc\*('')، فسيكون له هذا التأثير حتى لمستخدمي أنواع طرفيات أخرى وللمستخدمين الذين لا يملك متغير \fITERM\fP لديهم مدخل termcap. .PP عندما يكون في وضع \-C (الترجمة إلى termcap)، يُصدر تنفيذ \fI\%ncurses\fP للأداة \fBtic\fP(1M) رسائل تحذير عندما يكون طول ترجمة termcap قبل توسيع tc طويلاً جدًا. كما يتحقق خيار \-c (التحقق) من الأطوال المحلولة (بعد توسيع tc). .SH الملفات .TP \fI/usr/share/terminfo\fP دليل قاعدة بيانات أوصاف الطرفية المجمّعة .SH الامتدادات البحث عن أوصاف الطرفيات في \fI$HOME/.terminfo\fP و \fI\%TERMINFO_DIRS\fP غير مدعوم في التنفيذات القديمة. .PP بعض تنفيذات \fBcurses\fP في SVr4، وجميع ما قبل SVr4، لا تفسر العوامل %A و %O في سلاسل المعاملات. .PP لا تحدد SVr4/XPG4 ما إذا كان \fBmsgr\fP يسمح بالحركة أثناء التواجد في وضع مجموعة المحارف البديلة (مثل هذه الأوضاع قد تقوم، من بين أمور أخرى، بتعيين CR و NL لمحارف لا تطلق حركات محلية). يتجاهل تنفيذ \fI\%ncurses\fP القدرة \fBmsgr\fP في وضع \fBALTCHARSET\fP. وهذا يثير احتمالية أن تنفيذ XPG4 الذي يتبع التفسير المعاكس قد يحتاج إلى إيقاف \fBmsgr\fP في مدخلات terminfo المصنوعة لـ \fI\%ncurses\fP. .PP تتعامل مكتبة \fI\%ncurses\fP مع أوضاع إدراج المحرف وإدراج المحرف بطريقة غير قياسية قليلاً للحصول على كفاءة تحديث أفضل. انظر القسم الفرعي \fBإدراج/حذف محرف\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 الخط المائل. يجب أن تفترض التطبيقات القابلة للنقل أن القدرات الرقمية هي قيم 16 بت ذات إشارة. وهذا يشمل قدرة \fIno_color_video\fP (\fBncv\fP). قيمة القناع 32768 المستخدمة لـ الخط المائل مع \fBncv\fP يمكن الخلط بينها وبين غياب \fBncv\fP أو إلغائه. إذا كان الخط المائل يجب أن يعمل مع الألوان، فيجب تحديد قيمة \fBncv\fP، حتى لو كانت صفرًا. .PP تدعم المنافذ التجارية المختلفة لـ \fI\%terminfo\fP و \fIcurses\fP مجموعات فرعية مختلفة من X/Open Curses و (في بعض الحالات) امتدادات مختلفة. إليك ملخص، دقيق اعتبارًا من أكتوبر 1995، والذي تقلص بعده سوق يونكس التجاري وفقد تنوعه. .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، بالإضافة إلى مفاتيح الوظائف من 11 إلى 63، بالإضافة إلى \fB\%plab_norm\fP و \fB\%label_on\fP و \fB\%label_off\fP، بالإضافة إلى عدد من امتدادات جدول السلاسل غير المتوافقة. .bP تدعم AIX مجموعة SVr1 الفرعية، بالإضافة إلى مفاتيح الوظائف من 11 إلى 63، بالإضافة إلى عدد من امتدادات جدول السلاسل غير المتوافقة. .bP يدعم OSF/1 كلاً من مجموعة SVr4 وامتدادات AIX. .SH "القابلية للنقل" لا تعتمد على قابلية نقل مدخلات \fI\%terminfo\fP المجمّعة (الثنائية) بين أنظمة يونكس التجارية. فعلى الأقل هناك تنفيذان لـ \fI\%terminfo\fP (تنفيذا HP\-UX و AIX) تباعدا عن تنفيذات أنظمة System V Unices الأخرى بعد SVr1، مع إضافة قدرات امتداد إلى جدول السلاسل تتعارض (في التنسيق الثنائي) مع امتدادات System V و X/Open Curses اللاحقة. .SH المؤلفون Zeyd M. Ben\-Halim، و Eric S. Raymond، و Thomas E. Dickey. بناءً على \fIpcurses\fP بواسطة Pavel Curtis. .SH "انظر أيضًا" \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) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .