.TH IMWheel 1 "September 8 2002" "Version 1.0.0" .UC 1 .SH "نام (NAME)" imwheel \- مفسر غلتک و دستهٔ ماوس برای سامانه پنجره ایکس (X Windows) .SH "خلاصه دستور (SYNOPSIS)" \fBimwheel\fP [ \fIoptions\fP ] .br .SH "توضیحات (DESCRIPTION)" برنامهٔ \fIIMWheel\fP یک مترجم همه‌منظوره برای غلتک (wheel) و دسته/اهرم ماوس (stick) در سامانه پنجره ایکس (X Windows System) است. این برنامه با استفاده از یک نسخهٔ ویژه از gpm و FIFOی اختصاصی آن یعنی /dev/gpmwheel، یا با تکیه بر پشتیبانی از ZAxis برای ماوس که در برخی کارسازها مانند XFree86 تعبیه شده است، عمل می‌کند. imwheel با بهره‌گیری از ورودی حاصل از gpm یا X Windows، کنش‌های غلتک و دستهٔ ماوس را با استفاده از افزونهٔ XTest در X به رویدادهای صفحه‌کلید ترجمه می‌کند. برای آگاهی از افزونه‌های پشتیبانی‌شده در کارساز X خود، از دستور \fIxdpyinfo\fP استفاده کنید. .LP .SH "گزینه‌ها (OPTIONS)" گزینه‌های خط فرمان موجود به شرح زیر هستند: .TP \fB-4, --flip-buttons\fP دکمه‌های ماوس را معکوس می‌کند، به‌طوری که دکمهٔ ۴ به ۵ و ۵ به ۴ تبدیل می‌شود و کنش‌های بالا و پایین وارونه می‌گردند. این کار استفاده از ماوس‌های ۴ دکمه‌ای را تا حدی کاربردی می‌سازد! این گزینه مشابه استفاده از «-b 54678» است؛ گزینهٔ \fB-b\fP را ببینید. همچنین به xmodmap(1) مراجعه کنید. .TP \fB-b, --buttons\fP \fIbutton-spec\fP نگاشت دکمه‌ها در \fIbutton-spec\fP را به ورودی تفسیرشدهٔ غلتک/شست (thumb) تغییر می‌دهد. همچنین هنگام استفاده از روش ZAxis، تصاحب دکمه‌ها (button grab) را به دکمه‌های مشخص‌شده محدود می‌کند (بخش «روش X WINDOWS ZAXIS» در ادامه را ببینید). آرگومان \fIbutton-spec\fP می‌تواند تا پنج دکمه را تعیین کند. آرگومان \fIbutton-spec\fP برای ورودی غلتک به ترتیب زیر رمزگشایی می‌شود: .RS .RS .nf Index Interpreted As Button Number .br 1 Wheel Up 4 .br 2 Wheel Down 5 .br 3 Wheel Left 6 .br 4 Wheel Right 7 .br 5 Thumb Button 1 8 .br 6 Thumb Button 2 9 .fi .RE مقدار «45» برای \fIbutton-spec\fP دکمه‌های تصاحب‌شده را تنها به غلتک بالا و پایین محدود می‌کند. .br مقدار «67» برای \fIbutton-spec\fP می‌تواند برای به‌کارگیری دکمه‌های فیزیکی ۶ و ۷ به‌عنوان بالا و پایین غلتک و محدود کردن تصاحب تنها به همین دو دکمه مفید باشد. .br مقدار «0» برای \fIbutton-spec\fP هر نگاشت تعریف‌شده‌ای را غیرفعال می‌کند، بنابراین امکان رد کردن مواردی که روی ماوس شما وجود ندارند را در \fIbutton-spec\fP فراهم می‌سازد. .br مقدار «45006» برای \fIbutton-spec\fP می‌تواند برای غلتک معمولی بالا/پایین و دکمهٔ شست ۱ باشد، اما بدون محور افقی غلتک. .br مقدار پیش‌فرض \fIbutton-spec\fP برابر «456789» است. .br همچنین به xmodmap(1) مراجعه کنید. .RE .TP \fB-c, --config\fP بلافاصله پنجرهٔ راهنمای پیکربندی (configuration helper) را نمایان می‌کند. .br همچنین بخش \fBCONFIGURATION HELPER\fP را ببینید. .TP \fB-D, --debug\fP نمایش تمامی اطلاعات اشکال‌زدایی ممکن در حین اجرا. این گزینه خروجی بسیار حجیمی تولید می‌کند و پیشنهاد می‌شود از گزینهٔ \fB-d\fP نیز استفاده کنید تا از جدا شدن imwheel از پایانهٔ مهارکننده جلوگیری شود. .TP \fB-d, --detach\fP در واقع این گزینه برعکس نام خود عمل می‌کند؛ از جدا شدن برنامه از پایانهٔ مهارکننده جلوگیری می‌نماید (عدم تبدیل به دیمن/daemon...). توقف با Control-C و غیره... .TP \fB-f, --focus\fP استفاده از زیرپنجرهٔ (subwindow) رویداد X را اجباری می‌کند، به‌جای ترفند اولیه‌ای که زیرپنجره را در رویداد X با یک پرس‌وجوی فوکوس (XGetInputFocus) جایگزین می‌کرد. این کار باید برخی از مشکلات سازگاری با برخی از مدیران پنجره مانند window maker و شاید enlightenment را برطرف کند. اگر به نظر می‌رسد هیچ‌چیز درست کار نمی‌کند، فعال یا غیرفعال کردن این گزینه را امتحان کنید... .TP \fB-g, --focus-events\fP استفاده از رویدادهای فوکوس را برای تصاحب دکمه‌ها غیرفعال می‌کند. اگر پنجره‌های \fB@Excluded\fP شما هنگام خروج مجدداً دکمه‌های ماوس را تصاحب نمی‌کنند، تغییر وضعیت این گزینه را امتحان کنید... .TP \fB-h, --help\fP راهنمای کوتاه دربارهٔ گزینه‌ها به‌همراه اطلاعات نسخه و نویسنده. .TP \fB-k, --kill\fP تلاش برای متوقف کردن (kill) فرایند قبلی imwheel (تنها برای روش \fB--wheel-fifo\fP کاربرد دارد). برای کارکرد این قابلیت باید فایل pid ایجاد شده باشد (عدم استفاده از گزینهٔ \fB-p\fP یا \fB--pid\fP در اجرای قبلی imwheel). شناسه‌های فرایند (PID) با استفاده از فیلد Name: ?= imwheel در مسیر /proc/${pid}/status ارزیابی می‌شوند. اگر پوشهٔ /proc سوار (mount) نشده باشد، این عملیات همواره شکست می‌خورد! در غیر این صورت، این بررسی تضمین می‌کند که فرایند نادرستی کشته نشود. .TP \fB-p, --pid\fP برای روش gpmwheel FIFO فایل pid ایجاد نمی‌کند. این تنها روشی است که از فایل pid بهره می‌برد. XGrab به آن نیازی ندارد، بنابراین تنها هشداری دربارهٔ اجرای چند نمونهٔ imwheel روی یک نمایشگر (display) مشابه نمایش می‌دهد. برخی کاربران این حالت را ترجیح می‌دهند، به‌ویژه زمانی که از فایل اجرایی imwheel با دسترسی SUID root استفاده نمی‌کنند. .TP \fB-q, --quit\fP خروج از imwheel پیش از ورود به حلقهٔ رویدادها (event loop). این گزینه برای متوقف کردن imwheel در حال اجرا در حالت gpmwheel FIFO پس از خروج از XWindows مفید است؛ البته در صورتی که از فایل‌های pid استفاده می‌کنید. .br مثال: «imwheel -k -q» = خاتمه دادن و خروج (ترتیب گزینه‌ها اهمیتی ندارد) .TP \fB-s, --sensitivity\fP \fIsum-min\fP (فقط برای ماوس‌های دسته‌ای/stick، روش Wheel FIFO) .br مشابه \fB-t\fP است، با این تفاوت که حداقل مقدار کل حرکت دسته یا گوی (marble) را پیش از انجام هر اقدامی تعیین می‌کند. این گزینه به‌خوبی با دستگاه‌های مدل Marble کار می‌کند. این مقدار باید مضربی از آستانهٔ مشخص‌شده توسط گزینهٔ \fB-t\fP باشد. مقدار پیش‌فرض 0 است، به این معنی که آزمون حساسیت انجام نمی‌شود و هر ورودی رویدادی را ایجاد خواهد کرد. گزینهٔ \fB-t\fP را نیز ببینید. (بخش «تنظیمات حساسیت استیک (STICK SENSITIVITY SETTINGS)» در ادامه را ببینید) .TP \fB-t, --threshhold\fP \fIminimum-pressure\fP تنها با gpm و فقط با ماوس‌های دسته‌ای شناسایی‌شده استفاده می‌شود. ماوس‌های دسته‌ای مقداری برای فشار بین 0 (بدون فشار) تا 7 (فشار شدید) ارسال می‌کنند. این گزینه حداقل فشار لازم برای ثبت ورودی را تعیین می‌کند. تنظیم آن روی صفر موجب عملکرد بی‌درنگ (realtime) می‌شود که معمولاً فراتر از توان پردازش پیوستهٔ X است (بیشترین نرخی که دیده شده ۱۰۰ رویداد در ثانیه بود!). پس از ثبت ورودی، مقادیر برای هر محور جمع زده می‌شوند و سپس برای اعمال به‌عنوان ورودی باید برابر یا بیشتر از تنظیم حساسیت باشند. برای حساسیت، گزینهٔ \fB-s\fP را نیز بررسی کنید. .br مقدار پیش‌فرض 2 است، تا از فشارهای جزئی در زاویهٔ ۹۰ درجه نسبت به جهت مدنظر جلوگیری شود، در حالی که دسترسی به جهت مورد نظر حفظ گردد. تنظیم این مقدار روی 7 غیرمنطقی است، زیرا کاربر را مجبور می‌کند هر بار برای ایجاد کنش، تا حد امکان محکم فشار دهد! با این حال ممکن است برای افرادی که از گوی‌های ردگیر (trackball) برای ورودی استفاده می‌کنند نامعقول نباشد، چرا که چرخش آنها در هر نمونه‌برداری بسیار سریع‌تر است... .br (بخش «تنظیمات حساسیت استیک (STICK SENSITIVITY SETTINGS)» در ادامه را ببینید) .TP \fB-W, --wheel-fifo\fP \fIfifo\fP استفاده از FIFOی غلتک gpm/jamd به‌جای XGrabMouse. بخش \fBروش GPM/JAMD WHEEL FIFO\fP را ببینید. این روش تنها امکان استفاده از یک نمایشگر X را فراهم می‌کند. این گزینه برای کارکرد روش gpm الزامی است. این روش تنها با نسخهٔ imwheel از gpm و با jamd کار می‌کند. برای اینکه دریابید آیا در حال اجرای نسخهٔ imwheel از gpm هستید یا خیر، از دستور زیر استفاده کرده و عبارت «(imwheel)» را در عنوان آن جستجو کنید: .RS .RS .nf gpm -v .fi .RE آرگومان \fIfifo\fP نام لولهٔ نام‌گذاری‌شده (FIFO) ایجادشده توسط gpm را مشخص می‌کند. مقدار پیش‌فرض آن "/dev/gpmwheel" است (تنها برای \fB--wheel-fifo\fP). این FIFO باید پیش از اجرای imwheel در این حالت موجود باشد. استفاده از jamd مستلزم تعیین نام صحیح fifo است، زیرا jamd از /dev/gpmwheel استفاده نمی‌کند، بلکه از یکی از fifoهای نام‌گذاری‌شده در مسیر /dev/jam_imwheel:0.0 که توسط ماژول imwheel برنامه jamd ساخته شده‌اند بهره می‌برد. .br دستورات \fB@Exclude\fP در فایل rc در این حالت نادیده گرفته می‌شوند. .RE .TP \fB-X, --display\fP \fIdisplay\fP استفاده از کارساز X (XServer) در یک \fIdisplay\fP مشخص با ساختار استاندارد X. استفاده از این گزینه برای چند نمایشگر در روش ZAxis سامانه پنجره X سودمند است. .TP \fB-x, --transpose\fP این گزینه محورهای حرکتی X و Y را برای ورودی دسته از یک wheel-fifo جابه‌جا می‌کند. .LP.SH "روش ZAXIS در سامانه پنجره X (X WINDOWS ZAXIS METHOD)" این روش تنها روشی است که با چند نمایشگر X، با استفاده از چندین imwheel کار می‌کند. برای استفاده از چند imwheel، یا متغیر محیطی DISPLAY را پیش از اجرای هر imwheel مقداردهی کنید، یا از گزینه‌های \fB-X\fP یا \fB--display\fP برای مشخص کردن یک نمایشگر متفاوت برای هر imwheel استفاده نمایید. اجرای چند imwheel روی یک نمایشگر یکسان توصیه نمی‌شود، اما مجاز است و ممکن است هنگام استفاده از دسته (stick) یا چرخ (wheel) باعث رفتارهای غیرمنتظره و عجیب شود. .LP فایل XF86Config را ویرایش کرده و خطوط زیر را در بخش "Pointer" (در XFree86 3.3) یا "InputDevice" (در XFree86 4.x) اضافه یا ویرایش کنید: .LP ۱ محور (چرخ عمودی): .RS .nf (XFree86 3.3) .RS Buttons 5 ZAxisMapping 4 5 .RE (XFree86 4.x) .RS Option "Buttons" "5" Option "ZAxisMapping" "4 5" .RE .fi .RE .LP ۲ محور (۱ دسته یا ۲ چرخ عمود بر هم): .RS .nf (XFree86 3.3) .RS Buttons 7 ZAxisMapping 4 5 6 7 .RE (XFree86 4.x) .RS Option "Buttons" "7" Option "ZAxisMapping" "4 5 6 7" .RE .fi .RE .LP اگر دکمه‌های شست یا موارد اضافی دیگری دارید که به عنوان دکمه شناخته می‌شوند، مقدار گزینه Buttons ممکن است بیشتر از مقادیر ذکر شده در بالا باشد. .LP اطمینان حاصل کنید که Protocol شما برای موشواره‌های PS/2 روی "IMPS/2" یا برای موشواره‌های سریال روی "IntelliMouse" یا "Auto" تنظیم شده باشد. این تنظیمات برای موشواره‌های سازگار با IntelliMouse است، برای موشواره‌های دیگر ممکن است به پروتکل‌های متفاوتی نیاز باشد. سپس در حین اجرای X Windows، برنامه imwheel را \fIبدون\fP گزینه‌های \fB--wheel-fifo\fP یا \fB-W\fP اجرا کنید. .LP .B نکته .br دستور \fB@Exclude\fP باید برای کلاینت‌هایی استفاده شود که خودشان از ZAxis استفاده می‌کنند و هیچ ترجمه صفحه‌کلیدی برای ایجاد اثر مطلوب مشابه ندارند. همچنین دستور \fB@Exclude\fP باید برای هر کلاینتی که نیازمند تصاحب (grab) موشواره و/یا دکمه‌های موشواره است و دکمه‌های خاصی را برای تصاحب مشخص نمی‌کند، اضافه شود. این کلاینت‌ها هنگام تلاش برای تصاحب موشواره با شکست مواجه می‌شوند، زیرا دکمه‌های ۴ و ۵ قبلاً توسط imwheel تصاحب شده‌اند. برنامه XV نمونه‌ای از کلاینت‌هایی است که برای عملکرد موفقیت‌آمیز به این نوع تصاحب‌ها نیاز دارد. کلاینت‌های KDE از ZAxis برای اهداف خود استفاده می‌کنند. فایل imwheelrc ارائه شده از قبل شامل یک استثنا برای XV است. برای اطلاعات بیشتر بخش IMWheelRC را ببینید. .LP همچنین در این روش از فایل‌های pid استفاده نمی‌شود. بنابراین گزینه‌های \fB-p\fP و \fB--pid\fP هیچ اثری نداشته و نادیده گرفته می‌شوند. .LP .SH "روش FIFO چرخ در GPM/JAMD (GPM/JAMD WHEEL FIFO METHOD)" این روش برای هر کارساز (سرور) X Windows که فاقد پشتیبانی داخلی از موشواره‌های چرخ‌دار است، الزامی است. این روش در حال حاضر از موشواره‌هایی که توسط gpm یا jamd پشتیبانی می‌شوند، پشتیبانی می‌کند. .LP در بخش Pointer فایل پیکربندی XF86Config خود (یا فایل پیکربندی معادل آن برای کارساز X)، گزینه Protocol موشواره را به "MouseSystems" (یا معادل آن...) تغییر دهید، همچنین فایل Device که موشواره از آن خوانده می‌شود را به "/dev/gpmdata" تغییر دهید، سپس در صورت در حال اجرا بودن X Windows، آن را دوباره راه‌اندازی کنید. برنامه jamd داده‌ها را در /dev/jam_ps2:0.0 یا برخی دستگاه‌های دیگر نیز بازتولید می‌کند؛ در این حالت مطمئن شوید که از پروتکل صحیح موشواره در X استفاده می‌کنید، مانند دستگاه jamd_ps2 که پروتکل موشواره آن در X برابر با PS/2 است، و دستگاه jamd_imps2 که پروتکل موشواره آن در X برابر با IMPS/2 است. .LP پیش از شروع X Windows، برنامه gpm را با گزینه \fB-W\fP (مجدداً) راه‌اندازی کنید. همان‌طور که در صفحه راهنمای gpm ذکر شده، مطمئن شوید که از یک موشواره چرخ‌دار یا دسته‌دارِ پشتیبانی‌شده استفاده می‌کنید. .LP پس از شروع X Windows، برنامه imwheel را به شکل زیر همراه با افزودن گزینه‌های دلخواه اجرا کنید: .LP برای gpm می‌توانید از گزینه زیر برای imwheel استفاده کنید: .LP \fB--wheel-fifo\fP .LP برنامه jamd مستلزم این است که نام fifo را به عنوان یکی از fifo‌های نام‌گذاری‌شده در /dev/jamd_imwheel:0.0 مشخص کنید. دستور زیر را اجرا کنید: .LP \fBls -al /dev/jam_imwheel*\fP .LP تا ببینید چه مواردی موجود است. در این مثال، من از .LP \fB-W /dev/jam_imwheel:0.0\fP .LP به عنوان گزینه برای imwheel استفاده می‌کنم. .LP من معمولاً گزینه \fB-k\fP را برای از بین بردن فرآیندهای قدیمی باقی‌مانده imwheel اضافه می‌کنم، چرا که imwheel همراه با کارساز خارج نمی‌شود، بلکه تنها در صورتی خاتمه می‌یابد که وقتی کارساز X متصل نیست (مانند زمانی که X از کار افتاده باشد، یا متغیر محیطی DISPLAY به اشتباه تنظیم شده باشد، یا متغیرهای \fB-X\fP یا \fB--display\fP برنامه imwheel را به یک کارساز X که اکنون غیرفعال است متصل کرده باشند)، کنشی روی چرخ یا دسته رخ دهد. .LP برنامه‌های gpm یا jamd و/یا imwheel را می‌توان در هر زمانی دوباره راه‌اندازی کرد؛ imwheel می‌تواند تشخیص دهد چه زمانی gpm یا jamd در دسترس نیستند، و gpm یا jamd نیز کوچک‌ترین اهمیتی به فعال بودن یا نبودن imwheel نمی‌دهند. .LP .B نکته .br دستور @Exclude در این روش هیچ تاثیری ندارد و نادیده گرفته می‌شود. در این روش هیچ رویداد تغییر فوکوس (Focus change) دریافت نمی‌شود. بنابراین، KDE و سایر کلاینت‌هایی که از رویدادهای چرخِ مبتنی بر X از طریق ZAxis پشتیبانی می‌کنند، کار نخواهند کرد مگر از طریق ترجمه عادی فشردن کلیدها توسط imwheel برای اقدامات چرخ و دسته. .br برنامه XV به خوبی کار خواهد کرد، همانند هر کلاینت دیگری که موشواره و/یا دکمه‌های موشواره را تصاحب می‌کند. این حالت برای کارکرد خود از هیچ تصاحبی استفاده نمی‌کند. .LP.SH "تنظیمات حساسیت استیک (STICK SENSITIVITY SETTINGS)" گزینه‌های \fB-s\fP و \fB-t\fP میزان حساسیت (sensitivity) و آستانه (threshhold) را مشخص می‌کنند. هر حرکت استیک یا گوی دنبال‌کننده (trackball)، برای افزوده شدن به مجموع محور مربوطه باید برابر یا بیشتر از آستانه باشد. به عبارت دیگر، اگر استیک را به اندازهٔ کافی به سمت بالا فشار دهید تا از مقدار آستانه فراتر رود، مجموع محور Y به همان میزانی که به بالا فشار داده‌اید افزایش می‌یابد. .LP سپس، مجموع حرکات محورهای X و Y هر کدام با مقدار تنظیم‌شدهٔ حساسیت مقایسه می‌شوند. اگر این مقدار برابر با حساسیت یا بیشتر از آن باشد، یک رویداد imwheel ایجاد می‌شود؛ بنابراین پس از مدتی فشردن به سمت بالا، مجموع Y از میزان حساسیت بیشتر شده و یک رویداد چرخش به بالا (wheel up) توسط imwheel به یک کنش، مانند کلید PageUp، تفسیر می‌شود. .LP بنابراین حساسیت باید بیشتر از آستانه باشد تا بتواند بر ورودی تأثیری بگذارد. شبه‌کدی مانند نمونهٔ زیر می‌تواند این موضوع را توضیح دهد: .RS .nf if(input >= threshhold) .RS sum = sum + input .RE if(sum >= sensitivity) { .RS do an imwheel action sum = 0 .RE } .fi .RE .SH "فایل IMWHEELRC (IMWHEELRC)" برنامهٔ IMWheel به‌صورت اختیاری از دو فایل پیکربندی استفاده می‌کند. یکی به نام /etc/X11/imwheel/imwheelrc که برای همهٔ کاربران اعمال می‌شود؛ دیگری $HOME/.imwheelrc که فقط برای یک کاربر به کار می‌رود. یکی از این فایل‌ها عرضه شده و اگر در $HOME کاربر نصب‌کننده قرار نگرفته باشد، باید به‌طور خودکار در /etc/X11/imwheel/ نصب شده باشد. تمام فاصله‌های خالی (whitespace) در این فایل‌ها نادیده گرفته می‌شوند، مگر مواردی که درون علامت نقل‌قول مضاعف ("") نام پنجره‌ها قرار دارند. .LP فایل پیکربندی شامل نام‌های پنجره و ترجمه‌های رویداد و/یا دستورات imwheel است که با نویسهٔ «@» (at) آغاز می‌شوند. هر نام پنجره بخشی را شروع می‌کند که پیکربندی مربوط به آن است. اولویت نام‌های پنجره بر اساس ترتیب ورود است (نخستین ورودی، نخستین بررسی)، بنابراین تطابق‌های عمومی‌تر همیشه باید در بخش‌های انتهایی فایل پیکربندی قرار گیرند. .LP توضیحات با علامت هش (#) آغاز می‌شوند و تا پایان خط ادامه می‌یابند. .LP .SH "سرفصل‌های بخش پنجره در IMWHEELRC (IMWHEELRC WINDOW SECTION HEADERS)" سرفصل‌های بخش نام پنجره در واقع یکی از این چهار مورد هستند: .LP .nf عنوان پنجره (Window Title) نام کلاس پنجره (Window Class Name) نام منبع پنجره (Window Resource Name) (null) که با "\(null\)" در imwheelrc تطبیق می‌یابد .fi .LP بیشتر این موارد با استفاده از ماژول FvwmIdent در fvwm2 یا با ابزار پیکربندی (بخش \fBCONFIGURATION HELPER\fP را ببینید) قابل شناسایی هستند. سایر مدیر پنجره‌ها ممکن است روش‌های مخصوص به خود را برای شناسایی مشخصه‌های پنجره داشته باشند. .br هر نام پنجره به‌صورت یک عبارت منظم (regex) تطبیق داده می‌شود. بنابراین هر پنجره‌ای را می‌توان با استفاده از الگوی regex به صورت ".*" به عنوان نام پنجره تطبیق داد. این الگو باید آخرین بخش در فایل پیکربندی شما باشد، در غیر این صورت پیکربندی‌های دیگر پنجره‌ها در فایل را برای اقدامات چرخ/استیک تطبیق‌یافته بازنویسی (override) خواهد کرد. .br یک سرفصل ویژه به صورت "(null)" وجود دارد که با پنجره‌هایی که در هر سه مشخصه دارای رشتهٔ تهی هستند مطابقت می‌یابد. این ویژگی تخصیص کنش‌ها را حتی برای Quake3، که هیچ اطلاعاتی برای پنجرهٔ خود ندارد، ممکن می‌سازد. فقط دقت داشته باشید کلیدهایی که به کار می‌برید نباید با سایر کنش‌های کلیدی در بازی یا برنامه‌ای که هدف شماست تداخل داشته باشند! فایل imwheelrc ارائه‌شده حاوی بخش "(null)" برای نمایش نحوهٔ کار است و باید با Quake3 کار کند. .br هر نام پنجره/کلاس/منبع \fIباید\fP درون نقل‌قول مضاعف (") و در یک خط مستقل قرار گیرد. .LP درون هر بخش پنجره می‌تواند هر تعداد تعریف ترجمه یا دستور قرار گیرد. هر تعریف ترجمه یا دستور باید در خطی جداگانه باشد. نیازی به بستن صریح بخش پنجره نیست، زیرا این بخش با آغاز بخشی دیگر یا با رسیدن به انتهای فایل پیکربندی پایان می‌یابد. .LP .SH "تعاریف ترجمه در IMWHEELRC (IMWHEELRC TRANSLATION DEFINITIONS)" ترجمه‌های چرخ ماوس/استیک هر کدام پس از شروع بخش پنجره، یک خط را به خود اختصاص می‌دهند. آرگومان‌ها با کاما (,) از یکدیگر جدا می‌شوند و فاصله‌های خالی نادیده گرفته می‌شوند. از KeySymها برای تعیین ورودی و خروجی‌های صفحه‌کلید استفاده می‌شود. از خط لوله یا پایپ (|) برای ترکیب چند کلید در یک ورودی/خروجی استفاده می‌شود. قالب به شرح زیر است: .LP .B الزامی (REQUIRED) .br آرگومان‌های زیر برای ساخت حداقل یک تعریف ترجمه الزامی هستند: .TP \fIورودی کلیدهای تغییردهنده (Key Modifiers Input)\fP شناسه‌های X KeySym که با خط عمودی (|) به هم متصل شده‌اند و نشان‌دهندهٔ کلیدهایی هستند که هنگام انجام عمل ماوس باید فشرده شوند تا این ترجمه اعمال شود. کلیدهای Alt، Meta، Control و Shift تغییردهنده‌های معمول هستند، اما به جای فقط «Shift»، کمی متفاوت بیان می‌شوند؛ مانند «Shift_L» یا «Shift_R» که بین کلیدهای تبدیل چپ و راست تمایز قائل می‌شوند. برای اطلاعات بیشتر بخش KeySyms را ببینید. «\fBNone\fP» یک KeySym ویژه است که توسط imwheel استفاده می‌شود و نشان‌دهندهٔ نبود کلیدهای تغییردهنده است. در این حالت یک مدخل خالی نیز قابل قبول است، اما وضعیت عملکرد را کمتر توصیف می‌کند! اگر از «\fBNone\fP» استفاده شود، در حین عمل چرخ نباید هیچ کلید تغییردهنده‌ای فشرده شده باشد. اگر این فیلد خالی بماند، با \fIهر\fP کلید تغییردهنده‌ای مطابقت خواهد داشت؛ بنابراین این موارد را در انتهای بخش پنجره مربوط به خود قرار دهید. .TP \fIورودی کنش ماوس (Mouse Action Input)\fP این ورودی حاصل از چرخ ماوس یا استیک است. این مقدار باید یکی از موارد زیر و \fIتنها\fP یکی از آن‌ها باشد: .nf Up Down Left Right Thumb .fi این موارد نیازی به توضیح ندارند. اگر مشکلی دارید از ابزار پیکربندی (configurator) استفاده کنید! .TP \fIخروجی کنش کلید (Key Action Output)\fP شناسه‌های KeySym خروجی در اینجا قرار می‌گیرند. برای اطلاعات بیشتر دربارهٔ تمامی KeySymهای موجود، بخش KeySyms را ببینید. KeySymها را با استفاده از خط عمودی (|) به یکدیگر متصل کنید. کلیدهای خروجی به ترتیب فشرده شده و پس از اینکه همه فشرده شدند، به ترتیب معکوس رها می‌شوند؛ که احتمالاً باعث ترکیب آن‌ها می‌شود، مانند «Control_L|C» که معادل فشردن کلید «^C» (control-c) خواهد بود. .LP .B اختیاری (OPTIONAL) .br گزینه‌های زیر اختیاری هستند، اما برای استفاده از هر یک از آن‌ها باید تمام آرگومان‌های پیشین را پر کنید. .TP \fIتکرار خروجی (Output Repetitions)\fP مشخص می‌کند که KeySymهای خروجی چند بار باید پشت سر هم فشرده شوند. پیش‌فرض 1 است. .TP \fIتأخیر پیش از رویداد رها کردن کلید (Delay Before KeyUp Event)\fP مدت زمان بر حسب میکروثانیه تا زمانی که همهٔ KeySymهای خروجی در یک تکرار خروجی رها شوند. پیش‌فرض 0 است. .TP \fIتأخیر پیش از رویداد فشردن بعدی کلید (Delay Before Next KeyPress Event)\fP مدت زمان بر حسب میکروثانیه تا زمانی که KeySymهای خروجی بعدی فشرده شوند. این تأخیر پس از رها شدن KeySymهای خروجی رخ می‌دهد. پیش‌فرض 0 است. .LP.SH "دستورهای IMWHEELRC (IMWHEELRC COMMANDS)" دستورها با نویسهٔ «@» آغاز می‌شوند. دستورها به شرح زیر هستند: .TP \fB@Exclude\fP این پنجره را از دریافت رویدادهای ماوس توسط imwheel مستثنی می‌کند. با ورود به این پنجره‌ها، imwheel قلاب ماوس (ungrab) را رها کرده و تا زمانی که فوکوس به پنجره‌ای مستثنی‌نشده منتقل نشود، ماوس را دوباره دریافت نخواهد کرد. این کار اجازه می‌دهد تا رویدادهای دکمهٔ ZAxis به صورت عادی عبور کرده و دریافت‌های ماوس (mouse grabs) موفقیت‌آمیز باشند. .br کلاینت‌های XV و KDE برای روش X Windows به این دستور نیاز دارند. .br این دستور در روش GPM هیچ تأثیری ندارد. ماوس به دام انداخته نمی‌شود و رویدادهای دکمهٔ ZAxis نیز توسط کارساز ایجاد نمی‌شوند. .TP \fB@Repeat\fP تکرار دکمهٔ ماوس برای پنجره. این کار باعث ایجاد یک رویداد دکمهٔ ماوس در پنجرهٔ جاری می‌شود. این حالت از XSendEvent استفاده نمی‌کند، بنابراین فشردن‌های دکمهٔ ماوس از نمونهٔ واقعی غیرقابل تشخیص هستند. این حالت با روش XGrabButtons در imwheel سازگار نیست، که در جای دیگر این صفحه‌راهنما با نام روش ZAxis فهرست شده است. .br حرکت‌ها به صورت زیر نگاشت می‌شوند: .RS .RS .nf Up دکمهٔ 4 است Down دکمهٔ 5 است Left دکمهٔ 6 است Right دکمهٔ 7 است Thumb1 دکمهٔ 8 است Thumb2 دکمهٔ 9 است .fi .RE .RE .TP \fB@Priority\fP=\fIpriority\fP استفاده از این دستور در هر بخش window/class/resource مجاز است. مقادیر بالاتر \fIpriority\fP نسبت به مقادیر کمتر اولویت دارند. اولویت‌های برابر در بخش‌ها باعث می‌شود فایل imwheelrc از بالا به پایین برای یافتن نخستین تطابق پردازش شود. بنابراین \fB@Priority\fP می‌تواند برای جستجوی تطابق‌ها در فایل بدون رعایت ترتیب به کار رود، در نتیجه در صورت تمایل نیازی نیست ورودی‌ها را به ترتیب نگه دارید. فایل imwheelrc ارائه‌شده شامل توضیحات و مثال‌های فراوانی از عملکرد \fB@Priority\fP است. .br مقدار پیش‌فرض \fIpriority\fP برای هر بخش جدید 0 است. آخرین دستور \fB@Priority\fP در یک بخش، تمام اولویت‌های قبلی آن بخش را بازنویسی می‌کند. بنابراین در نهایت هر بخش تنها یک تنظیم \fIpriority\fP خواهد داشت. اولویت‌ها به صورت یک int ذخیره می‌شوند، بنابراین دامنه‌ای از INT_MAX تا INT_MIN دارند. (برای مشاهدهٔ این مقادیر روی سیستم خود، فایل /usr/include/limits.h را ببینید) .LP .SH "دستیار پیکربندی (CONFIGURATION HELPER)" برنامهٔ IMWheel شامل یک دستیار پیکربندی نیمه‌پنهان است که می‌توان آن را با چند بار چرخاندن/حرکت دادن اهرم به بالا و پایین در پنجرهٔ ریشهٔ (root window) کارساز X نمایان کرد. درون این پنجره می‌توانید نام‌های پنجرهٔ احتمالی را برای استفاده در فایل imwheelrc خود بیابید. برای دریافت پنجره‌ای دیگر، از جمله پنجرهٔ ریشه (کل صفحه)، روی تصویر کوچک ضبط صفحه (mini-screen capture) کلیک کنید. .LP حرکت‌های چرخ ماوس و اهرم را می‌توان همراه با کلیدهای تبدیل‌گر (modifier) فعال روی صفحه‌کلید ثبت کرد. عملکرد چرخ/اهرم ماوس نمایش داده شده و KeySymهای X در زیر آن نشان داده می‌شوند. تمام این اطلاعات را می‌توان بنا به نیاز مستقیماً در یک imwheelrc وارد کرد. .LP می‌توان IMWheel را مجدداً راه‌اندازی کرد تا فایل imwheelrc تغییر‌یافته را بازخوانی کند، یا پیکربندی‌کننده را لغو کرد که باعث می‌شود imwheel بدون خواندن فایل پیکربندی عملیات خود را از سر بگیرد. برای راه‌اندازی مجدد، imwheel خود را به همان صورت که در ابتدا توسط کاربر فراخوانی شده بود مجدداً اجرا (exec) می‌کند، اما گزینهٔ \fB-R\fP را اضافه می‌کند تا به خود نشان دهد که یک imwheel راه‌اندازی مجدد شده است. گزینهٔ \fB-R\fP برای استفاده توسط کاربر نیست، زیرا برخی از پیکربندی‌های imwheel را نادیده می‌گیرد. .LP .SH "نمادهای کلید (KEYSYMS)" برنامه انتظار دارد ترکیب‌های keysym با استفاده از نویسه خط عمودی (|) با یکدیگر ترکیب شوند. .LP مثال: .RS .nf Alt_R|Shift_R .fi به معنای Alt راست \fIو\fP Shift راست با هم است، نه فقط یکی یا دیگری! و نه یکی پس از دیگری، آن‌ها اساساً هر دو هم‌زمان فشرده می‌شوند. .RE .LP برای کاربران FIFO، امکان ارسال یک رویداد دکمهٔ ماوس واقعی با استفاده از نحو ویژهٔ \fBButton#\fP وجود دارد. یک keysym به صورت Button1 در imwheelrc، رویداد دکمهٔ واقعی ۱ ماوس (دکمهٔ چپ ماوس) را ارسال خواهد کرد. Mouse4 همان چیزی است که برای رویدادی از نوع MouseWheelUp می‌خواهید. Mouse5 همان چیزی است که برای رویداد MouseWheelDown می‌خواهید. بسیاری از برنامه‌ها مفهوم دکمه‌های ۴ و ۵ ماوس را درک می‌کنند، اما اکثر آن‌ها فراتر از آن نمی‌روند. بنابراین \fIMouse6 و بالاتر هیچ معنای «استانداردشده‌ای» ندارند\fP. نحو Button# را می‌توان با keysymهای معمولی ترکیب کرد تا کلیدها و دکمه‌های ماوس هم‌زمان ارسال شوند. .LP مثال: .RS .nf Shift_L|Button4 - به معنای شیفت چپ و چرخ به بالا. Button5 - به معنای چرخ به پایین. .fi .RE .LP سایر ارجاع‌های معنادار دکمه‌ها به imwheel: .RS .nf KeySym IMWheel Input ماوس واقعی ------ ------------- ---------- Button1 (none) دکمهٔ چپ ماوس Button2 (none) دکمهٔ وسط ماوس Button3 (none) دکمهٔ راست ماوس Button4 Up چرخ ماوس به بالا Button5 Down چرخ ماوس به پایین Button6 Left چرخ ماوس به چپ Button7 Right چرخ ماوس به راست Button8 Thumb1 دکمهٔ جانبی ۱ ماوس (چپ/بالا) Button9 Thumb2 دکمهٔ جانبی ۲ ماوس (راست/پایین) .ni .RE .LP نام‌های رایج KeySymهای تبدیل‌گر (Modifier) مورد استفاده در X: .nf Shift_L Shift_R Control_L Control_R Alt_L Alt_R .fi .LP این موارد احتمالاً در حال حاضر به هیچ کلیدی اختصاص نیافته‌اند، مگر اینکه با \fIxmodmap\fP آن‌ها را تعریف کنید: .LP .nf Meta_L Meta_R (در واقع صفحه‌کلیدهای Sun این را دارند...) Super_L Super_R Hyper_L Hyper_R .fi .LP و در اینجا مواردی آمده است که ممکن است از آن‌ها استفاده کنید، و آن‌ها \fIدر جایی\fP روی صفحه‌کلید شما قرار دارند: در اینجا محل قرارگیری آن‌ها روی صفحه‌کلید من آورده شده است، باز هم تأکید می‌شود که این موضوع همگانی نیست. از برنامهٔ \fBxev\fP برای آزمایش کلیدهای صفحه‌کلید خود استفاده کنید! .LP .nf Caps_Lock = کلید Caps Lock! (این همچنان Caps Lock را روشن و خاموش می‌کند!) Num_Lock = کلید Num Lock! (استفاده از این چندان مناسب نیست... به همان دلایلی که برای Caps_Lock ذکر شد) Multi_key = کلید Scroll Lock! (تصورش را بکنید!) Mode_switch = Alt راست... حداقل برای من. (این یعنی من نمی‌توانم از Alt_R استفاده کنم) .fi کلیدهای ویندوز ممکن است به هیچ KeySym اختصاص نیافته باشند، اما شماره‌هایی خواهند داشت. از \fIxmodmap\fP می‌توان برای انتساب آن‌ها به یک KeySym واقعی استفاده کرد. .LP برای یافتن نام‌های keysym برای هر یک از کلیدهای موجود، فایل \fB/usr/include/X11/keysymdef.h\fP را ببینید، و برای هر define در آن فایل، عبارت «XK_» را حذف کنید تا نام KeySym قابل استفاده در فایل پیکربندی به دست آید. مسیر این فایل ممکن است در سیستم شما متفاوت باشد. .LP به یاد داشته باشید که همیشه پیکربندی‌کننده در دسترس است. و \fBxev\fP نیز در اینجا به شما کمک خواهد کرد! .LP.SH "چرخک یا استیک به‌عنوان کلید میانی در X (WHEEL OR STICK AS MIDDLE BUTTON IN X)" فایل XF86Config را بدون «Emulate3Buttons» پیکربندی کرده و در بخش Pointer یا InputDevice، مقدار «Buttons» را در صورتی که ۲ است افزایش دهید. چرخک یا استیک مانند یک کلید میانی واقعی عمل خواهد کرد و دو کلید بیرونی، حتی زمانی که هم‌زمان فشرده شوند، به‌صورت کلیدهای مجزا (۱ و ۳) عمل خواهند کرد. .LP البته اگر چرخک شما هنگام تلاش برای استفاده از آن مدام کلیک میانی می‌کند، ممکن است بخواهید گزینهٔ Emulate3Buttons را فعال کنید تا کلید چرخک غیرفعال شود! و فراموش نکنید که آرگومان Buttons را به ۲ کاهش دهید! .LP .SH "نگاشت کلیدها برای افراد چپ‌دست در X WINDOWS (LEFTY BUTTON MAPPING IN X WINDOWS)" برای آن دسته از افراد چپ‌دستی که از روش شمارهٔ ۱ (روش بدون gpm) استفاده می‌کنند، این دستور می‌تواند به شما کمک کند تا کلیدها را در XWindows هم برای افراد چپ‌دست و هم برای استفاده از imwheel به‌درستی تنظیم کنید. .LP .RS .nf xmodmap -e "pointer = 3 2 1 4 5" \fIیا\fP xmodmap -e "pointer = 3 2 1 4 5 6 7" \fIغیره...\fP xmodmap -e "pointer = 3 2 1 4 5 6 7 8 9" نکته: بیشتر این‌ها به دلیل محدودیت‌های موجود در X کار نخواهند کرد. .fi .RE .LP اگر کلیدهای بیشتری دارید، اعداد بیشتری را به انتهای این خط اضافه کنید! .LP .SH "گزارش باگ‌ها (BUGS)" البته که وجود دارند... اما در بیشتر مواقع قضیه فقط این است که تمام مطالبی را که من در اینجا و در فایل‌های خودِ توزیع نوشته‌ام نخوانده‌اید. حتی در آن صورت هم ممکن است خیلی زود تسلیم شوید. به تلاش ادامه دهید، کار چندان سختی نیست. من مدام در تلاشم تا رفتارهای غیرعادی برنامه را کاهش دهم. این نرم‌افزار هنوز یک نسخهٔ آزمایشی (بتا) است، همان‌طور که وجود ۰ در ابتدای شمارهٔ نسخه نشان می‌دهد. .LP .B باگ‌های واقعی .LP برنامهٔ imwheel با نسخهٔ دیگری از خودش روی نمایشگر X یکسان یا در صورت استفاده از FIFO یکسان gpmwheel کنار نمی‌آید. \- این مورد همیشه تقصیر شما خواهد بود :-/ .LP استفاده از ماوس‌های استیک (Stick mice) همچنان دردسرساز است. \- این تقصیر سازنده است؛ یا تقصیر X Windows، به این دلیل که روشی برای استفادهٔ آسان از چنین دستگاه‌هایی در تمامی برنامه‌ها ندارد. .LP تمرکز صفحه‌کلید (Keyboard focus) به‌طور خودکار برای ارسال کلیدهای ورودی به پنجره‌ای که ماوس روی آن قرار دارد تغییر نمی‌کند. این مشکل تنها در مدیریت تمرکز از نوع Click-to-Focus در مدیر پنجره‌ها رخ می‌دهد. من از حالت تمرکز آزاد (sloppy focus) در fvwm2 استفاده می‌کنم که همیشه برای من درست کار می‌کند. \- این تقصیر \fIچه کسی\fP است؟ (حالت‌های تمرکز و/یا مدیر پنجره را تغییر دهید، یا گزینهٔ \fB\-f\fP را در imwheel امتحان کنید) .LP فایل پیکربندی به‌خوبی از نظر درستی اعتبارسنجی نمی‌شود... اگرچه قبل از شروع برنامهٔ اصلی پیش‌تجزیه (preparse) می‌شود و در نتیجه پیش از اجرا با یک فایل پیکربندی نامعتبر جلویتان را می‌گیرد. من فقط تابه‌حال یک فایل پیکربندی نادرست ایجاد نکرده‌ام، بنابراین حدس می‌زنم باید این کار را امتحان کنم تا ببینم چه می‌شود. فقط هیچ اشتباهی نکنید تا مشکلی پیش نیاید. \- این تقصیر من است؟! ;) .LP .SH "صفحه خانگی (HOMEPAGE)" .nf http://jonatkins.org/imwheel .fi .LP .SH "نویسنده (AUTHOR)" Jonathan Atkins .LP .SH "فایل‌ها (FILES)" .nf $HOME/.imwheelrc فایل پیکربندی کاربر. /etc/X11/imwheel/imwheelrc مکان سراسری فایل پیکربندی؛ این فایل همیشه بارگذاری می‌شود و توسط فایل پیکربندی کاربر رونویسی (override) می‌شود. /dev/gpmwheel چرخک FIFO پیش‌فرض از gpm، در صورت استفاده. /dev/jam_imwheel:0.0 (یا شماره‌های دیگر...) یک چرخک FIFO از jamd؛ در صورت استفاده، باید مشخص شود. برنامهٔ jamd اجازه استفاده از بیش از یک FIFO را می‌دهد و بنابراین اجازه می‌دهد بیش از یک نمونه از imwheel روی یک رایانه هنگام اجرای imwheel روی چندین نمایشگر با استفاده از روش Wheel FIFO اجرا شود. /tmp/imwheel.pid مکان عمومی برای فایل pid برنامهٔ imwheel. /var/run/imwheel.pid مکان اختصاصی برای فایل pid برنامهٔ imwheel. .fi .LP.SH "همچنین ببینید (SEE ALSO)" .nf \fBjamd(1)\fP موش‌واره Jon Atkins \- جایگزین/مکملی برای gpm. \fBxwheel(1x)\fP جایگزین جدید imwheel. از jamd به‌جای gpm یا ZAxis استفاده می‌کند. (ممکن است هنوز در دسترس نباشد) \fBxdpyinfo(1x)\fP اطلاعات نمایشگر X، شامل افزونه‌ها. \fBgpm(8)\fP موش‌واره همه‌منظوره (General Purpose Mouse)، نسخهٔ imwheel مورد نیاز است. \fBFvwmIdent(1x)\fP ماژول Identify در FVWM2، برای وارسی پنجره‌ها. \fBregex(7)\fP عبارت‌های باقاعده POSIX 1003.2. \fBxmodmap(1x)\fP ابزاری برای اصلاح نگاشت کلیدها و دکمه‌ها در X. \fBxev(1x)\fP چاپ محتویات رویدادهای X. \fB/usr/include/X11/keysymdef.h\fP تعاریف KeySym برای X11. \fB/usr/include/limits.h\fP تعاریف INT_MIN و INT_MAX. .fi