کدهای فرار انسی

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به ناوبری پرش به جستجو

در رایانش، کدهای فرار انسی (همچنین رشته‌ها یا توالی‌های فرار) (انگلیسی: ANSI escape codes (or escape sequences)) روشی مورد استفاده درسیگنال‌دهی درون‌مداری ‏(en) (ارسال فرمان از طریق همان کابل صوتی یا تصویری) برای کنترل قالب‌بندی، رنگ‌آمیزی، ویرایش صفحه نمایش و دیگر ویژگی‌های خروجی روی ترمینال‌های متنی می‌باشد. برای کدگذاری این اطلاعات، توالی‌های خاصی از بایت‌ها (دقیقاً رشته‌های خاصی از کاراکتر) درون متن جاسازی می‌شوند، که ترمینال آنها را تفسیر می‌کند، البته نه به عنوان کدهای کاراکتری معمولی. انسی مخفف عبارت انگلیسی مؤسسه استانداردهای ملی آمریکایی می‌باشد.

کدهای انسی در دهه ۱۹۷۰ معرفی شدند و در اوائل دهه ۱۹۸۰ در بازار مینی‌کامپیوترها و سرورهای اصلی (سرور پردازنده مرکزی) رایج شدند. کدهای انسی توسط بازار سیستم تخته بولتن برای ارائه نمایشگرهای بهبودیافته در مقایسه با سیستم‌های اولیه که فاقد حرکت نشانه‌گر یا کرسر بودند مورد استفاده قرار گرفتند که به استفاده بسیار گسترده‌تر آنها منتهی شد.

اگرچه ترمینال‌های متنی سخت‌افزاری در قرن ۲۱ به صورت فزاینده‌ای کمیاب شده‌اند، اما همچنان ارتباط استاندارد انسی پابرجاست زیرا اکثریت شبیه‌سازان ترمینال (مانند ترمینال لینوکس) حداقل برخی از توالی‌های فرار انسی را در متن خروجی تفسیر می‌کنند؛ و تنها یک استثنای برجسته در بین ترمینال‌های متنی بود، آن هم کنسول ویندوز ۳۲بیتی ‏(en) از اجزاء مایکروسافت ویندوز پیش از روزرسانی تی‌اچ۲ در ویندوز ۱۰.[۱]

از کاربردهای رایج امروزی انسی در ترمینال مجازی لینوکس (شل یونیکس) مانند بش است برای مثال در ابزارها و کتابخانه‌های کنترل سرورهای وب، ابزارهای مایگریت کردن دیتابیس ‏(en) بواسطه گیت یا به منظور نوشتن اسکریپت کنسول‌های آسان برای فریم‌ابزارهای آزمایش کد پی‌اچ‌پی یا جاوا مانند پی‌اچ‌پی یونیت ‏(en) یا کدسپشن ‏(en) که ترمینال بش در محیط‌های خارج از لینوکس نیز از طریق سیگوین یا گیت‌بش یا ماشین مجازی لینوکس نیز در دسترس است و آی‌دی‌ای‌هایی همچون نت‌بینز شرایط استفاده از این ترمینال‌ها به صورت لوکال یا ریموت را فراهم می‌کنند.

