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