| GPM(8) | راهنمای مدیر سیستم | GPM(8) |
نام (NAME)
gpm - کارساز موشواره و ابزار برش و چسباندن در کنسول متنی لینوکس
خلاصه دستور (SYNOPSIS)
gpm [ گزینهها ]
توضیحات (DESCRIPTION)
این بسته تلاش میکند یک کارساز موشواره (mouse server) سودمند برای برنامههای در حال اجرا در کنسول لینوکس باشد. این برنامه بر پایه بسته selection توسعه یافته است و بخشی از کدهای آن مستقیماً از خود selection برگرفته شده است. این بسته به عنوان جایگزینی برای selection جهت ارائه مکانیزم برش و چسباندن (cut-and-paste) طراحی شده است و امکانات بیشتری را نیز فراهم میآورد. بسته selection نخستین پیادهسازی برش و چسباندن را در لینوکس با استفاده از دو دکمه موشواره ارائه داد و بافر برش در سراسر این سند همچنان «بافر انتخاب» (selection buffer) یا صرفاً «انتخاب» نامیده میشود. اطلاعات زیر از فایل texinfo استخراج شده که منبع ارجح اطلاعات است.
فایل اجرایی gpm برای فعالیت به صورت یک دیمن طراحی شده است (از این رو، شاید gpmd نام مناسبتری برای آن بود). این بخش به توصیف گزینههای خط فرمان gpm میپردازد، در حالی که ساختار درونی آن در بخشهای بعدی تشریح شده است.
به دلیل محدودیتهای فراخوان سیستمی ioctl(TIOCLINUX)، برنامه gpm باید توسط کاربر ارشد (superuser / root) اجرا شود. این محدودیتها در اواخر هستههای نسخه 1.1 به منظور رفع یک رخنه امنیتی مربوط به انتخاب متن و ذخیره محتوای صفحه (screen dumping) اضافه شدند.
کارساز میتواند متناسب با سلیقه کاربر پیکربندی شود و هر برنامهای که از موشواره استفاده کند، رفتار کارساز را به ارث خواهد برد. از نسخه 1.02 تا 1.19.2 امکان تغییر رفتار و حساسیت موشواره برای هر کاربری که به کنسول سیستم وارد شده بود با استفاده از گزینه -q وجود داشت. این امکان به دلایل امنیتی دیگر میسر نیست.
از نسخه 0.97 به بعد، برنامه کارساز به صورت خودکار خود را به پسزمینه میبرد. برای خاتمه دادن به اجرای gpm میتوانید آن را مجدداً با سوییچ خط فرمان -k اجرا کنید، اگرچه دستور killall gpm میتواند گزینه بهتری باشد.
دستورات ویژه (SPECIAL COMMANDS)
نسخه 1.10 قابلیت اجرای دستورات ویژه را در شرایط خاص اضافه کرده است. دستورات ویژه به طور پیشفرض شامل راهاندازی مجدد (reboot) و توقف کامل سیستم (halt) هستند، اما کاربر میتواند انتخاب شخصی خود را تعیین کند. قابلیت فراخوانی دستورات با استفاده از موشواره برای برنامهنویسان بسیار کارآمد است، زیرا هنگامی که صفحهکلید قفل شده و شبکهای برای بازگرداندن سیستم به حالت پایدار در دسترس نیست، امکان خاموش کردن ایمن سیستم را فراهم میکند.
دستورات ویژه با سه بار کلیک همزمان دکمههای چپ و راست فعال میشوند؛ رویدادی که در حالت عادی بعید است رخ دهد. سادهترین روش برای سه بار کلیک، فشردن و نگهداشتن یکی از دکمهها و سه بار کلیک روی دکمه دیگر است. هنگامی که پردازش دستورات ویژه فعال میشود، پیامی در کنسول ظاهر شده (و بلندگوی سیستم، در صورت وجود، دو بار بوق میزند)؛ اگر کاربر تمامی دکمهها را رها کند و ظرف مدت سه ثانیه دوباره یکی از آنها را بفشارد، دستور ویژه متناظر با آن دکمه اجرا میشود.
دستورات ویژه پیشفرض عبارتند از:
- دکمه چپ
- راهاندازی مجدد سیستم با ارسال سیگنال به فرایند init
- دکمه وسط (در صورت وجود)
- اجرای دستور /sbin/shutdown -h now
- دکمه راست
- اجرای دستور /sbin/shutdown -r now
سوییچ خط فرمان -S پردازش دستورات ویژه را فعال کرده و امکان تغییر این سه دستور ویژه را فراهم میسازد. برای پذیرش دستورات پیشفرض از -S (یعنی مشخص کردن یک آرگومان خالی) استفاده کنید. برای تعیین دستورات دلخواه، از یک فهرست جداشده با دونقطه (:) برای مشخص کردن دستورات وابسته به دکمههای چپ، وسط و راست استفاده نمایید. اگر هر یک از دستورات خالی رها شود، به معنای «ارسال سیگنال به فرایند init» تفسیر خواهد شد. این عملکرد خاص، علاوه بر اجرای دستورات بیرونی، به این دلیل پشتیبانی میشود که گاهی اشکالات وخیم مانع fork شدن فرایندها در سیستم میشوند؛ در چنین موارد نادری برنامهنویس باید بتواند به هر نحوی سیستم را خاموش کند و کشتن فرایند init از یک فرایند در حال اجرا تنها راه ممکن است.
به عنوان مثال، -S :telinit 1:/sbin/halt ارسال سیگنال خاتمه به فرایند init را به دکمه چپ، رفتن به حالت تککاربره (single-user) را به دکمه وسط و توقف کامل سیستم را به دکمه راست اختصاص میدهد.
مدیران سیستم بدیهی است که باید در مورد دستورات ویژه احتیاط کنند، زیرا gpm با دسترسی کاربر ارشد اجرا میشود. دستورات ویژه برای رایانههایی مناسبترند که موشواره آنها تنها به صورت فیزیکی در دسترس افراد مورد اعتماد باشد.
گزینههای خط فرمان (COMMAND LINE OPTIONS)
گزینههای خط فرمان موجود به شرح زیر است:
- -a accel
- تنظیم مقدار شتاب (acceleration) که هنگامی استفاده میشود که یک رویداد حرکتی بزرگتر از delta باشد (گزینه -d را ببینید).
- -A[limit]
- راهاندازی با غیرفعال بودن چسباندن متن انتخابشده. این یک اقدام امنیتی است؛ زیرا یک حمله محتمل به سیستم این است که یک دستور مخرب شل (مانند rm -rf /) به همراه نویسه خط بعد در بافر انتخاب قرار داده شود، و تنها کاری که قربانی باید انجام دهد کلیک روی دکمه وسط موشواره است... از نسخه 1.17.2، این ویژگی به یک سازوکار انقضای زمانی (aging) عمومیتر ارتقا یافته است؛ دیمن gpm میتواند پس از گذشت مدتی عدم فعالیت، چسباندن متن انتخابشده را به طور خودکار غیرفعال کند. برای فعالسازی این حالت، پارامتر اختیاری limit را بدون فاصله بعد از گزینه وارد کنید (بدون هیچ فاصلهای میان آنها!) که به عنوان زمان معتبر بودن و قابلیت چسباندن متن انتخابشده بر حسب ثانیه تفسیر میشود. از نسخه 1.15.7، برنامهای ساده به نام disable-paste ارائه شده است. افزودن قطعه کد زیر به فایل /etc/profile در صورتی که به چندین کاربر اجازه کار روی کنسول را میدهید، ایده مناسبی است:
-
case $( /usr/bin/tty ) in /dev/tty[0-9]*) /usr/bin/disable-paste ;; esac
- -b baud
- تنظیم نرخ باود (baud rate).
- -B sequence
- تنظیم ترتیب دکمهها. ترتیب عادی 123 است، 321 میتواند توسط افراد چپدست استفاده شود، و 132 میتواند برای موشوارههای دو دکمهای (بهویژه در Emacs) سودمند باشد. تمامی جایگشتهای دکمهها مجاز هستند.
- -d delta
- تنظیم مقدار دلتا. هنگامی که یک رویداد حرکتی منفرد بزرگتر از delta باشد، accel به عنوان ضریب شتاب اعمال میشود (باید ۲ یا بیشتر باشد).
- -D
- پس از راهاندازی، به صورت خودکار به پسزمینه نرود و پیامها به جای سازوکار syslog به جریان خطای استاندارد (stderr) لاگ شوند. این گزینه برای اشکالزدایی مفید است؛ در نسخههای قبلی این کار از طریق یک گزینه زمان کامپایل انجام میشد.
- -g number
- در دستگاههای glidepoint (تاچپد)، دکمه مشخصشده را با ضربه زدن (tapping) شبیهسازی میکند. مقدار number باید ۱، ۲ یا ۳ باشد و به شماره دکمه پیش از اعمال نگاشت دکمهها با -B اشاره دارد. این گزینه برای رمزگشایی mman و ps2 کاربرد دارد. به طور پیشفرض هیچ دکمهای شبیهسازی نمیشود، زیرا ضربه زدن در ps2 با برخی موشوارههای معمولی ps2 ناسازگار است.
- -h
- چاپ خلاصه گزینههای خط فرمان و خروج.
- -i interval
- تنظیم interval به عنوان حد بالای زمانی برای کلیکهای چندگانه. اگر فاصله زمانی بین رویداد رها کردن دکمه (button-up) و فشردن مجدد آن (button-down) کمتر از این مقدار باشد، کلیک دوگانه یا سهگانه در نظر گرفته میشود. زمان بر حسب میلیثانیه است.
- -k
- خاتمه دادن به اجرای gpm در حال اجرا. این گزینه میتواند توسط کاربران busmouse برای متوقف کردن gpm پیش از اجرای سامانه پنجرهای X استفاده شود (مگر اینکه از -R استفاده کنند یا محدودیت تکبازشدن (single-open) از هسته برداشته شده باشد).
- -l charset
- انتخاب جدول جستجوی ()inword. آرگومان charset فهرستی از کاراکترها است. از - برای تعیین بازه و از برای اسکیپ کردن کاراکتر بعدی یا ارائه کدهای هشتهشتی (octal) استفاده میشود. تنها کاراکترهای مرئی میتوانند در charset قرار گیرند، زیرا کاراکترهای کنترلی نمیتوانند در حافظه ویدئویی حالت متنی که متن انتخابی از آن بریده میشود ظاهر شوند.
- -m filename
- انتخاب فایل دستگاه موشواره برای باز کردن. این گزینه باید قبل از -t و -o قرار گیرد.
- -M
- فعالسازی حالت چندگانه (multiple mode). دیمن دو دستگاه موشواره مختلف را میخواند. هر گزینهای که پس از این گزینه بیاید به دستگاه دوم اشاره خواهد داشت، در حالی که گزینههای پیش از آن برای دستگاه اول اعمال میشوند. این گزینه به طور خودکار گزینه تکرارکننده (-R) را فعال میکند.
- -o list-of-extra-options
- این گزینه مشابه با گزینه «-o» در دستور mount عمل میکند؛ و برای تعیین فهرستی از «گزینههای اضافی» مختص به هر نوع موشواره به کار میرود. این فهرست با کاما جدا میشود. گزینههای dtr، rts یا هر دو در مقداردهی اولیه پورت سریال برای تغییر وضعیت خطوط مودم به کار میروند تا با نسخههای پیشین gpm سازگار باشند؛ البته توجه داشته باشید که استفاده از -o dtr همراه با موشوارههای غیرسریالی خالص ممکن است خطا تولید کند. ضمناً، گزینه -o را پس از -m و -t استفاده کنید.
- -p
- مکاننما را هنگام انتخاب متن مرئی نگه میدارد. این رفتار برنامه selection-1.7 است، اما گاهی گیجکننده است. حالت پیشفرض نمایش ندادن نشانگر است که آن هم میتواند به همان اندازه گیجکننده باشد.
- -r number
- تنظیم میزان پاسخدهی (responsiveness). مقدار پاسخدهی بالاتر برای حرکت سریعتر مکاننما استفاده میشود.
- -R[name]
- باعث میشود gpm به عنوان یک تکرارکننده (repeater) عمل کند: هرگونه داده موشواره دریافت شده در حالت گرافیکی، روی لوله نامگذاریشده (fifo) به نشانی /dev/gpmdata با پروتکل name، که به عنوان آرگومان اختیاری مشخص شده است (بدون فاصله در میان!)، بازتولید میشود. اصولاً میتوانید از همان نامهای معتبر برای گزینه -t استفاده کنید، اگرچه بازتکرار در برخی پروتکلها ممکن است هنوز پیادهسازی نشده باشد. علاوه بر این، میتوانید raw را به عنوان name مشخص کنید تا دادههای موشواره بایت به بایت بدون هیچگونه تبدیل پروتکل بازتکرار شوند. اگر name ذکر نشود، به طور پیشفرض msc خواهد بود. با استفاده از gpm در حالت تکرارکننده، میتوانید کارساز X را پیکربندی کنید تا از فایل fifo آن به عنوان دستگاه موشواره استفاده کند. این گزینه برای دارندگان موشوارههای busmouse جهت غلبه بر محدودیت تکبازشدن (single-open) مفید است. همچنین روشی آسان برای مدیریت موشوارههای دوحالته است که شما را مجبور میکنند هنگام تغییر حالت ویدئویی دکمه وسط را فشرده نگه دارید. این گزینه به اجبار توسط گزینه -M فعال میشود.
- -s number
- تنظیم نرخ نمونهبرداری (sample rate) برای دستگاه موشواره.
- -S commands
- فعالسازی پردازش دستورات ویژه، و در صورت تمایل تعیین دستورات سفارشی به صورت یک فهرست جدا شده با دونقطه (:). برای توصیف دقیق دستورات ویژه، بخش بالا را ببینید.
- -t name
- تنظیم نوع موشواره. از -t help برای دریافت فهرستی از انواع مجاز استفاده کنید. از نسخه 1.18.1، این فهرست همچنین پروتکلهایی را که به عنوان تکرارکننده در دسترس هستند (گزینه -R در بالا را ببینید) با علامت ستاره («*») مشخص میکند.
- پس از انتخاب دستگاه موشواره با -m، از -t استفاده کنید.
- -v
- چاپ اطلاعات نسخه و خروج.
- -2
- اجبار به عملکرد دو دکمهای. بدین معنا که دکمه وسط (در صورت وجود) همانند دکمه راست در نظر گرفته خواهد شد.
- -3
- اجبار به عملکرد سه دکمهای. به طور پیشفرض موشواره تا زمانی که دکمه وسط فشرده نشود، دو دکمهای فرض میشود. اگر سه دکمه وجود داشته باشد، دکمه راست برای گسترش محدوده انتخاب و دکمه وسط برای چسباندن آن به کار میرود. هشدار: اگر از گزینه -3 با یک موشواره دو دکمهای استفاده کنید، قادر به چسباندن متن انتخابشده نخواهید بود.
نحوه عملکرد (OPERATION)
برای انتخاب متن، دکمه چپ موشواره را فشرده و موشواره را بکشید (drag). برای چسباندن متن در همان کنسول یا کنسولی دیگر، دکمه وسط را فشار دهید. دکمه راست همانند xterm برای گسترش دادن محدوده انتخاب به کار میرود.
موشوارههای دو دکمهای از دکمه راست برای چسباندن متن استفاده میکنند.
دو بار یا سه بار کلیک کردن به ترتیب تمام کلمه و تمام خط را انتخاب میکند. برای دریافت بهترین بازخورد بصری، استفاده از گزینه -p توصیه میشود.
اگر فاصله پایانی پس از محتوای یک خط برجسته (highlight) شود و متن دیگری در ادامه آن خط وجود نداشته باشد، باقیمانده خط به طور خودکار انتخاب خواهد شد. اگر چندین خط انتخاب شوند، فاصلههای پایانی برجستهشده در هر خط از بافر انتخاب حذف خواهند شد.
هرگونه خروجی روی کنسول مجازی دارای انتخاب، متن برجستهشده را به منظور حفظ یکپارچگی صفحه نمایش پاک میکند، هرچند محتویات بافر چسباندن دستنخورده باقی میماند.
اگر کنسول مجازی کنترلکننده وارد حالت گرافیکی شود (برای نمونه هنگام اجرای سامانه پنجرهای X11)، سازوکار انتخاب غیرفعال میشود و با بازگشت به حالت متنی مجدداً فعال میگردد (اما بخش اشکالات را در زیر ببینید).
اشکالات (BUGS)
کارساز gpm ممکن است در تعامل با سرور گرافیکی X با مشکلاتی مواجه شود: اگر دستگاه موشواره شما فقط قابلیت یکبار باز شدن همزمان را دارد (مانند یک bus mouse)، باید gpm را قبل از اجرای X متوقف کنید یا از گزینه -R (توضیح داده شده در بالا) استفاده نمایید. برای بستن gpm کافی است دستور gpm -k را اجرا کنید. این مشکل برای موشوارههای پورت سریال وجود ندارد.
دو نمونه از gpm نمیتوانند به طور همزمان روی یک سیستم اجرا شوند. اگر دو موشواره دارید، از گزینه -M (توضیح داده شده در بالا) استفاده کنید.
هنگامی که کنسول فعلی در حالت گرافیکی است، gpm به خواب میرود تا زمانی که حالت متنی بازگردد (مگر اینکه از -R استفاده شود). بنابراین به کلاینتها پاسخ نخواهد داد. با این حال بعید است که کلاینتهای نیازمند موشواره در کنسولهای مخفی ناگهان فعال شوند.
برنامههای کلاینت ارائهشده همراه با gpm بهروزرسانی نشدهاند، بنابراین استفاده از آنها ممکن است خطرات امنیتی بالقوهای به همراه داشته باشد.
نویسندگان (AUTHORS)
Andrew Haylett <ajh@gec-mrc.co.uk> (کد اولیه selection) Ian Zimmerman <itz@speakeasy.org> (نگهدارنده پیشین) Alessandro Rubini <rubini@linux.it> (نگهدارنده پیشین (هنوز کمکهای شایانی میکند)) Nico Schottelius <nico-gpm2008@schottelius.org> (نگهدارنده) مشارکتکنندگان بسیار برای هر دو پروژه selection و gpm.
نگهدارندگان (MAINTAINERS)
نگهدارنده فعلی Nico Schottelius است. اما بدون کمک Alessandro Rubini و فهرست پستی، نگهداری gpm برای من غیرممکن بود. فهرست پستی توسعه از طریق نشانی gpm@lists.linux.it در دسترس است. اطلاعات بیشتر درباره این فهرست در فایل README بخشی از توزیع سورسکد gpm قرار دارد.
فایلها (FILES)
- /var/run/gpm.pid
- شناسه فرایند (PID) مربوط به gpm در حال اجرا
- /dev/gpmctl
- سوکت کنترلی برای کلاینتها
- /dev/gpmdata
- لوله نامگذاریشده (fifo) که توسط یک دیمن در حالت تکرارکننده (-R) نوشته میشود.
همچنین ببینید (SEE ALSO)
- mev(1)
- یک کلاینت نمونه برای دیمن gpm.
- gpm-root(1)
- مدیریتکننده رویدادهای مهار-موشواره (Control-Mouse).
فایل info مربوط به gpm، که اطلاعات کاملتری ارائه میدهد و نحوه نوشتن کلاینت gpm را تشریح میکند.
| فوریه ۲۰۰۲ | gpm |