جدول برخی از کاراکترهای کنترل کرسر و متن (این فهرست کامل نیست و CSI نماینده کاراکتر اسکیپ است که در انسی کلا \۰۳۳ است و میان‌بر آن در بش \e[ ) :

کد نام ویژگی
CSI n A
CUU – Cursor Up
کرسر را به تعداد ن با پیشفرض ۱ سلول در جهت تعیین شده منتقل می‌کند. اگر کرسر قبلاً در لبه نمایشگر بوده باشد تأثیری نخواهد داشت.
CSI n B
CUD – Cursor Down
CSI n C
CUF – Cursor Forward
CSI n D
CUB – Cursor Back
CSI n E
CNL – Cursor Next Line
کرسر را به ابتدای خط ن‌ام بعد (پایین‌تر) از این خط می‌برد. (در ANSI.SYS نیست)
CSI n F
CPL – Cursor Previous Line
برعکس قبلی (در ANSI.SYS نیست)
CSI n G
CHA – Cursor Horizontal Absolute
کرسر را به ستون ن (جایگشت شماره ن‌ام در کاراکترهای یک خط) داخل یک خط می‌برد. (در ANSI.SYS نیست)
CSI n ; m H
CUP – Cursor Position
کرسر را به ردیف ن و ستون میم می‌برد. مقادیر عدد طبیعی هستند (پایه ۱) با پیشفرض ۱ (گوشه سمت چپ بالا) اگر تعیین نشده باشند. حذف هر یک از پارامترها به معنی مقدار پیشفرض است و بدون سمی‌کالن به معنی فقط شماره ردیف است یعنی ن.
CSI n J
ED – Erase in Display
بخشی از صفحه نمایش را تمیز می‌کند. اگر ن صفر باشد یا کلا نباشد از کرسر تا پایان صفحه، اگر یک باشد تا آغاز صفحه اگر ۲ کل صفحه را پاک می‌کند (و در ANSI.SYS داس کرسر را به گوشه چپ بالا می‌فرستد) اگر ۳ باشد کل صفحه نمایش بعلاوه حذف تمام خطوط ذخیره شده در حافظه بافر اسکرول‌بار (این ویژگی برای xterm اضافه شد و توسط دیگر برنامه‌های ترمینال پشتیبانی می‌شود)
CSI n K
EL – Erase in Line
بخشی از داخل یک خط را پاک می‌کند. اگر ن صفر باشد یا نباشد، از کرسر تا پایان خط، اگر یک باشد تا آغاز خط، اگر ۲ باشد کل خط را پاک می‌کند و مکان کرسر تغییر نمی‌کند.
CSI n S
SU – Scroll Up
کل صفحه را به تعداد ن خط به بالا اسکرول می‌کند با پیشفرض یک. خطوط جدید به پایین اضافه می‌شوند. (در ANSI.SYS نیست)
CSI n T
SD – Scroll Down
برعکس قبلی و خطوط جدید به بالا اضافه می‌شوند. (در ANSI.SYS نیست)
CSI n ; m f
HVP – Horizontal and Vertical Position
دقیقاً همانند CUP است.
CSI n m
SGR – Select Graphic Rendition
پارامترهای اس‌جی‌آر را تنظیم می‌کند از جمله رنگ متن. بعد از اسکیپ (CSI) می‌تواند صفر به معنی Reset یا معمولی یا پارامترهای دیگری باشد. بدون پارامتر معادل صفر است. رنگ‌های اولیه از ۳۰ یعنی رنگ سیاه برای متن تا ۳۷ برای ۸ رنگ مختلف. ۴۰ تا ۴۷ برای زمینه. ۱ برای متن درشت، ۴ برای زیرخط یا آندرلاین و ۷ برای تعویض رنگ زمینه و متن با یکدیگر. رنگ‌های بیشتری تا حد ۳۲ بیت و رنگ‌های حقیقی نیز در برخی افزونه‌های برخی ترمینال‌ها افزوده شدند اما برای ساخت و پرداخت امور گرافیکی ابزارهای دیگری وجود دارند.
CSI 5i
AUX Port On
درگاه آیوایکس (پورت کمکی یا آکسیلری در داس یا ترمینال) را فعال یا باز می‌کند که معمولاً برای پرینتر محلی سریال پورت است.
CSI 4i
AUX Port Off
برعکس قبلی
CSI 6n
DSR – Device Status Report
گزارش محل کرسر (CPR) به برنامه به صورت (همان‌طور که روی کیبورد نیز هست) ESC[n;mR، که ن ردیف و میم ستون است.
CSI s
SCP – Save Cursor Position
مکان فعلی کرسر را ذخیره می‌کند.
CSI u
RCP – Restore Cursor Position
محل ذخیره‌شده قبلی کرسر را فراخوانی می‌کند.
CSI ?25l
DECTCEM
کرسر را مخفی می‌کند. نکته: حرف آخر بعد از ۲۵ حرف ال کوچک لاتین است.
CSI ?25h
DECTCEM
برعکس قبلی

مثالی از یک تابع بش برای فلاشر یک ثانیه‌ای که سیگنال معکوس و طبیعی کردن رنگ نمایشگر را می‌فرستد تا زمانی که یک کلید فشرده شود: flasher () { while true; do printf "\e[?5h"; sleep 1; printf \\e[?5l; read -s -n1 -t1 && break; done; } این تابع می‌تواند همراه یک سمی‌کالن پس از یک فرمان زمان‌بر دیگر بیاید تا برنامه‌نویس را نهایتاً با فلاش زدن از تکمیل شدن پروسه مطلع کند. استفاده از printf در اینجا معادل echo -e -n است.

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  1. Oisin Grehan. «Windows 10 TH2 (v1511) Console Host Enhancements». 4 February 2016. بازبینی‌شده در 10 فوریه 2016.