.\" -*- coding: UTF-8 -*- '\" t .\"*************************************************************************** .\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2015,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: ncurses.3x,v 1.289 2025/11/12 01:01:34 tom Exp $ .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ncurses 3X "11 نوفمبر 2025" "ncurses 6.6" "دوال المكتبة" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq .\} .el \{\ .ie t .ds `` `` .el .ds `` "" .ie t .ds '' '' .el .ds '' "" .\} . .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. . .de tQ . br . ns . TP .. .\" Add supplementary paragraph tag on its own line after TP. .\" Adapted from TQ (which would produce mandoc warnings). . .SH الاسم \fB\%ncurses\fP \- واجهة طرفية ذات خلايا محارف مع إخراج مُحسَّن .SH موجز .nf \fB#include \fP .fi .SH الوصف مكتبة \*(``new curses\*('' تُوفِّر للمُبرمِج وسيلةً مستقلةً عن الطرفية لقراءة دخل لوحة المفاتيح والفأرة والكتابة إلى شاشات خلايا محارف مع إخراج مُحسَّن لتقليل تحديثات الشاشة. \fI\%ncurses\fP يستبدل مكتبات \fIcurses\fP من نظام Unix الإصدار 5 (الإصدار 4) (\*(``SVr4\*('') و 4.4BSD Unix، التي توقف تطويرها في التسعينيات. يصف هذا المستند \fI\%ncurses\fP الإصدار 6.6 (التصحيح 20251230). .PP \fI\%ncurses\fP يسمح بالتحكم في محتويات شاشة الطرفية؛ تجريدها وتقسيمها باستخدام \fIwindows\fP و \fIpads\fP؛ الحصول على أحداث لوحة المفاتيح والفأرة؛ اختيار اللون وسمات العرض (مثل العريض أو التسطير)؛ تعريف واستخدام مفاتيح \fIsoft label\fP؛ الوصول إلى قاعدة بيانات قدرات الطرفية \fI\%term\%info\fP؛ واجهة توافق \fItermcap\fP؛ وتجريد واجهة برمجة التطبيقات للنظام لمعالجة الطرفية (مثل \fI\%termios\fP(3)). .PP \fI\%ncurses\fP يُطبِّق الواجهة الموصوفة بواسطة X/Open Curses Issue\ 7. في العديد من تفاصيل السلوك غير المُوحَّدة بواسطة X/Open، يُحاكي \fI\%ncurses\fP مكتبة \fIcurses\fP الخاصة بـ SVr4 ويُوفِّر امتدادات مفيدة عديدة. .PP صفحات دليل \fI\%ncurses\fP تستخدم عدة أقسام لتوضيح مسائل الاستخدام والتوافق مع تطبيقات \fIcurses\fP الأخرى. .bP \*(``NOTES\*('' يصف المشكلات والتحذيرات التي يجب أن يكون أي مستخدم لواجهة برمجة التطبيقات \fI\%ncurses\fP على علم بها، مثل القيود على حجم نوع صحيح أساسي أو توفر ماكرو معالج مسبق حصري لتعريف دالة (مما يمنع أخذ عنوانها). يصف هذا القسم أيضًا تفاصيل تنفيذية مهمة للمبرمج ولكنها غير مُوحَّدة. .bP \*(``EXTENSIONS\*('' يُقدِّم ابتكارات \fI\%ncurses\fP التي تتجاوز معيار X/Open Curses و/أو تطبيق SVr4 \fIcurses\fP. تُسمى \fIextensions\fP للإشارة إلى أنه لا يمكن تنفيذها فقط باستخدام واجهة برمجة التطبيقات للمكتبة، بل تتطلب الوصول إلى الحالة الداخلية للمكتبة. .bP \*(``PORTABILITY\*('' يناقش المسائل (بما يتجاوز استخدام الامتدادات) التي يجب مراعاتها عند الكتابة وفقًا لمعيار \fIcurses\fP، أو لتطبيقات متعددة. .bP \*(``HISTORY\*('' يفحص نقاط التفاصيل في \fI\%ncurses\fP وتطبيقات \fIcurses\fP الأخرى عبر عقود تطويرها، خاصةً حيث أعاقت السابقة أو الجمود تصميمًا أفضل (وفي حالات قليلة، حيث تم التغلب على هذا الجمود). .PP يجب ربط تطبيق \fIcurses\fP بالمكتبة؛ استخدم الخيار \fB\-lncurses\fP مع المترجم أو الرابط. قد تتوفر نسخة تصحيح من المكتبة؛ إذا كان الأمر كذلك، فاربط بها باستخدام \fB\-lncurses_g\fP. (قد يكون مُكامل نظامك قد ثبَّت هذه المكتبات بحيث يمكنك استخدام الخيارين \fB\-lcurses\fP و \fB\-lcurses_g\fP، على التوالي.) مكتبة \fI\%ncurses_g\fP تُسجِّل الأحداث التي تصف إجراءات \fI\%ncurses\fP في ملف يُسمى \fI\%trace\fP في دليل عمل التطبيق عند بدء التشغيل. انظر القسم \*(``ALTERNATE CONFIGURATIONS\*('' أدناه. .SS "هيكل التطبيق" تطبيق \fIcurses\fP يستخدم معلومات من الإعدادات المحلية للنظام؛ \fI\%setlocale\fP(3) يُهيِّئها لاستدعاءات مكتبة \fIcurses\fP. .PP .RS 4 .EX setlocale(LC_ALL, ""); .EE .RE .PP إذا لم تُهيَّأ الإعدادات المحلية بهذه الطريقة، تفترض المكتبة أن المحارف قابلة للطباعة كما في ISO\ 8859\-1، للعمل مع بعض البرامج القديمة. يجب عليك تهيئة الإعدادات المحلية؛ لا تتوقع سلوكًا ثابتًا من المكتبة عندما لا تكون الإعدادات المحلية قد أُعدت. .PP يجب استدعاء \fB\%initscr\fP(3X) أو \fB\%newterm\fP(3X) لتهيئة \fIcurses\fP قبل استخدام أي دوال تصل إلى النوافذ أو الشاشات أو تعالجها. .PP للحصول على دخل محرف تلو الآخر بدون صدى \(em معظم البرامج التفاعلية الموجهة للشاشة تريد هذا \(em استخدم التسلسل التالي. .PP .RS 4 .EX initscr(); cbreak(); noecho(); .EE .RE .PP معظم التطبيقات ستُجري إعدادًا إضافيًا على النحو التالي. .PP .RS 4 .EX .nf noqiflush(); keypad(stdscr, TRUE); .fi .EE .RE .PP غالبًا ما يدخل برنامج \fIcurses\fP بعد ذلك في حلقة معالجة أحداث. استدعِ \fB\%endwin\fP(3X) قبل الخروج. .SS "نظرة عامة" تُجرّد مكتبة \fIcurses\fP الطرفية بهيكل بيانات \fI\%SCREEN\fP، وتمثل كل أو جزء من شاشتها بهياكل \fI\%WINDOW\fP. تنطبق خصائص مميزة على كل منها؛ على سبيل المثال، يكون \fIنظام الخط\fP لمشغل طرفية Unix النموذجي في أحد ثلاثة أوضاع: خام، \%cbreak، أو قانوني (\*(``مطبوخ\*(''). في \fIcurses\fP، نظام الخط هو خاصية للشاشة، تنطبق بشكل متطابق على جميع النوافذ المرتبطة بها. .PP \fIالنافذة\fP هي شبكة مستطيلة من خلايا المحارف، تُعنون بإحداثيات السطر والعمود (\fIy\fP, \fIx\fP)، مع الزاوية العليا اليسرى كـ (0, 0). نافذة تُدعى \fB\%stdscr\fP، مبدئيًا بنفس حجم شاشة الطرفية، متاحة دائمًا. أنشئ أخرى باستخدام \fB\%newwin\fP(3X). .PP لا تدير مكتبة \fIcurses\fP النوافذ المتداخلة (لكن انظر أدناه). يمكنك إما استخدام \fB\%stdscr\fP لإدارة نافذة واحدة تملأ الشاشة، أو تجانب الشاشة إلى نوافذ غير متداخلة وعدم استخدام \fB\%stdscr\fP على الإطلاق. سيؤدي خلط النهجين إلى تأثيرات غير متوقعة وغير مرغوب فيها. .PP تسمح الدوال بمعالجة نافذة و\fIالمؤشر\fP الذي يُحدد الخلية داخلها حيث ستحدث العملية التالية. من بينها، الأكثر أساسية هي \fB\%move\fP(3X) و \fB\%addch\fP(3X): تضع هذه المؤشر داخل \fB\%stdscr\fP وتكتب محرفًا إليه، على التوالي. .PP .\" X/Open Curses Issue 7 assumes some optimization will be done, but .\" does not mandate it in any way. يمكن أن تسبب التغييرات المتكررة لشاشة الطرفية وميضًا مزعجًا أو استخدامًا غير فعال لقناة الاتصال بالجهاز، لذلك كقاعدة لا تُحدّثها المكتبة آليًا. لذلك، بعد استخدام دوال \fIcurses\fP لتجميع مجموعة من التحديثات المرغوبة التي من المنطقي تقديمها معًا، استدعِ \fB\%refresh\fP(3X) لإخبار المكتبة بجعل شاشة المستخدم تبدو مثل \fBstdscr\fP. \fIتُحسّن\fP المكتبة مخرجاتها بحساب حجم أدنى من العمليات لتحويل الشاشة من حالتها في التحديث السابق إلى الحالة الجديدة. يتطلب التحسين الفعال معلومات دقيقة عن جهاز الطرفية: إدارة هذه المعلومات هي مجال واجهة برمجة التطبيقات \fB\%terminfo\fP(3X)، وهي ميزة في كل تطبيق \fIcurses\fP قياسي. .PP يمكن أيضًا معالجة نوافذ خاصة تُدعى \fIالوسادات\fP. هذه ليست مقيدة بحجم شاشة الطرفية ولا يلزم عرض محتوياتها بالكامل. انظر \fB\%curs_pad\fP(3X). .PP تدعم العديد من الطرفيات تكوين ألوان المقدمة والخلفية لخلايا المحارف بالإضافة إلى \fIالسمات\fP، التي تجعل المحارف تُعرض في أوضاع مثل العريض، المسطر، أو الفيديو المعكوس. انظر \fB\%curs_color\fP(3X) و \fB\%curs_attr\fP(3X). .PP يُعرّف \fIcurses\fP ثوابت لتبسيط الوصول إلى مجموعة صغيرة من رسومات رسم النماذج المقابلة لمجموعة المحارف البديلة DEC (ACS)، وهي ميزة في VT100 وطرفيات أخرى. انظر \fB\%addch\fP(3X). .PP يُطبّق \fIcurses\fP باستخدام مشغل طرفية نظام التشغيل؛ تُستقبل أحداث المفاتيح ليس كرموز مسح ضوئي بل كتسلسلات بايت. يُبلغ المشغل عن أغطية المفاتيح الرسومية (مفاتيح الأبجدية الرقمية وعلامات الترقيم والمسافة) كما هي. كل شيء آخر، بما في ذلك علامة التبويب، الإدخال/العودة، لوحة المفاتيح الرقمية، الأسهم، ومفاتيح الوظائف، يظهر لـ \fIcurses\fP كمحرف تحكم أو \fIتسلسل هروب\fP متعدد البايت. يمكن لـ \fIcurses\fP ترجمة الأخير إلى \fIرموز مفاتيح\fP فريدة. انظر \fB\%keypad\fP(3X) و \fB\%getch\fP(3X). .PP يوفر \fI\%ncurses\fP إعادة تطبيقات لمكتبات SVr4 \fBpanel\fP(3X) و \fBform\fP(3X) و \fBmenu\fP(3X)؛ تسمح هذه بالنوافذ المتداخلة وتُسهّل بناء واجهات المستخدم باستخدام \fIcurses\fP. .SS التهيئة اختيار قيمة مناسبة لـ \fITERM\fP في بيئة العملية ضروري لتشغيل مكتبة \fIcurses\fP و \fI\%term\%info\fP بشكل صحيح. يختار نظام مُهيأ جيدًا قيمة \fITERM\fP صحيحة آليًا؛ قد يساعد \fB\%tset\fP(1) في استكشاف المواقف الغريبة. .PP إذا غيّرت نوع الطرفية من شل، صدّر \fITERM\fP، ثم شغّل \fB\%tset\fP(1) أو الأمر \*(``\fBtput init\fP\*(''. انظر القسم الفرعي \*(``علامات التبويب والتهيئة\*('' من \fB\%terminfo\fP(5). .PP إذا كانت متغيرات البيئة \fI\%LINES\fP و \fI\%COLUMNS\fP مضبوطة، أو إذا كان برنامج \fIcurses\fP يُنفّذ في بيئة نوافذ رسومية، فإن المعلومات المُحصلة من هناك تتجاوز تلك المُحصلة بواسطة \fI\%term\%info\fP. امتداد \fI\%ncurses\fP يدعم شاشات طرفية قابلة لتغيير الحجم؛ انظر \fB\%wresize\fP(3X). .PP إذا كان متغير البيئة \fI\%TERMINFO\fP مُعرّفًا، يتحقق برنامج \fIcurses\fP أولاً من وصف نوع طرفية في الموقع الذي يُحدده. \fI\%TERMINFO\fP مفيد لتطوير أوصاف الأنواع أو عندما لا تكون صلاحية الكتابة إلى \fI\%/usr/share/terminfo\fP متاحة. .PP انظر القسم \*(``البيئة\*('' أدناه. .SS "اتفاقيات التسمية" يقدم \fIcurses\fP العديد من الدوال في أشكال متغيرة باستخدام مجموعة منتظمة من البدائل لاسم الدالة الأساسية. تلك المسبوقة بـ \*(``w\*('' تتطلب معامل مؤشر \fI\%WINDOW\fP؛ تلك التي بادئة \*(``mv\*('' تؤدي أولاً حركة مؤشر باستخدام \fB\%wmove\fP(3X)؛ بادئة \*(``mvw\*('' تشير إلى كليهما. دالة \*(``w\*('' هي عادةً الأساسية؛ إزالة هذه البادئة تشير عادةً إلى العمل على \fB\%stdscr\fP. .PP أربع دوال مسبوقة بـ \*(``p\*('' تتطلب معامل \fIوسادة\fP؛ انظر أدناه. .PP في ملخصات الدوال، تطبق صفحات دليل \fI\%ncurses\fP الأسماء التالية على المعاملات. نقدم أنواع المحارف في القسم الفرعي التالي. .PP .TS center; Li L. bf قيمة \fIمنطقية\fP (\fBصواب\fP أو \fBخطأ\fP) c قيمة \fIمحرف\fP أو \fIعدد صحيح\fP ch قيمة \fIchtype\fP wc قيمة \fIwchar_t\fP أو \fIwint_t\fP wch قيمة \fIcchar_t\fP win مؤشر إلى \fIنافذة\fP pad مؤشر إلى \fIنافذة\fP تمثل لوحة زوج معرّف زوج ألوان أمامية/خلفية .TE .SS "تهيئات المحارف العريضة وغير العريضة" .\" "ncursesw" + 2n تستعرض صفحة الدليل هذه بشكل رئيسي الدوال التي تظهر في أي تهيئة من تهيئات المكتبة. هناك تهيئتان شائعتان؛ للاطلاع على الأخرى، راجع القسم \*(``التهيئات البديلة\*('' أدناه. .TP 10 \fI\%ncurses\fP هي المكتبة في تهيئتها \*(``غير العريضة\*(''، التي تعالج محارف ثمانية البتات فقط. تخزن محرفًا مدمجًا مع سمات ومعرّف زوج ألوان في عنصر بيانات \fI\%chtype\fP، والذي غالبًا ما يكون اسمًا مستعارًا لـ \fIint\fP. سلسلة محارف \fIcurses\fP مشابهة لسلسلة محارف C \fIchar\fP؛ تنتهي سلسلة \fIchtype\fP بقيمة صحيحة \fB0\fP، وهي محرف \fIcurses\fP الفارغ. .IP يمكن تخزين السمات ومعرّف زوج الألوان (بدون محرف مقابل) في متغيرات من نوع \fI\%chtype\fP أو \fI\%attr_t\fP. في كلتا الحالتين، يُوصل إليها عبر قناع بتات صحيح. .IP يخزن \fI\%ncurses\fP كل خلية من \fI\%نافذة\fP كقيمة \fI\%chtype\fP. لا تحدد X/Open Curses أحجام رمز المحرف أو معرّف زوج الألوان، ولا عدد بتات السمات، في \fIchtype\fP؛ هذه الأمور تعتمد على التنفيذ. يستخدم \fI\%ncurses\fP ثمانية بتات لرمز المحرف. يجب على التطبيق الذي يتطلب نوع محرف أوسع، مثل تمثيل Unicode، استخدام واجهة برمجة التطبيقات للمحارف العريضة. .TP 10 \fI\%ncursesw\fP .\" This is because they operate on "plain" wide-character strings .\" (`wchar_t*`) and not curses complex character strings (`cchar_t*`). .\" SVID 4 did specify functions like `addwch()` and `inswch()` that .\" operated on `chtype`s assuming that they were wide enough for a .\" `wchar_t` plus attribute and color pair bits; X/Open Curses did not .\" standardize these. هي المكتبة في تهيئتها \*(``العريضة\*(''، التي تعالج ترميزات المحارف التي تتطلب نوع بيانات أكبر مما يمكن أن يمثله \fI\%char\fP (نوع بحجم بايت). توفر دوال إضافية تكمل تلك الموجودة في المكتبة غير العريضة حيث يكون حجم نوع المحرف الأساسي مهمًا. تربط اصطلاحية تسمية منتظمة إلى حد ما العديد من المتغيرات العريضة بنظيراتها غير العريضة؛ حيث يحتوي اسم الدالة غير العريضة على \*(``ch\*('' أو \*(``str\*(''، أسبقها بـ \*(``_w\*('' للحصول على النظير العريض. على سبيل المثال، تصبح \fB\%waddch\fP هي \fB\%wadd_wch\fP. الاستثناء هو \fB\%ins_nwstr\fP (ومتغيراته)، مكتوبة هكذا بدلاً من \*(``insn_wstr\*(''. (الاستثناءات التي تضيف فقط \*(``w\*('' تشمل \fB\%addwstr\fP و \fB\%inwstr\fP ومتغيراتهما.) .IP .\" same as foregoing tag width هذه الاصطلاحية غير قابلة للتطبيق على بعض أسماء الدوال غير العريضة، لذا تُستخدم تحويلات أخرى للتهيئة العريضة: دالة إدارة خلفية النافذة \*(``bkgd\*('' تصبح \*(``bkgrnd\*(''؛ دوال رسم ومسح حدود النافذة تُلحق باللاحقة \*(``_set\*(''؛ ودوال معالجة سمات المحرف مثل \*(``attron\*('' تصبح \*(``attr_on\*(''. .RS 10 .\" "cchar_t" + 2n .TP 9 \fI\%cchar_t\fP هو \*(``محرف معقد\*('' في \fIcurses\fP ويقابل \fI\%chtype\fP في تهيئة المحرف غير العريض. هو نوع بنية لأنه يتطلب تخزينًا أكبر مما يوفره نوع قياسي عددي. قد لا يكون رمز المحرف قابلاً للتمثيل كـ \fI\%char\fP، وعلاوة على ذلك قد يشغل أكثر من محرف خلية واحدة (كما هو الحال مع علامات التشكيل وغيرها من العلامات الإعرابية). كل محرف من نوع \fI\%wchar_t\fP؛ يحتوي المحرف المعقد على محرف تباعد واحد وصفر أو أكثر من محارف عدم التباعد (انظر أدناه). تنتهي سلسلة المحارف المعقدة بـ \fI\%cchar_t\fP الذي يكون عضوه \fI\%wchar_t\fP هو المحرف العريض الفارغ. تُخزَّن السمات ومعرّف زوج الألوان في حقول منفصلة من البنية، وليست مدمجة في عدد صحيح كما في \fI\%chtype\fP. .PP يخزن \fI\%ncurses\fP كل خلية من \fI\%WINDOW\fP كـ \fI\%cchar_t\fP. تخزن وتسترجع \fB\%setcchar\fP(3X) و \fB\%getcchar\fP(3X) بيانات \fI\%cchar_t\fP. .PP تعتمد واجهة برمجة التطبيقات للمكتبة العريضة لـ \fI\%ncurses\fP على نوعي بيانات موحدين بواسطة ISO C95. .TP 9 \fI\%wchar_t\fP يخزن محرفًا عريضًا. مثل \fI\%chtype\fP، قد يكون اسمًا مستعارًا لـ \fIint\fP. اعتمادًا على ترميز المحرف، قد يكون المحرف العريض \fIتباعديًا\fP، مما يعني أنه يشغل خلية محرف بمفرده ويصاحب عادةً تقدم المؤشر، أو \fIغير تباعدي\fP، مما يعني أنه يشغل نفس خلية المحرف التباعدي، ويُعتبر غالبًا \*(``معدِّلاً\*('' للشكل الأساسي الذي يتحد معه، ولا يقدم المؤشر عادةً. .TP 9 \fI\%wint_t\fP يمكنه تخزين \fI\%wchar_t\fP أو الثابت \fI\%WEOF\fP، بشكل مماثل لدوال معالجة المحارف بحجم \fIint\fP في ISO C وثابتها \fI\%EOF\fP. .RE .\" .SS "فهرس أسماء الدوال" يسرد الجدول التالي دوال \fIcurses\fP المقدمة في واجهات برمجة التطبيقات غير العريضة والعريضة وصفحات الدليل المقابلة التي تصفها. تلك المعلَّمة بـ \*(``*\*('' خاصة بـ \fI\%ncurses\fP، غير موصوفة بواسطة X/Open Curses ولا موجودة في SVr4. .PP .TS center tab(/); L L. اسم دالة \fIcurses\fP/صفحة الدليل _ COLOR_PAIR/\fBcurs_color\fP(3X) PAIR_NUMBER/\fBcurs_color\fP(3X) add_wch/\fBcurs_add_wch\fP(3X) add_wchnstr/\fBcurs_add_wchstr\fP(3X) add_wchstr/\fBcurs_add_wchstr\fP(3X) addch/\fBcurs_addch\fP(3X) addchnstr/\fBcurs_addchstr\fP(3X) addchstr/\fBcurs_addchstr\fP(3X) addnstr/\fBcurs_addstr\fP(3X) addnwstr/\fBcurs_addwstr\fP(3X) addstr/\fBcurs_addstr\fP(3X) addwstr/\fBcurs_addwstr\fP(3X) alloc_pair/\fBnew_pair\fP(3X)* assume_default_colors/\fBdefault_colors\fP(3X)* attr_get/\fBcurs_attr\fP(3X) attr_off/\fBcurs_attr\fP(3X) attr_on/\fBcurs_attr\fP(3X) attr_set/\fBcurs_attr\fP(3X) attroff/\fBcurs_attr\fP(3X) attron/\fBcurs_attr\fP(3X) attrset/\fBcurs_attr\fP(3X) baudrate/\fBcurs_termattrs\fP(3X) beep/\fBcurs_beep\fP(3X) bkgd/\fBcurs_bkgd\fP(3X) bkgdset/\fBcurs_bkgd\fP(3X) bkgrnd/\fBcurs_bkgrnd\fP(3X) bkgrndset/\fBcurs_bkgrnd\fP(3X) border/\fBcurs_border\fP(3X) border_set/\fBcurs_border_set\fP(3X) box/\fBcurs_border\fP(3X) box_set/\fBcurs_border_set\fP(3X) can_change_color/\fBcurs_color\fP(3X) cbreak/\fBcurs_inopts\fP(3X) chgat/\fBcurs_attr\fP(3X) clear/\fBcurs_clear\fP(3X) clearok/\fBcurs_outopts\fP(3X) clrtobot/\fBcurs_clear\fP(3X) clrtoeol/\fBcurs_clear\fP(3X) color_content/\fBcurs_color\fP(3X) color_set/\fBcurs_attr\fP(3X) copywin/\fBcurs_overlay\fP(3X) curs_set/\fBcurs_kernel\fP(3X) curses_trace/\fBcurs_trace\fP(3X)* curses_version/\fBcurs_extend\fP(3X)* def_prog_mode/\fBcurs_kernel\fP(3X) def_shell_mode/\fBcurs_kernel\fP(3X) define_key/\fBdefine_key\fP(3X)* del_curterm/\fBcurs_terminfo\fP(3X) delay_output/\fBcurs_util\fP(3X) delch/\fBcurs_delch\fP(3X) deleteln/\fBcurs_deleteln\fP(3X) delscreen/\fBcurs_initscr\fP(3X) delwin/\fBcurs_window\fP(3X) derwin/\fBcurs_window\fP(3X) doupdate/\fBcurs_refresh\fP(3X) dupwin/\fBcurs_window\fP(3X) echo/\fBcurs_inopts\fP(3X) echo_wchar/\fBcurs_add_wch\fP(3X) صدى_حرف/\fBcurs_addch\fP(3X) إنهاء_النافذة/\fBcurs_initscr\fP(3X) مسح/\fBcurs_clear\fP(3X) حرف_المسح/\fBcurs_termattrs\fP(3X) حرف_المسح_العريض/\fBcurs_termattrs\fP(3X) خروج_من_الكيرسز/\fBcurs_memleaks\fP(3X)* خروج_من_معلومات_الطرفية/\fBcurs_memleaks\fP(3X)* محتوى_اللون_الممتد/\fBcurs_color\fP(3X)* محتوى_الزوج_الممتد/\fBcurs_color\fP(3X)* لون_مفاتيح_التسمية_اللينة_الممتد/\fBcurs_slk\fP(3X)* filter/\fBcurs_util\fP(3X) إيجاد_زوج/\fBnew_pair\fP(3X)* وميض/\fBcurs_beep\fP(3X) مسح_المدخلات/\fBcurs_util\fP(3X) تحرير_زوج/\fBnew_pair\fP(3X)* الحصول_على_تأخير_الهروب/\fBcurs_threads\fP(3X)* الحصول_على_حرف_عريض/\fBcurs_get_wch\fP(3X) get_wstr/\fBcurs_get_wstr\fP(3X) getattrs/\fBcurs_attr\fP(3X) getbegx/\fBcurs_legacy\fP(3X)* getbegy/\fBcurs_legacy\fP(3X)* getbegyx/\fBcurs_getyx\fP(3X) getbkgd/\fBcurs_bkgd\fP(3X) getbkgrnd/\fBcurs_bkgrnd\fP(3X) getcchar/\fBcurs_getcchar\fP(3X) getch/\fBcurs_getch\fP(3X) getcurx/\fBcurs_legacy\fP(3X)* getcury/\fBcurs_legacy\fP(3X)* getmaxx/\fBcurs_legacy\fP(3X)* getmaxy/\fBcurs_legacy\fP(3X)* getmaxyx/\fBcurs_getyx\fP(3X) getmouse/\fBcurs_mouse\fP(3X)* getn_wstr/\fBcurs_get_wstr\fP(3X) getnstr/\fBcurs_getstr\fP(3X) getparx/\fBcurs_legacy\fP(3X)* getpary/\fBcurs_legacy\fP(3X)* getparyx/\fBcurs_getyx\fP(3X) getstr/\fBcurs_getstr\fP(3X) getsyx/\fBcurs_kernel\fP(3X) getwin/\fBcurs_util\fP(3X) getyx/\fBcurs_getyx\fP(3X) halfdelay/\fBcurs_inopts\fP(3X) has_colors/\fBcurs_color\fP(3X) has_ic/\fBcurs_termattrs\fP(3X) has_il/\fBcurs_termattrs\fP(3X) has_key/\fBcurs_getch\fP(3X)* has_mouse/\fBcurs_mouse\fP(3X)* hline/\fBcurs_border\fP(3X) hline_set/\fBcurs_border_set\fP(3X) idcok/\fBcurs_outopts\fP(3X) idlok/\fBcurs_outopts\fP(3X) immedok/\fBcurs_outopts\fP(3X) in_wch/\fBcurs_in_wch\fP(3X) in_wchnstr/\fBcurs_in_wchstr\fP(3X) in_wchstr/\fBcurs_in_wchstr\fP(3X) inch/\fBcurs_inch\fP(3X) inchnstr/\fBcurs_inchstr\fP(3X) inchstr/\fBcurs_inchstr\fP(3X) init_color/\fBcurs_color\fP(3X) init_extended_color/\fBcurs_color\fP(3X)* init_extended_pair/\fBcurs_color\fP(3X)* init_pair/\fBcurs_color\fP(3X) initscr/\fBcurs_initscr\fP(3X) innstr/\fBcurs_instr\fP(3X) innwstr/\fBcurs_inwstr\fP(3X) ins_nwstr/\fBcurs_ins_wstr\fP(3X) ins_wch/\fBcurs_ins_wch\fP(3X) ins_wstr/\fBcurs_ins_wstr\fP(3X) insch/\fBcurs_insch\fP(3X) insdelln/\fBcurs_deleteln\fP(3X) insertln/\fBcurs_deleteln\fP(3X) insnstr/\fBcurs_insstr\fP(3X) insstr/\fBcurs_insstr\fP(3X) instr/\fBcurs_instr\fP(3X) intrflush/\fBcurs_inopts\fP(3X) inwstr/\fBcurs_inwstr\fP(3X) is_cbreak/\fBcurs_inopts\fP(3X)* is_cleared/\fBcurs_opaque\fP(3X)* is_echo/\fBcurs_inopts\fP(3X)* is_idcok/\fBcurs_opaque\fP(3X)* is_idlok/\fBcurs_opaque\fP(3X)* is_immedok/\fBcurs_opaque\fP(3X)* is_keypad/\fBcurs_opaque\fP(3X)* is_leaveok/\fBcurs_opaque\fP(3X)* is_linetouched/\fBcurs_touch\fP(3X) is_nl/\fBcurs_inopts\fP(3X)* is_nodelay/\fBcurs_opaque\fP(3X)* is_notimeout/\fBcurs_opaque\fP(3X)* is_pad/\fBcurs_opaque\fP(3X)* is_raw/\fBcurs_inopts\fP(3X)* is_scrollok/\fBcurs_opaque\fP(3X)* is_subwin/\fBcurs_opaque\fP(3X)* is_syncok/\fBcurs_opaque\fP(3X)* is_term_resized/\fBresizeterm\fP(3X)* is_wintouched/\fBcurs_touch\fP(3X) isendwin/\fBcurs_initscr\fP(3X) key_defined/\fBkey_defined\fP(3X)* key_name/\fBcurs_util\fP(3X) keybound/\fBkeybound\fP(3X)* keyname/\fBcurs_util\fP(3X) keyok/\fBkeyok\fP(3X)* keypad/\fBcurs_inopts\fP(3X) killchar/\fBcurs_termattrs\fP(3X) killwchar/\fBcurs_termattrs\fP(3X) leaveok/\fBcurs_outopts\fP(3X) longname/\fBcurs_termattrs\fP(3X) mcprint/\fBcurs_print\fP(3X)* meta/\fBcurs_inopts\fP(3X) mouse_trafo/\fBcurs_mouse\fP(3X)* mouseinterval/\fBcurs_mouse\fP(3X)* mousemask/\fBcurs_mouse\fP(3X)* move/\fBcurs_move\fP(3X) mvadd_wch/\fBcurs_add_wch\fP(3X) mvadd_wchnstr/\fBcurs_add_wchstr\fP(3X) mvadd_wchstr/\fBcurs_add_wchstr\fP(3X) mvaddch/\fBcurs_addch\fP(3X) mvaddchnstr/\fBcurs_addchstr\fP(3X) mvaddchstr/\fBcurs_addchstr\fP(3X) mvaddnstr/\fBcurs_addstr\fP(3X) mvaddnwstr/\fBcurs_addwstr\fP(3X) mvaddstr/\fBcurs_addstr\fP(3X) mvaddwstr/\fBcurs_addwstr\fP(3X) mvchgat/\fBcurs_attr\fP(3X) mvcur/\fBcurs_kernel\fP(3X) mvdelch/\fBcurs_delch\fP(3X) mvderwin/\fBcurs_window\fP(3X) mvget_wch/\fBcurs_get_wch\fP(3X) mvget_wstr/\fBcurs_get_wstr\fP(3X) mvgetch/\fBcurs_getch\fP(3X) mvgetn_wstr/\fBcurs_get_wstr\fP(3X) mvgetnstr/\fBcurs_getstr\fP(3X) mvgetstr/\fBcurs_getstr\fP(3X) mvhline/\fBcurs_border\fP(3X) mvhline_set/\fBcurs_border_set\fP(3X) mvin_wch/\fBcurs_in_wch\fP(3X) mvin_wchnstr/\fBcurs_in_wchstr\fP(3X) mvin_wchstr/\fBcurs_in_wchstr\fP(3X) mvinch/\fBcurs_inch\fP(3X) mvinchnstr/\fBcurs_inchstr\fP(3X) mvinchstr/\fBcurs_inchstr\fP(3X) mvinnstr/\fBcurs_instr\fP(3X) mvinnwstr/\fBcurs_inwstr\fP(3X) mvins_nwstr/\fBcurs_ins_wstr\fP(3X) mvins_wch/\fBcurs_ins_wch\fP(3X) mvins_wstr/\fBcurs_ins_wstr\fP(3X) mvinsch/\fBcurs_insch\fP(3X) mvinsnstr/\fBcurs_insstr\fP(3X) mvinsstr/\fBcurs_insstr\fP(3X) mvinstr/\fBcurs_instr\fP(3X) mvinwstr/\fBcurs_inwstr\fP(3X) mvprintw/\fBcurs_printw\fP(3X) mvscanw/\fBcurs_scanw\fP(3X) mvvline/\fBcurs_border\fP(3X) mvvline_set/\fBcurs_border_set\fP(3X) mvwadd_wch/\fBcurs_add_wch\fP(3X) mvwadd_wchnstr/\fBcurs_add_wchstr\fP(3X) mvwadd_wchstr/\fBcurs_add_wchstr\fP(3X) mvwaddch/\fBcurs_addch\fP(3X) mvwaddchnstr/\fBcurs_addchstr\fP(3X) mvwaddchstr/\fBcurs_addchstr\fP(3X) mvwaddnstr/\fBcurs_addstr\fP(3X) mvwaddnwstr/\fBcurs_addwstr\fP(3X) mvwaddstr/\fBcurs_addstr\fP(3X) mvwaddwstr/\fBcurs_addwstr\fP(3X) mvwchgat/\fBcurs_attr\fP(3X) mvwdelch/\fBcurs_delch\fP(3X) mvwget_wch/\fBcurs_get_wch\fP(3X) mvwget_wstr/\fBcurs_get_wstr\fP(3X) mvwgetch/\fBcurs_getch\fP(3X) mvwgetn_wstr/\fBcurs_get_wstr\fP(3X) mvwgetnstr/\fBcurs_getstr\fP(3X) mvwgetstr/\fBcurs_getstr\fP(3X) mvwhline/\fBcurs_border\fP(3X) mvwhline_set/\fBcurs_border_set\fP(3X) mvwin/\fBcurs_window\fP(3X) mvwin_wch/\fBcurs_in_wch\fP(3X) mvwin_wchnstr/\fBcurs_in_wchstr\fP(3X) mvwin_wchstr/\fBcurs_in_wchstr\fP(3X) mvwinch/\fBcurs_inch\fP(3X) mvwinchnstr/\fBcurs_inchstr\fP(3X) mvwinchstr/\fBcurs_inchstr\fP(3X) mvwinnstr/\fBcurs_instr\fP(3X) mvwinnwstr/\fBcurs_inwstr\fP(3X) mvwins_nwstr/\fBcurs_ins_wstr\fP(3X) mvwins_wch/\fBcurs_ins_wch\fP(3X) mvwins_wstr/\fBcurs_ins_wstr\fP(3X) mvwinsch/\fBcurs_insch\fP(3X) mvwinsnstr/\fBcurs_insstr\fP(3X) mvwinsstr/\fBcurs_insstr\fP(3X) mvwinstr/\fBcurs_instr\fP(3X) mvwinwstr/\fBcurs_inwstr\fP(3X) mvwprintw/\fBcurs_printw\fP(3X) mvwscanw/\fBcurs_scanw\fP(3X) mvwvline/\fBcurs_border\fP(3X) mvwvline_set/\fBcurs_border_set\fP(3X) napms/\fBcurs_kernel\fP(3X) newpad/\fBcurs_pad\fP(3X) newterm/\fBcurs_initscr\fP(3X) newwin/\fBcurs_window\fP(3X) nl/\fBcurs_inopts\fP(3X) nocbreak/\fBcurs_inopts\fP(3X) nodelay/\fBcurs_inopts\fP(3X) noecho/\fBcurs_inopts\fP(3X) nofilter/\fBcurs_util\fP(3X)* nonl/\fBcurs_inopts\fP(3X) noqiflush/\fBcurs_inopts\fP(3X) noraw/\fBcurs_inopts\fP(3X) notimeout/\fBcurs_inopts\fP(3X) overlay/\fBcurs_overlay\fP(3X) overwrite/\fBcurs_overlay\fP(3X) pair_content/\fBcurs_color\fP(3X) pecho_wchar/\fBcurs_pad\fP(3X) pechochar/\fBcurs_pad\fP(3X) pnoutrefresh/\fBcurs_pad\fP(3X) prefresh/\fBcurs_pad\fP(3X) printw/\fBcurs_printw\fP(3X) putp/\fBcurs_terminfo\fP(3X) putwin/\fBcurs_util\fP(3X) qiflush/\fBcurs_inopts\fP(3X) raw/\fBcurs_inopts\fP(3X) redrawwin/\fBcurs_refresh\fP(3X) refresh/\fBcurs_refresh\fP(3X) reset_color_pairs/\fBcurs_color\fP(3X)* reset_prog_mode/\fBcurs_kernel\fP(3X) reset_shell_mode/\fBcurs_kernel\fP(3X) resetty/\fBcurs_kernel\fP(3X) resize_term/\fBresizeterm\fP(3X)* resizeterm/\fBresizeterm\fP(3X)* restartterm/\fBcurs_terminfo\fP(3X) ripoffline/\fBcurs_kernel\fP(3X) savetty/\fBcurs_kernel\fP(3X) scanw/\fBcurs_scanw\fP(3X) scr_dump/\fBcurs_scr_dump\fP(3X) scr_init/\fBcurs_scr_dump\fP(3X) scr_restore/\fBcurs_scr_dump\fP(3X) scr_set/\fBcurs_scr_dump\fP(3X) scrl/\fBcurs_scroll\fP(3X) scroll/\fBcurs_scroll\fP(3X) scrollok/\fBcurs_outopts\fP(3X) set_curterm/\fBcurs_terminfo\fP(3X) set_escdelay/\fBcurs_threads\fP(3X)* set_tabsize/\fBcurs_threads\fP(3X)* set_term/\fBcurs_initscr\fP(3X) setcchar/\fBcurs_getcchar\fP(3X) setscrreg/\fBcurs_outopts\fP(3X) setsyx/\fBcurs_kernel\fP(3X) setupterm/\fBcurs_terminfo\fP(3X) slk_attr/\fBcurs_slk\fP(3X)* slk_attr_off/\fBcurs_slk\fP(3X) slk_attr_on/\fBcurs_slk\fP(3X) slk_attr_set/\fBcurs_slk\fP(3X) slk_attroff/\fBcurs_slk\fP(3X) slk_attron/\fBcurs_slk\fP(3X) slk_attrset/\fBcurs_slk\fP(3X) slk_clear/\fBcurs_slk\fP(3X) slk_color/\fBcurs_slk\fP(3X) slk_init/\fBcurs_slk\fP(3X) slk_label/\fBcurs_slk\fP(3X) slk_noutrefresh/\fBcurs_slk\fP(3X) slk_refresh/\fBcurs_slk\fP(3X) slk_restore/\fBcurs_slk\fP(3X) slk_set/\fBcurs_slk\fP(3X) slk_touch/\fBcurs_slk\fP(3X) slk_wset/\fBcurs_slk\fP(3X) standend/\fBcurs_attr\fP(3X) standout/\fBcurs_attr\fP(3X) start_color/\fBcurs_color\fP(3X) subpad/\fBcurs_pad\fP(3X) نافذة فرعية/\fBcurs_window\fP(3X) مزامنة_موافق/\fBcurs_window\fP(3X) سمات_المحطة/\fBcurs_termattrs\fP(3X) سمات_المحطة/\fBcurs_termattrs\fP(3X) اسم_المحطة/\fBcurs_termattrs\fP(3X) tgetent/\fBcurs_termcap\fP(3X) tgetflag/\fBcurs_termcap\fP(3X) tgetnum/\fBcurs_termcap\fP(3X) tgetstr/\fBcurs_termcap\fP(3X) tgoto/\fBcurs_termcap\fP(3X) tigetflag/\fBcurs_terminfo\fP(3X) tigetnum/\fBcurs_terminfo\fP(3X) tigetstr/\fBcurs_terminfo\fP(3X) timeout/\fBcurs_inopts\fP(3X) tiparm/\fBcurs_terminfo\fP(3X) tiparm_s/\fBcurs_terminfo\fP(3X)* tiscan_s/\fBcurs_terminfo\fP(3X)* لمس_سطر/\fBcurs_touch\fP(3X) لمس_نافذة/\fBcurs_touch\fP(3X) tparm/\fBcurs_terminfo\fP(3X) tputs/\fBcurs_termcap\fP(3X) tputs/\fBcurs_terminfo\fP(3X) trace/\fBcurs_trace\fP(3X)* typeahead/\fBcurs_inopts\fP(3X) unctrl/\fBcurs_util\fP(3X) unget_wch/\fBcurs_get_wch\fP(3X) ungetch/\fBcurs_getch\fP(3X) ungetmouse/\fBcurs_mouse\fP(3X)* untouchwin/\fBcurs_touch\fP(3X) use_default_colors/\fBdefault_colors\fP(3X)* use_env/\fBcurs_util\fP(3X) use_extended_names/\fBcurs_extend\fP(3X)* use_legacy_coding/\fBlegacy_coding\fP(3X)* use_screen/\fBcurs_threads\fP(3X)* use_tioctl/\fBcurs_util\fP(3X)* use_window/\fBcurs_threads\fP(3X)* vid_attr/\fBcurs_terminfo\fP(3X) vid_puts/\fBcurs_terminfo\fP(3X) vidattr/\fBcurs_terminfo\fP(3X) vidputs/\fBcurs_terminfo\fP(3X) vline/\fBcurs_border\fP(3X) vline_set/\fBcurs_border_set\fP(3X) vw_printw/\fBcurs_printw\fP(3X) vw_scanw/\fBcurs_scanw\fP(3X) vwprintw/\fBcurs_printw\fP(3X) vwscanw/\fBcurs_scanw\fP(3X) wadd_wch/\fBcurs_add_wch\fP(3X) wadd_wchnstr/\fBcurs_add_wchstr\fP(3X) wadd_wchstr/\fBcurs_add_wchstr\fP(3X) waddch/\fBcurs_addch\fP(3X) waddchnstr/\fBcurs_addchstr\fP(3X) waddchstr/\fBcurs_addchstr\fP(3X) waddnstr/\fBcurs_addstr\fP(3X) waddnwstr/\fBcurs_addwstr\fP(3X) waddstr/\fBcurs_addstr\fP(3X) waddwstr/\fBcurs_addwstr\fP(3X) wattr_get/\fBcurs_attr\fP(3X) wattr_off/\fBcurs_attr\fP(3X) wattr_on/\fBcurs_attr\fP(3X) wattr_set/\fBcurs_attr\fP(3X) wattroff/\fBcurs_attr\fP(3X) wattron/\fBcurs_attr\fP(3X) wattrset/\fBcurs_attr\fP(3X) wbkgd/\fBcurs_bkgd\fP(3X) wbkgdset/\fBcurs_bkgd\fP(3X) wbkgrnd/\fBcurs_bkgrnd\fP(3X) wbkgrndset/\fBcurs_bkgrnd\fP(3X) wborder/\fBcurs_border\fP(3X) wborder_set/\fBcurs_border_set\fP(3X) wchgat/\fBcurs_attr\fP(3X) wclear/\fBcurs_clear\fP(3X) wclrtobot/\fBcurs_clear\fP(3X) wclrtoeol/\fBcurs_clear\fP(3X) wcolor_set/\fBcurs_attr\fP(3X) wcursyncup/\fBcurs_window\fP(3X) wdelch/\fBcurs_delch\fP(3X) wdeleteln/\fBcurs_deleteln\fP(3X) wecho_wchar/\fBcurs_add_wch\fP(3X) wechochar/\fBcurs_addch\fP(3X) wenclose/\fBcurs_mouse\fP(3X)* werase/\fBcurs_clear\fP(3X) wget_wch/\fBcurs_get_wch\fP(3X) wget_wstr/\fBcurs_get_wstr\fP(3X) wgetbkgrnd/\fBcurs_bkgrnd\fP(3X) wgetch/\fBcurs_getch\fP(3X) wgetdelay/\fBcurs_opaque\fP(3X)* wgetn_wstr/\fBcurs_get_wstr\fP(3X) wgetnstr/\fBcurs_getstr\fP(3X) wgetparent/\fBcurs_opaque\fP(3X)* wgetscrreg/\fBcurs_opaque\fP(3X)* wgetstr/\fBcurs_getstr\fP(3X) whline/\fBcurs_border\fP(3X) whline_set/\fBcurs_border_set\fP(3X) win_wch/\fBcurs_in_wch\fP(3X) win_wchnstr/\fBcurs_in_wchstr\fP(3X) win_wchstr/\fBcurs_in_wchstr\fP(3X) winch/\fBcurs_inch\fP(3X) winchnstr/\fBcurs_inchstr\fP(3X) winchstr/\fBcurs_inchstr\fP(3X) وِنستر/\fBcurs_instr\fP(3X) وِنوِستر/\fBcurs_inwstr\fP(3X) وِنز_إنوِستر/\fBcurs_ins_wstr\fP(3X) وِنز_وِتش/\fBcurs_ins_wch\fP(3X) وِنز_وِستر/\fBcurs_ins_wstr\fP(3X) وِنزش/\fBcurs_insch\fP(3X) وِنزدلن/\fBcurs_deleteln\fP(3X) وِنزرتلن/\fBcurs_deleteln\fP(3X) وِنزنستر/\fBcurs_insstr\fP(3X) وِنزستر/\fBcurs_insstr\fP(3X) وِنستر/\fBcurs_instr\fP(3X) وِنوِستر/\fBcurs_inwstr\fP(3X) دبليوماوس_ترافو/\fBcurs_mouse\fP(3X)* دبليوموف/\fBcurs_move\fP(3X) دبليونوترفش/\fBcurs_refresh\fP(3X) دبليوبرينتو/\fBcurs_printw\fP(3X) دبليوريدرولن/\fBcurs_refresh\fP(3X) دبليورفش/\fBcurs_refresh\fP(3X) دبليوريسايز/\fBدبليوريسايز\fP(3X)* wscanw/\fBcurs_scanw\fP(3X) wscrl/\fBcurs_scroll\fP(3X) wsetscrreg/\fBcurs_outopts\fP(3X) wstandend/\fBcurs_attr\fP(3X) wstandout/\fBcurs_attr\fP(3X) wsyncdown/\fBcurs_window\fP(3X) wsyncup/\fBcurs_window\fP(3X) wtimeout/\fBcurs_inopts\fP(3X) wtouchln/\fBcurs_touch\fP(3X) wunctrl/\fBcurs_util\fP(3X) wvline/\fBcurs_border\fP(3X) wvline_set/\fBcurs_border_set\fP(3X) .TE .PP إضافة \fI\%ncurses\fP \fIلمؤشر الشاشة\fP تُضيف دوال إضافية تُقابل العديد مما سبق، كل منها بلاحقة \*(``_sp\*(''؛ انظر \fBcurs_sp_funcs\fP(3X). .PP توفر بعض الإضافات قابل للتكوين عند تجميع \fI\%ncurses\fP؛ انظر القسمين \*(``ALTERNATE CONFIGURATIONS\*('' و \*(``EXTENSIONS\*('' أدناه. .SH "قيمة الإرجاع" ما لم يُذكر خلاف ذلك، الدوال التي تُرجع أعدادًا صحيحة تُرجع الثوابت \fBOK\fP عند النجاح و \fBERR\fP عند الفشل؛ انظر \fB\%curs_variables\fP(3X). الدوال التي تُرجع مؤشرات تُرجع مؤشرًا فارغًا عند الفشل. عادةً، تعالج \fI\%ncurses\fP المؤشر الفارغ المُمرر كمعامل دالة كفشل. الدوال المسبوقة بـ \*(``mv\*('' تؤدي أولاً حركة المؤشر وتفشل إذا كان الموضع (\fIy\fP, \fIx\fP) خارج حدود النافذة. .SH البيئة الرموز التالية من بيئة العملية تُخصص سلوك وقت التشغيل لتطبيقات \fI\%ncurses\fP. قد تُكوّن المكتبة لتتجاهل المتغيرات \fI\%TERMINFO\fP و \fI\%TERMINFO_DIRS\fP و \fI\%TERMPATH\fP و \fIHOME\fP، إذا كان المستخدم هو المستخدم الفائق (الجذر)، أو استخدم التطبيق \fI\%setuid\fP(2) أو \fI\%setgid\fP(2). .SS \fIBAUDRATE\fP مكتبة التصحيح تفحص هذا المتغير عندما يُعيد التطبيق توجيه المخرجات إلى ملف. \fI\%ncurses\fP تُفسر قيمته الصحيحة كسرعة خط الطرفية بالبت في الثانية. إذا كانت تلك القيمة غائبة أو غير صالحة، تستخدم \fI\%ncurses\fP 9600. هذه الميزة تسمح للمطورين ببناء حالات اختبار قابلة للتكرار تراعي قرارات التحسين التي تعتمد على سرعة خط الطرفية. .SS "\fICC\fP (حرف الأمر)" عند تعيينه، تتغير قيمة إمكانية \fB\%command_character\fP \%(\fBcmdch\fP) لمدخلات \fI\%term\%info\fP المُحمّلة إلى قيمة هذا المتغير. عدد قليل جدًا من مدخلات \fI\%term\%info\fP توفر هذه الميزة. .PP لأن هذا الاسم يُستخدم أيضًا في بيئات التطوير لتخزين اسم مترجم C، فإن \fI\%ncurses\fP يتجاهل قيمته إذا لم يكن طوله حرفًا واحدًا. .SS \fICOLUMNS\fP يحدد هذا المتغير عرض الشاشة بوحدات الخلايا المحرفية. التطبيقات التي تعمل في بيئة النوافذ عادةً ما تستطيع الحصول على عرض النافذة التي تنفذ فيها. يفرض \fI\%ncurses\fP حدًا أقصى قدره 512 عند قراءة القيمة. إذا لم يُعرف \fI\%COLUMNS\fP ولم يكن حجم شاشة الطرفية متاحًا من برنامج تشغيل الطرفية، يستخدم \fI\%ncurses\fP الحجم المحدد بواسطة قدرة \fB\%columns\fP \%(\fBcols\fP) لإدخال نوع الطرفية في قاعدة بيانات \fI\%term\%info\fP، إن وُجد. .PP من المهم أن يستخدم تطبيقك حجم الشاشة الصحيح. الكشف الآلي عنه ليس ممكنًا دائمًا لأن التطبيق قد يعمل على مضيف لا يحترم NAWS (مفاوضات حول حجم النافذة) أو بهوية مستخدم مختلفة عن مالك ملف جهاز الطرفية. تعيين \fI\%COLUMNS\fP و/أو \fI\%LINES\fP يتجاوز استخدام المكتبة لحجم الشاشة المُحصل عليه من نظام التشغيل. .PP يمكن تحديد المتغيرين \fI\%COLUMNS\fP و \fI\%LINES\fP بشكل مستقل. هذه الخاصية مفيدة لتجاوز العيوب في أوصاف أنواع الطرفيات القديمة؛ أوصاف \fI\%xterm\fP(1) التي تحدد 65 سطرًا كانت سيئة السمعة يومًا. للحصول على أفضل النتائج، تجنب تحديد رموز القدرة \fBcols\fP و \fBlines\fP في أوصاف \fI\%term\%info\fP لمحاكيات الطرفيات. .PP يمكن لـ \fBuse_env\fP(3X) تعطيل استخدام بيئة العملية في تحديد حجم الشاشة. يمكن لـ \fBuse_tioctl\fP(3X) تحديث \fI\%COLUMNS\fP و \fI\%LINES\fP لمطابقة حجم الشاشة المُحصل عليه من استدعاءات النظام أو قاعدة بيانات الطرفيات. .SS \fIESCDELAY\fP لكي يميز \fIcurses\fP حرف ESC الناتج عن ضغط المستخدم لمفتاح \*(``Escape\*('' على جهاز الإدخال عن ذلك الذي يبدأ \fIتسلسل هروب\fP (كما يُنتج عادةً بواسطة مفاتيح الوظائف)، ينتظر بعد استقبال حرف الهروب ليرى ما إذا كانت محارف إضافية متاحة في دفق الإدخال خلال فترة قصيرة. يخزن متغير عام \fB\%ESCDELAY\fP هذه الفترة بالمللي ثانية. القيمة المبدئية 1000 (ثانية واحدة) كافية لمعظم الاستخدامات. يتجاوز متغير البيئة هذا هذه القيمة؛ يفرض \fI\%ncurses\fP حدًا أقصى قدره 30,000 (30 ثانية) عند قراءة القيمة. .PP الحالة الأكثر شيوعًا التي قد ترغب فيها بتغيير هذه القيمة هي العمل مع مضيف بعيد عبر قناة اتصال بطيئة. إذا لم يستقبل المضيف الذي يشغل تطبيق \fIcurses\fP محارف تسلسل الهروب في الوقت المناسب، يمكن للمكتبة تفسيرها كأحداث ضغطات مفاتيح متعددة. على العكس، كاتب سريع على اتصال منخفض الكمون الذي يُدخل بالصدفة ESC متبوعًا بمحارف تطابق تسلسل هروب قد يواجه سلوك تطبيق مربك. .PP أحداث الفأرة في \fI\%xterm\fP(1) هي شكل من تسلسل الهروب؛ لذلك، إذا كان تطبيقك يستخدم النقر المتعدد بكثافة، قد ترغب في إطالة القيمة المبدئية لأن التأخير ينطبق على حدث النقر المتعدد المركب وكذلك النقرات الفردية. .PP لا ينبغي للتطبيقات المحمولة الاعتماد على وجود \fB\%ESCDELAY\fP بأي شكل، لكن تعيين متغير البيئة بدلاً من المتغير العام لا يخلق مشاكل عند ترجمة تطبيق. .PP إذا كان \fB\%keypad\fP(3X) معطلًا لنافذة \fIcurses\fP التي تستقبل الإدخال، فإن \fB\%ESCDELAY\fP غير ذي صلة ويجب على البرنامج إزالة الغموض عن تسلسلات الهروب بنفسه. .SS \fIHOME\fP قد يقرأ \fI\%ncurses\fP ويكتب أوصاف طرفيات مساعدة في ملفات \fI\%.termcap\fP و \fI\%.terminfo\fP في دليل المستخدم الرئيسي. .SS \fILINES\fP هذا النظير لـ \fI\%COLUMNS\fP يحدد ارتفاع الشاشة بالمحارف. القدرة والرمز المقابلان في \fI\%term\%info\fP هما \fB\%lines\fP. انظر وصف المتغير \fI\%COLUMNS\fP أعلاه. .SS \fIMOUSE_BUTTONS_123\fP (منفذ OS/2 EMX فقط) يُرقم OS/2 فأرة ثلاثية الأزرار بشكل غير متسق مع المنصات الأخرى، بحيث يكون 1 هو الزر الأيسر، 2 الأيمن، و3 الأوسط. يخصص هذا المتغير ترقيم أزرار الفأرة. يجب أن تكون قيمته ثلاثة أرقام 1\-3 بأي ترتيب. افتراضيًا، يفترض \fI\%ncurses\fP ترقيمًا \*(``132\*(''. .SS \fINCURSES_ASSUMED_COLORS\fP إذا عُيّن، يتجاوز هذا المتغير افتراض المكتبة \fI\%ncurses\fP المُضمّن في الترجمة بأن ألوان الطرفية المبدئية هي أبيض على أسود؛ انظر \fB\%default_colors\fP(3X). عيّن قيم لون المقدمة والخلفية باستخدام متغير البيئة هذا بتعيين قيمتين صحيحتين مفصولتين بفاصلة، تشيران إلى رقمي لون المقدمة والخلفية، على التوالي. .PP على سبيل المثال، لإخبار \fI\%ncurses\fP بعدم افتراض أي شيء عن الألوان، استخدم قيمة \*(``\-1,\-1\*(''. لجعل مخطط الألوان المبدئي أخضر على أسود على طرفية تستخدم تعيينات ألوان ANSI\ X3.64/ECMA\-48/ISO\ 6429، استخدم \*(``2,0\*(''. يقبل \fI\%ncurses\fP قيمًا صحيحة من \-1 حتى قيمة قدرة \fI\%term\%info\fP \fB\%max_colors\fP (\fBcolors\fP) لنوع الطرفية المحدد. .SS \fINCURSES_CONSOLE2\fP .\" https://www.hanselman.com/blog/console2-a-better-windows-command-prompt (منفذ MinGW فقط) يعالج برنامج \fI\%Console2\fP بشكل معيب استدعاء واجهة برمجة تطبيقات وحدة التحكم من Microsoft \fI\%Create\%Console\%Screen\%Buffer\fP. التطبيقات التي تستخدمه ستتوقف. ومع ذلك، من الممكن محاكاة إجراء هذا الاستدعاء عن طريق تعيين الإحداثيات، وحفظ واستعادة محتويات الشاشة الأصلية بشكل صريح. تعيين متغير البيئة \fI\%NCGDB\fP له نفس التأثير. .SS \fINCURSES_GPM_TERMS\fP (لينكس فقط) عندما يُهيأ \fI\%ncurses\fP لاستخدام واجهة GPM، قد يُدرج هذا المتغير اسم نوع طرفية واحد أو أكثر، مفصولة بخطوط عمودية (\fB|\fP) أو نقطتين رأسيتين (\fB:\fP)، يُطابق بها متغير \fITERM\fP (انظر أدناه). القيمة الفارغة تُعطل واجهة GPM، مستخدمةً دعم \fI\%ncurses\fP المدمج لبروتوكولات فأر \fI\%xterm\fP(1) بدلاً من ذلك. إذا غاب المتغير، يحاول \fI\%ncurses\fP فتح GPM إذا احتوى \fITERM\fP على \*(``linux\*(''. .SS \fINCURSES_NO_HARD_TABS\fP قد يستخدم \fI\%ncurses\fP محارف الجدولة في تحسين حركة المؤشر. في بعض الحالات، قد لا يعالج برنامج تشغيل طرفيتك هذه المحارف بشكل صحيح. عيّن هذا المتغير البيئي إلى أي قيمة لتعطيل الميزة. يمكنك أيضاً ضبط إعدادات \fI\%stty\fP(1) لتجنب المشكلة. .SS \fINCURSES_NO_MAGIC_COOKIE\fP تخزن العديد من الأطراف خصائص الفيديو كخصائص لخلية محرف، كما يفعل \fIcurses\fP. تاريخياً، سجلت بعض التغييرات في خصائص الفيديو كبيانات \fIاحتلت\fP منطقياً (لكن بشكل غير مرئي) خلايا محرف على الشاشة، مُشغّلة أو مُعطّلة الخصائص، مشابهاً للوسوم في لغة ترميز، والتي كان يجب طباعتها فوقياً لتصوير المحتويات المرغوبة للخلايا؛ تُسمى هذه \*(``الكعكات السحرية\*(''. إذا كان إدخال \fI\%term\%info\fP لنوع طرفيتك لا يصف معالجتها للكعكات السحرية بشكل كافٍ، عيّن هذا المتغير إلى أي قيمة لتوجيه \fI\%ncurses\fP لتعطيل الخصائص بالكامل. .SS \fINCURSES_NO_PADDING\fP تصف معظم أوصاف أنواع الأطراف في قاعدة بيانات \fI\%term\%info\fP الأجهزة المادية. يستخدم العديد من الأشخاص تطبيقات قائمة على \fIcurses\fP في برامج محاكاة طرفية تعمل في بيئة نوافذ. يمكن لهذه البرامج مضاعفة جميع الميزات الهامة للطرفية المادية، لكنها غالباً تفتقر إلى قيودها. من أبرز هذه العيوب الغائبة مشكلة إدارة تدفق البيانات؛ أي تحديد سرعة الاتصال بما يمكن للجهاز المادي معالجته. ما لم تُوصل طرفية مادية بمركز طرفية (الذي يقوم بالتحكم بالتدفق)، يجب على التطبيق إدارة التدفق بنفسه لمنع التجاوز وفقدان البيانات. .PP الحل الذي لا يكلف أجهزة هو أن يوقف التطبيق الإرسال بعد توجيه طرفية لتنفيذ عملية تؤديها ببطء، مثل مسح الشاشة. تضمن العديد من أوصاف أنواع الأطراف، بما في ذلك وصف VT100، مواصفات تأخير في الإمكانيات. قد ترغب في استخدام هذه الأوصاف الطرفية دون دفع ثمن الأداء. عيّن \fI\%NCURSES_NO_PADDING\fP إلى أي قيمة لتعطيل كل الحشو باستثناء الإلزامي. يُستخدم الحشو الإلزامي بواسطة إمكانيات طرفية مثل \fB\%flash_screen\fP (\fBflash\fP). .SS \fINCURSES_NO_SETBUF\fP (مهمل) قبل التغييرات الداخلية المطورة في \fI\%ncurses\fP 5.9 (التصحيحات من 20120825 إلى 20130126)، استخدمت المكتبة \fI\%setbuf\fP(3) لتمكين الإخراج المخزن بالكامل عند تهيئة الطرفية. فُعل هذا، كما في SVr4 \fIcurses\fP، لزيادة الأداء. لأغراض الاختبار، لكل من \fI\%ncurses\fP وبعض التطبيقات، جُعلت هذه الميزة اختيارية. تعطيل هذا المتغير عطل تخزين الإخراج مؤقتاً، تاركاً دفق الإخراج في الوضع الأصلي (عادةً تخزين سطري مؤقت). .PP في الوقت الحالي، يقوم \fI\%ncurses\fP بتخزينه المؤقت الخاص ولا يحتاج هذا الحل البديل؛ لا يعدل تخزين دفق الإخراج القياسي. هذا النهج يجعل معالجة المكتبة للإشارات المبدوءة بلوحة المفاتيح أكثر متانة. العيب هو أن بعض البرامج غير التقليدية خلطت استدعاءات \fI\%stdio\fP(3) مع استدعاءات \fI\%ncurses\fP وحصلت (عادةً) على السلوك الذي توقعته. لم يعد هذا هو الحال؛ لا يكتب \fI\%ncurses\fP إلى واصف ملف الإخراج القياسي عبر دفق مخزن مؤقتاً بواسطة \fIstdio\fP. .PP كحالة خاصة، لا تزال استدعاءات واجهة برمجة التطبيقات منخفضة المستوى مثل \fB\%putp\fP(3X) تستخدم دفق الإخراج القياسي. استدعاءات \fIcurses\fP عالية المستوى مثل \fB\%printw\fP(3X) لا تفعل ذلك. .SS \fINCURSES_NO_UTF8_ACS\fP عند التهيئة، يفحص \fI\%ncurses\fP المتغير البيئي \fITERM\fP للحالات الخاصة حيث محارف رسم الأشكال VT100 (وإمكانيات مجموعة المحارف البديلة المقابلة \fI\%term\%info\fP) معروفة بأنها غير مدعومة بأنواع أطراف تدعي خلاف ذلك توافق VT100. تحديداً، عند التشغيل في بيئة محلية UTF\-8، يتجاهلها جهاز وحدة التحكم الافتراضية لينكس وبرنامج GNU \fI\%screen\fP(1). عيّن هذا المتغير إلى قيمة غير صفرية لتوجيه \fI\%ncurses\fP بأن دعم ACS للطرفية معطل؛ ثم تُخرج المكتبة نقاط رمز Unicode التي تتوافق مع محارف رسم الأشكال. عيّنه إلى صفر (أو غير عدد صحيح) لتعطيل الفحص الخاص لأسماء أنواع الأطراف المطابقة لـ \*(``linux\*('' أو \*(``screen\*(''، موجهاً \fI\%ncurses\fP لافتراض أن ميزة ACS تعمل إذا أعلن وصف نوع الطرفية عنها. .PP كبديل لاستخدام هذا المتغير، يفحص \fI\%ncurses\fP إمكانية رقمية موسعة \fI\%term\%info\fP \fBU8\fP يمكن تجميعها باستخدام \*(``\fBtic \-x\fP\*(''. الأمثلة تتبع. .PP .RS 3 .EX .nf # linux console, if patched to provide working # VT100 shift\-in/shift\-out, with corresponding font. linux\-vt100|linux console with VT100 line\-graphics, U8#0, use=linux, \& # uxterm with vt100Graphics resource set to false xterm\-utf8|xterm relying on UTF\-8 line\-graphics, U8#1, use=xterm, .fi .EE .RE .PP اختير الاسم المكون من محرفين \*(``U8\*('' للسماح باستخدامه عبر واجهة \fItermcap\fP الخاصة بـ \fI\%ncurses\fP. .SS \fINCURSES_TRACE\fP عند التهيئة، يفحص \fI\%ncurses\fP (في تكوين التصحيح الخاص به) وجود هذا المتغير. إذا عُرف بقيمة صحيحة، تستدعي المكتبة \fB\%curses_trace\fP(3X) بتلك القيمة كمعامل. .SS \fITERM\fP المتغير \fITERM\fP يُشير إلى نوع الطرفية. كل نوع متميز، رغم تشابه العديد منها. يُضبط عادةً بواسطة محاكيات الطرفية لمساعدة التطبيقات في إيجاد وصف طرفية قابل للعمل. بعضها يختار تقريبًا شائعًا مثل \*(``ansi\*('' أو \*(``vt100\*('' أو \*(``xterm\*('' بدلاً من تطابق دقيق مع قدراتها. ليس نادرًا أن يواجه تطبيق مشاكل مع هذا النهج؛ على سبيل المثال، قد لا تعمل ضغطة مفتاح بشكل صحيح، أو لا تُنتج أي تأثير سوى أحرف تبدو غير مفهومة على الشاشة. .PP ضبط \fITERM\fP ليس له تأثير على تشغيل العتاد؛ بل يؤثر على طريقة تواصل التطبيقات مع الطرفية. وبالمثل، كقاعدة عامة (\fIxterm\fP(1) استثناء نادر)، محاكيات الطرفية التي تسمح لك بتحديد \fITERM\fP كمعامل أو قيمة تهيئة لا تُغير سلوكها ليتطابق مع ذلك الضبط. .SS \fITERMCAP\fP إذا كان \fI\%ncurses\fP مُهيأ بدعم \fItermcap\fP، فإنه يتحقق من وجود وصف نوع طرفية بصيغة \fItermcap\fP إذا لم يتوفر وصف بصيغة \fI\%term\%info\fP. ضبط هذا المتغير يُوجّه \fI\%ncurses\fP لتجاهل موقع قاعدة بيانات \fItermcap\fP المعتاد، \fI\%/etc/termcap\fP؛ انظر \fI\%TERMPATH\fP أدناه. يجب أن يحتوي \fI\%TERMCAP\fP إما على وصف طرفية (مع إزالة الأسطر الجديدة)، أو اسم ملف يُشير إلى مكان تخزين المعلومات المطلوبة بواسطة متغير البيئة \fITERM\fP. .SS \fITERMINFO\fP يمكن تهيئة \fI\%ncurses\fP لقراءة قواعد بيانات أوصاف أنواع الطرفيات في مواقع مختلفة باستخدام صيغ متنوعة. هذا المتغير يُلغي الموقع المبدئي. .bP الأوصاف بصيغة \fI\%term\%info\fP تُخزّن عادةً في شجرة أدلة باستخدام أدلة فرعية مُسمّاة بأول حرف شائع لأنواع الطرفيات المذكورة فيها. استخدم System\ V هذا المخطط. .bP إذا كان \fI\%ncurses\fP مُهيأ لاستخدام قواعد بيانات مُجزّأة، فقد يُسمي \fI\%TERM\%INFO\fP موقعها، مثل \fI\%/usr/share/terminfo.db\fP، بدلاً من \fI\%/usr/share/terminfo/\fP. .PP قاعدة البيانات المُجزّأة تستخدم مساحة قرص أقل وتكون أسرع قليلاً من شجرة الأدلة. ومع ذلك، تفترض بعض التطبيقات وجود شجرة الأدلة وتقرأها مباشرةً، متجاهلة واجهة برمجة التطبيقات \fI\%term\%info\fP. .bP إذا كان \fI\%ncurses\fP مُهيأ بدعم \fItermcap\fP، فقد يحتوي هذا المتغير على موقع ملف \fI\%termcap\fP. .bP إذا بدأت قيمة \fI\%TERM\%INFO\fP بـ \*(``hex:\*('' أو \*(``b64:\*(''، يستخدم \fI\%ncurses\fP باقي القيمة كوصف \fI\%term\%info\fP مُجمّع. يمكنك إنتاج صيغة base64 باستخدام \fB\%infocmp\fP(1M). .RS 4 .IP .EX .nf TERMINFO=$(infocmp \-0 \-Q2 \-q) export TERMINFO .fi .EE .RE .IP يستخدم \fI\%ncurses\fP الوصف المُجمّع فقط إذا تطابق مع نوع الطرفية المُعرّف بواسطة \fITERM\fP. .PP ضبط \fI\%TERM\%INFO\fP هو أبسط طريقة، ولكن ليست الوحيدة، لتوجيه \fI\%ncurses\fP إلى قاعدة بيانات طرفية. مسار البحث كما يلي. .bP آخر قاعدة بيانات طرفية كتب إليها تطبيق \fI\%ncurses\fP الجاري، إن وُجدت .bP الموقع المُحدد بواسطة متغير البيئة \fI\%TERM\%INFO\fP .bP \fI$HOME/.terminfo\fP .bP .\" empty المواقع المُدرجة في متغير البيئة \fI\%TERMINFO_DIRS\fP .ds td .if !'/usr/share/terminfo'no default value' .as td /usr/share/terminfo .if !'/usr/share/terminfo\*(td'' \{\ .bP location(s) configured and compiled into .I \%ncurses .RS .if !'\*(td'' \{\ .bP .I \%/usr/share/terminfo .\} .if !'@TERMINFO'' .if !'\*(td'/usr/share/terminfo' \{\ .bP .I \%/usr/share/terminfo .\} .\} .RE .SS \fITERMINFO_DIRS\fP هذا المتغير يُحدد قائمة من المواقع، شبيهة بـ \fIPATH\fP، حيث يبحث \fI\%ncurses\fP عن أوصاف أنواع الطرفيات الموصوفة بواسطة \fI\%TERMINFO\fP أعلاه. عناصر القائمة مفصولة بنقطتين رأسيتين في Unix وفواصل منقوطة في OS/2 EMX. يفتقر System\ V \fI\%term\%info\fP إلى ميزة مقابلة؛ \fI\%TERMINFO_DIRS\fP هو امتداد لـ \fI\%ncurses\fP. .SS \fITERMPATH\fP إذا لم يحتوِ \fI\%TERMCAP\fP على وصف لنوع طرفية أو اسم ملف، فإن \fI\%ncurses\fP يتحقق من محتويات \fI\%TERMPATH\fP، وهي قائمة مواقع، تشبه \fIPATH\fP، يبحث فيها عن أوصاف أنواع الطرفيات \fItermcap\fP. تُفصل عناصر القائمة بنقطتين رأسيتين في يونكس وفواصل منقوطة في OS/2 EMX. .PP إذا كان كل من \fI\%TERMCAP\fP و \fI\%TERMPATH\fP غير مُعيَّنين أو غير صالحين، فإن \fI\%ncurses\fP يبحث عن الملفات \fI\%/etc/termcap\fP و \fI\%/usr/share/misc/termcap\fP و \fI\%$HOME/.termcap\fP، بهذا الترتيب. .SH "تهيئات بديلة" العديد من تهيئات \fI\%ncurses\fP المختلفة ممكنة، تُحددها الخيارات المُعطاة لسكريبت \fI\%configure\fP عند بناء المكتبة. شغّل السكريبت بالخيار \fB\%\-\-help\fP لتصفحها جميعًا. القليل منها ذو أهمية خاصة لمطور التطبيقات الذي يستخدم \fI\%ncurses\fP. .TP 5 \fB\-\-disable\-overwrite\fP تجنب تعارضات أسماء الملفات بين \fI\%ncurses\fP وتثبيت \fIcurses\fP موجود على النظام. إدراج المعالج المسبق C القياسي لمكتبة \fIcurses\fP يكون كالتالي. .RS 5 .PP .RS 4 .EX .nf .\" The dummy character prevents undesired rewriting of the next line on .\" installation of the man page. \fB#\&include \fP .fi .EE .RE .PP إذا تم تثبيت \fI\%ncurses\fP مع تعطيل الاستبدال، فإنه يضع ملفات الرأس الخاصة به في دليل فرعي. إليك مثال. .PP .RS 4 .EX .\" The dummy character prevents undesired rewriting of the next line on .\" installation of the man page. \fB#\&include \fP .EE .RE .PP مع \fB\%\-\-disable\-overwrite\fP، يحذف التثبيت أيضًا رابطًا رمزيًا كان سيجعل خيار المترجم \fB\%\-lcurses\fP يربط ملفات الكائن مع \fI\%ncurses\fP بدلاً من مكتبة النظام \fIcurses\fP. .PP الدليل المستخدم بواسطة هذه التهيئة لـ \fI\%ncurses\fP مُوضَّح في القسم \*(``SYNOPSIS\*('' أعلاه. .RE .TP 5 \fB\-\-enable\-widec\fP (مبدئي لـ ABI\ 6+ منذ 2023\-10\-21) فعّل دعم المحارف العريضة. سكريبت \fI\%configure\fP يعيد تسمية مكتبة \fI\%ncurses\fP (ومكتبة \fItinfo\fP، إذا تم تحديد \fB\%\-\-with\-termlib\fP أيضًا)، بإلحاق \*(``w\*(''. تطبيق يرغب في دعم المحارف العريضة يستخدم بعد ذلك \fB\%\-lncursesw\fP (أو \fB\%\-ltinfow\fP) بدلاً من \fB\%\-lncurses\fP (أو \fB\%\-ltinfo\fP) كخيار رابط له. مكتبات \fIncurses++\fP و \fIpanel\fP و \fIform\fP و \fImenu\fP يُعاد تسميتها بالمثل. .IP يجب على التطبيق أيضًا تعريف رموز معينة للمعالج المسبق C لتفعيل ميزات المحارف العريضة في ملفات رأس \fIcurses\fP لاستخدام الدوال الموسعة (ذات المحارف العريضة). الرمز الذي يُفعِّل هذه الميزات قد تغير منذ X/Open Curses Issue\ 4. .RS 5 .bP في الأصل، كانت ميزة المحارف العريضة تتطلب الرمز \fI\%_XOPEN_SOURCE_EXTENDED\fP، لكن ذلك كان صالحًا فقط لـ XPG4 (1996). .bP لاحقًا، اعتُبر ذلك متعارضًا مع قيمة \fI\%_XOPEN_SOURCE\fP البالغة 500. .bP اعتبارًا من منتصف 2018، لا تتطلب أي ميزة من \fI\%ncurses\fP قيمة \fI\%_XOPEN_SOURCE\fP أكبر من 600. ومع ذلك، يوصي X/Open Curses Issue\ 7 (2009) بتعريفها على 700. .bP بدلاً من ذلك، يمكنك تفعيل الميزة بتعريف \fB\%NCURSES_WIDECHAR\fP مع التحذير بأن بعض ملفات الرأس غير \fI\%curses.h\fP قد تتطلب قيمة محددة لـ \fI\%_XOPEN_SOURCE\fP (أو رمز خاص بالنظام). .RE .IP .\" XXX: What's different in term.h? ملف الرأس \fI\%curses.h\fP المُثبَّت لمكتبة المحارف العريضة مصمم ليكون متوافقًا مع رأس المكتبة غير العريضة. يختلف فقط حجم بنية \fI\%WINDOW\fP؛ قليل من التطبيقات تتطلب أكثر من مؤشرات إلى \fI\%WINDOW\fP. .IP إذا تم تثبيت ملفات رأس \fI\%ncurses\fP مع السماح بالاستبدال (المبدئي، لكن انظر \fB\%\-\-disable\-overwrite\fP أعلاه)، فيجب تثبيت رؤوس مكتبة المحارف العريضة أخيرًا بواسطة أنظمة التعبئة وما شابه، للسماح ببناء التطبيقات باستخدام أي من المكتبتين من نفس مجموعة الرؤوس. .TP 5 \fB\-\-with\-pthread\fP يتيح دعم التطبيقات متعددة الخيوط. يُعيد سكريبت \fI\%configure\fP تسمية مكتبة \fI\%ncurses\fP (ومكتبة \fItinfo\fP، إذا حُدد \fB\%\-\-with\-termlib\fP أيضًا)، مُلحقًا \*(``t\*('' (قبل أي \*(``w\*('' يُضاف بواسطة \fB\%\-\-enable\-widec\fP). يستخدم التطبيق الراغب في دعم خيوط تنفيذ متعددة، على سبيل المثال، \fB\%\-lncursest\fP (أو \fB\%\-ltinfot\fP) بدلاً من \fB\%\-lncurses\fP (أو \fB\%\-ltinfo\fP) كخيار رابط. تُعاد تسمية مكتبات \fIncurses++\fP و\fIpanel\fP و\fIform\fP و\fImenu\fP بالمثل. .IP .\" see definition of NCURSES_WRAPPED_VAR تستبدل \fI\%ncursest\fP و\fI\%ncursestw\fP المتغيرات العامة مثل \fB\%LINES\fP بوحدات ماكرو تسمح بالوصول للقراءة فقط. وفي الوقت نفسه، توفر دوالًا لتعيين هذه القيم. تتطلب تطبيقات قليلة جدًا تغييرات للعمل مع هذه الاتفاقية. .TP 5 \fB\-\-with\-shared\fP .tQ \fB\-\-with\-normal\fP .tQ \fB\-\-with\-debug\fP .tQ \fB\-\-with\-profile\fP يُلزم بترجمة مكتبة \fI\%ncurses\fP (ومكتبة \fItinfo\fP، إذا حُدد \fB\%\-\-with\-termlib\fP أيضًا) بالأشكال المحددة. تختلف أسماء المكتبات المشتركة والعادية (الثابتة) بلواحقها، كما هو الحال مع \fI\%libncurses.so\fP و\fI\%libncurses.a\fP. تضيف مكتبات التصحيح والتنميط \*(``_g\*('' و\*(``_p\*('' إلى جذور هذه الأسماء على التوالي، مُشكلة \fI\%libncurses_g.so\fP و\fI\%libncurses_p.a\fP، على سبيل المثال. تُتاح مكتبات \fIncurses++\fP و\fIpanel\fP و\fIform\fP و\fImenu\fP بالمثل. .TP 5 \fB\-\-with\-termlib\fP توفر دوال واجهة الطرفية منخفضة المستوى لـ \fI\%ncurses\fP (تلك التي لا تعتمد على تجريدات \fI\%SCREEN\fP و\fI\%WINDOW\fP) في مكتبة باسم \fI\%tinfo\fP. يُقلل هذا الترتيب من أوقات الربط و/أو التحميل للتطبيق عندما لا يحتاج إلى ميزات \fIcurses\fP عالية المستوى. .IP توثق الصفحات التالية دوال \fIcurses\fP المقدمة من \fI\%tinfo\fP: .RS .bP \fB\%curs_extend\fP(3X) \- إضافات \fIncurses\fP متنوعة .bP \fB\%curs_inopts\fP(3X) \- خيارات إدخال \fIcurses\fP .bP \fB\%curs_kernel\fP(3X) \- إجراءات \fIcurses\fP منخفضة المستوى .bP \fB\%curs_termattrs\fP(3X) \- إجراءات استعلام بيئة \fIcurses\fP .bP \fB\%curs_termcap\fP(3X) \- محاكاة \fIcurses\fP لـ \fItermcap\fP .bP \fB\%curs_terminfo\fP(3X) \- واجهة \fIcurses\fP لقاعدة بيانات \fIterminfo\fP .bP \fB\%curs_util\fP(3X) \- إجراءات أدوات \fIcurses\fP متنوعة .RE .TP 5 \fB\-\-with\-trace\fP يكشف دالة \fBcurses_trace\fP(3X) في المكتبات المشتركة والثابتة لـ \fIncurses(w)\fP. عادةً، تكون متاحة فقط في مكتبة التصحيح. (إذا حُدد \fB\-\-with\-termlib\fP أيضًا، توفر \fItinfo(w)\fP بدلاً من \fIncurses(w)\fP دالة \fBtrace\fP(3X) المهملة.) يجب أن يتحقق سكريبت تهيئة التطبيق من وجود الدالة بدلاً من افتراض حصرها في مكتبة التصحيح. .SH الملفات .TP \fI/usr/share/tabset\fP قاعدة بيانات تهيئة علامات الجدولة .TP \fI/usr/share/terminfo\fP قاعدة بيانات قدرات طرفية مُجمَّعة .SH ملاحظات .\" See X/Open Curses Issue 4, Version 2, pp. 227-234. .\" See X/Open Curses Issue 7, pp. 311-318. يسمح X/Open Curses بتوفير معظم الدوال التي يحددها كوحدات ماكرو أيضًا. يفعل \fI\%ncurses\fP ذلك .bP للدوال التي تُرجع قيمًا عبر معاملاتها، .bP لدعم الميزات القديمة، .bP لإعادة استخدام الدوال (مثلًا، تلك التي تُحرك المؤشر قبل عملية أخرى)، و .bP في حالات خاصة قليلة. .PP إذا تم توجيه واصف ملف الإخراج القياسي لبرنامج \fI\%ncurses\fP إلى شيء ليس جهاز طرفية، تكتب المكتبة تحديثات الشاشة إلى واصف ملف الخطأ القياسي. كانت هذه ميزة غير موثقة لـ SVr3 \fIcurses\fP. .PP انظر القسم الفرعي \*(``ملفات الرأس\*('' أدناه بخصوص الرموز المكشوفة بتضمين \fI\%curses.h\fP. .SH الامتدادات يُمكّن \fI\%ncurses\fP التطبيق من التقاط أحداث الفأرة من أطراف معينة، بما في ذلك \fI\%xterm\fP(1)؛ انظر \fB\%curs_mouse\fP(3X). .PP يوفر \fI\%ncurses\fP وسيلة للاستجابة لأحداث تغيير حجم النافذة، كما هو الحال عند التشغيل في تطبيق محاكي طرفية واجهة مستخدم رسومية مثل \fI\%xterm\fP؛ انظر \fB\%resizeterm\fP(3X) و \fB\%wresize\fP(3X). .PP يسمح \fI\%ncurses\fP للتطبيق باستعلام الطرفية عن وجود مجموعة واسعة من المفاتيح الخاصة؛ انظر \fB\%has_key\fP(3X). .PP يوسع \fI\%ncurses\fP المجموعة الثابتة من قدرات مفاتيح الدوال المحددة بواسطة X/Open Curses بالسماح لمبرمج التطبيق بتعريف أحداث مفاتيح إضافية في وقت التشغيل؛ انظر \fB\%define_key\fP(3X)، \fB\%key_defined\fP(3X)، \fB\%keybound\fP(3X)، و \fB\%keyok\fP(3X). .PP يمكن لـ \fI\%ncurses\fP استغلال قدرات الأطراف التي تنفذ تسلسلات ISO\ 6429/ECMA\-48 SGR\ 39 و SGR\ 49، والتي تسمح للتطبيق بإعادة تعيين الطرفية إلى ألوان المقدمة والخلفية الأصلية. من منظور المستخدم، يستطيع التطبيق رسم نص ملون على خلفية يُضبط لونها بشكل مستقل، مما يوفر تحكمًا أفضل في تباينات الألوان. انظر \fB\%default_colors\fP(3X). .PP يمكن لتطبيق \fI\%ncurses\fP تجنب معرفة تفاصيل بنية \fI\%SCREEN\fP و \fI\%WINDOW\fP الداخلية، واستخدام دوال الوصول مثل \fB\%is_cbreak\fP(3X) و \fB\%is_scrollok\fP(3X) بدلًا من ذلك. .PP يُمكّن \fI\%ncurses\fP التطبيق من توجيه مخرجاته إلى طابعة موصولة بجهاز الطرفية؛ انظر \fB\%curs_print\fP(3X). .PP يقدم \fI\%ncurses\fP \fB\%slk_attr\fP(3X) كمقابل لـ \fB\%attr_get\fP(3X) لخطوط مفاتيح التسمية الناعمة، و \fB\%extended_slk_color\fP(3X) كشكل من \fB\%slk_color\fP(3X) يمكنه جمع معلومات الألوان منها عند دعم العديد من الألوان. .PP يسمح \fI\%ncurses\fP بتعديل سلوك \fB\%unctrl\fP(3X)؛ انظر \fB\%use_legacy_coding\fP(3X). .PP قد يتوفر دعم أولي للتطبيقات متعددة الخيوط؛ انظر \fBcurs_threads\fP(3X). .PP يمكن كشف دوال تُسهل إدارة الشاشات المتعددة؛ انظر \fBcurs_sp_funcs\fP(3X). .PP لمساعدة التطبيقات في تصحيح استخدامها للذاكرة، يقدم \fI\%ncurses\fP اختياريًا دوالًا لتحرير الذاكرة التي يخصصها ديناميكيًا بشكل أكثر عدوانية؛ انظر \fBcurs_memleaks\fP(3X). .PP تُسهل المكتبة تدقيق واستكشاف أخطاء سلوكها؛ انظر \fBcurs_trace\fP(3X). .PP يؤدي تجميع \fI\%ncurses\fP مع الخيار \fB\%\-DUSE_GETCAP\fP إلى الرجوع إلى قراءة \fI\%/etc/termcap\fP إذا لم يتمكن كود إعداد الطرفية من العثور على إدخال \fI\%term\%info\fP مطابق لـ \fITERM\fP. لا يُوصى باستخدام هذه الميزة، لأنها تتضمن بشكل أساسي مُجمّع \fItermcap\fP كامل في كود بدء تشغيل \fI\%ncurses\fP، على حساب استهلاك الذاكرة وتأخير إطلاق التطبيق. .PP تدمج \fI\%PDCurses\fP و NetBSD \fIcurses\fP بعض امتدادات \fI\%ncurses\fP. تشير صفحات الدليل الفردية إلى مكان حدوث ذلك. .SH "القابلية للنقل" يُعرّف X/Open Curses مستويين من المطابقة، \*(``أساسي\*('' و \*(``مُحسّن\*(''. يتضمن الأخير عدة ميزات إضافية، مثل دعم الأحرف العريضة والألوان. يهدف \fI\%ncurses\fP إلى المطابقة على المستوى الأساسي مع X/Open Curses، ويدعم جميع ميزات مستواه المُحسّن باستثناء أداة \fI\%untic\fP. .PP تُوثّق الاختلافات بين X/Open Curses و \fI\%ncurses\fP في أقسام \*(``قابلية النقل\*('' من صفحات الدليل المنطبقة. .SS "التحقق من الأخطاء" في حالات عديدة، يكون X/Open Curses غامضًا بشأن حالات الخطأ، متجاهلاً بعض توثيق SVr4. .PP على عكس التطبيقات الأخرى، يتحقق \fI\%ncurses\fP من معاملات المؤشر، مثل تلك الخاصة بهياكل \fI\%WINDOW\fP، لضمان أنها ليست فارغة. يُفعل ذلك بشكل أساسي للحماية من أخطاء المبرمج. لا توفر الواجهة القياسية طريقة للمكتبة لإخبار التطبيق بأي من الأخطاء المحتملة حدث. يحد التطبيق الذي يعتمد على \fI\%ncurses\fP للتحقق من صحة معاملات دواله من قابلية نقله ومتانته. .SS "اختلافات الحشو" في تطبيقات \fIcurses\fP التاريخية، فعّلت التأخيرات المضمنة في قدرات \fI\%term\%info\fP \fB\%carriage_return\fP (\fBcr\fP) و \fB\%scroll_forward\fP (\fBind\fP) و \fB\%cursor_left\fP (\fBcub1\fP) و \fB\%form_feed\fP (\fBff\fP) و \fB\%tab\fP (\fBht\fP) بتات التأخير المقابلة في مشغل طرفية يونكس. يُنفذ \fI\%ncurses\fP كل الحشو بإرسال بايتات NUL إلى الجهاز. هذه الطريقة أغلى قليلاً، لكنها تضيّق الواجهة مع نواة يونكس بشكل كبير وتزيد من قابلية نقل الحزمة بالمقابل. .SS "ملفات الرأس" يتضمن ملف الرأس \fI\%curses.h\fP نفسه ملفي الرأس \fI\%stdio.h\fP و \fI\%unctrl.h\fP. .PP لدى X/Open Curses المزيد ليقوله، .RS 4 .PP قد يُظهر تضمين \fI\%curses.h\fP جميع الرموز من الرؤوس \fI\%stdio.h\fP و \fI\%term.h\fP و \fI\%termios.h\fP و \fI\%wchar.h\fP. .RE .PP لكنه لا يُكمل القصة. يلي ذلك شرح أكثر اكتمالاً. .bP وفر أول \fIcurses\fP، في 4BSD، ملف \fI\%curses.h\fP. .IP ضمّن كود BSD \fIcurses\fP ملفي \fI\%curses.h\fP و \fI\%unctrl.h\fP من ملف رأس داخلي \fI\%curses.ext\fP، حيث اختصر \*(``ext\*('' \*(``externs\*(''. .IP استخدمت تطبيقات \fI\%printw\fP و \fI\%scanw\fP دوال داخلية غير موثقة لمكتبة الإدخال/الإخراج القياسية (\fI_doprnt\fP و \fI_doscan\fP)، لكن لم يعتمد أي شيء في \fI\%curses.h\fP نفسه على \fI\%stdio.h\fP. .bP أضاف SVr2 \fIcurses\fP الدالة \fI\%newterm\fP، التي تعتمد على \fI\%stdio.h\fP لأن نموذج دالتها يستخدم النوع \fIFILE\fP. .IP أضاف SVr4 \fIcurses\fP الدالتين \fI\%putwin\fP و \fI\%getwin\fP، اللتين تستخدمان أيضًا \fI\%stdio.h\fP. .IP يحدد X/Open Curses هذه الدوال الثلاث جميعها. .IP SVr4 \fIcurses\fP و X/Open Curses لا تطلبان من المطور تضمين \fI\%stdio.h\fP قبل \fI\%curses.h\fP. كلاهما يوثق استخدام \fIcurses\fP على أنه يتطلب فقط \fI\%curses.h\fP. .IP ونتيجة لذلك، يتضمن \fI\%curses.h\fP القياسي دائمًا \fI\%stdio.h\fP. .bP X/Open Curses و SVr4 \fIcurses\fP غير متسقين فيما يتعلق بـ \fI\%unctrl.h\fP. .IP كما ذُكر في \fBcurs_util\fP(3X)، يتضمن \fI\%ncurses\fP \fI\%unctrl.h\fP من \fI\%curses.h\fP (كما تفعل SVr4). .bP قد تشير تعليقات X/Open Curses حول \fI\%term.h\fP و \fI\%termios.h\fP إلى HP\-UX و AIX. .IP يتضمن HP\-UX \fIcurses\fP \fI\%term.h\fP من \fI\%curses.h\fP للإعلان عن \fI\%setupterm\fP في \fI\%curses.h\fP، لكن \fI\%ncurses\fP و Solaris \fIcurses\fP لا يفعلان ذلك. .IP يتضمن AIX \fIcurses\fP \fI\%term.h\fP و \fI\%termios.h\fP. مرة أخرى، \fI\%ncurses\fP و Solaris \fIcurses\fP لا يفعلان ذلك. .bP يقول X/Open Curses أن \fI\%curses.h\fP \fBقد\fP يتضمن \fI\%term.h\fP، لكنه لا يطلب ذلك. .IP .\" Is that true in ncurses? Can we supply an example? --GBR تستخدم بعض البرامج دوال معلنة في كل من \fI\%curses.h\fP و \fI\%term.h\fP، ويجب تضمين كلا ملفي الرأس في نفس وحدة الترجمة. .IP تتضمن ملفات الرأس المقدمة من \fI\%ncurses\fP رؤوس المكتبة القياسية المطلوبة لإعلاناتها، لذا يمكن تضمين ملفات رأس \fI\%ncurses\fP الخاصة بأي ترتيب. من أجل قابلية النقل حتى لأنظمة AIX القديمة، ضمّن \fI\%curses.h\fP قبل \fI\%term.h\fP. .bP يقول X/Open Curses \*(``قد يجعل مرئيًا\*('' لأن تضمين ملف رأس لا يجعل بالضرورة جميع الرموز فيه مرئية (ضع في اعتبارك \fB\%#ifdef\fP وما شابه). .IP .\" bold to contrast with preceding italic .\" bold for consistency in this paragraph على سبيل المثال، \fBقد\fP يتضمن \fI\%curses.h\fP الخاص بـ \fI\%ncurses\fP \fI\%wchar.h\fP إذا تم تعريف الرمز المناسب، وإذا تم تكوين \fI\%ncurses\fP لدعم الأحرف العريضة. إذا تم تضمين \fI\%wchar.h\fP، \fBقد\fP تُجعل رموزه مرئية اعتمادًا على قيمة ماكرو اختبار الميزة \fI\%_XOPEN_SOURCE\fP. .bP يفرض X/Open Curses تضمين التطبيق لملف رأس واحد من مكتبة C القياسية في حالة خاصة: \fI\%stdarg.h\fP قبل \fI\%curses.h\fP لإنشاء نموذج أولي للدوال \fI\%vw_printw\fP و \fI\%vw_scanw\fP (بالإضافة إلى \fI\%vwprintw\fP و \fI\%vwscanw\fP القديمتين). تأخذ كل من هذه قائمة وسائط متغيرة، معامل \fI\%va_list\fP، مثل معامل \fI\%printf\fP(3). .IP .\" V7, 32V, System III, 3BSD قدم SVr3 \fIcurses\fP الدالتين القديمتين، وقدم X/Open Curses الباقي. في ما بين ذلك، وفر SVr4 \fIcurses\fP إمكانية أن يتضمن التطبيق إما \fI\%varargs.h\fP أو \fI\%stdarg.h\fP. مثلت هذه نهجين متباينين لمعالجة قوائم الوسائط المتغيرة. استخدمت الواجهة الأقدم، \fI\%varargs.h\fP، مؤشرًا إلى \fIchar\fP لمعامل \fI\%va_list\fP للدوال المتغيرة. لاحقًا، اكتسبت القائمة نوع بياناتها القياسي الخاص، \fI\%va_list\fP، المُعرّف في \fI\%stdarg.h\fP، مما مكّن المترجم من التحقق من أنواع المعاملات الفعلية لاستدعاء دالة مقابل تلك الرسمية المعلنة في نموذجها الأولي. .IP لا تتطلب أي تطبيقات متوافقة مع X/Open Curses من التطبيق تضمين \fI\%stdarg.h\fP قبل \fI\%curses.h\fP لأنها إما سمحت بنوع خاص، أو، مثل \fI\%ncurses\fP، تضمن \fI\%stdarg.h\fP بنفسها لتوفير واجهة محمولة. .SH المؤلفون زيد م. بن حليم، إريك س. ريموند، توماس إ. ديكي. استنادًا إلى \fI\%pcurses\fP بواسطة بافل كورتيس. .SH "انظر أيضًا" \fB\%curs_variables\fP(3X)، \fB\%terminfo\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 .