اضافه کردن چند کلید دلخواه به کیبورد!

رضا عسگری 16 سپتامبر 2023 زمان خواندن: ~1 دقیقه

من یکی از کسانی هستم که کمتر از کیبرد لپتاپ استفاده میکنند و تقریبا 90 درصد اوقات یک کیبرد به لپتاپ متصل میکنم. اما کیبرد دوم من یک کیبرد کاملا ساده است(هیچ کلید اضافه ای برای کنترل مدیا و غیره ندارد) و خب این مساله کمی آزاردهنده است که برای رد کردن یک موسیقی از ماوس یا کیبرد لپتاپ استفاده کنم!

برای حل این مشکل 2 راه حل بیشتر نداشتم:

1- تغییر تنظمیات keyboard shortcut اوبونتو. این راه حل قطعا راه مناسبی نیست، چون نمیشه بیش از یک میانبر برای دستورهای کنترل مدیا تنظیم کرد(شاید بشه ولی من اطلاع ندارم!)، پس کل میانبر های اصلی کیبرد لپتاپ از کار می افتاد که اصلا خوشایند نیست.

2- اضافه کردن این کلید ها به کیبرد. (منظورم این نیست که به صورت فیزیکی چنتا کلید اضافه کنم!) یعنی چنتا شرتکات جدید داشته باشم که ازشون برای کنترل مدیا استفاده کنم.

ساده ترین راهی که برای این کار به نظر من رسید استفاده از  xdotool بود. از این ابزار میتوان برای شبیه سازی ورودی های موس و کیبرد (و سایر ورودی ها!)، و تغییر اندازه پنجره ها، و ... استفاده کرد. استفاده ما در اینجا خیلی ساده است و زیاد درگیر این ابزار نمیشیم. اگر علاقه دارید بیشتر با این پکیج آشنا بشید man در خدمت شماست!

خب xdotool یک دستور داره به اسم key که اسم هر کلیدی که بهش میگید رو فشار میده! (البته واقعا فشار نمیده! مجازیه!) مثلا:

 xdotool key a

به xserver میگه که a روی کیبرد فشار داده شد!

خب تا الأن یه کد کوچک دارم که میتونم جای اینکه به خودم زحمت بدم، دستم رو دراز کنم و کلیدی رو روی کیبرد لپتاپ فشار بدم، به کامپیوتر دستور بدم اینکارو انجام بده!

خب این لیست کلیدهاییه که من ندارم روی کیبردم و میخوام اضافه کنم. لیست کل این کلید هارا از اینجا ببینید.

XF86AudioNext 
XF86AudioPause
XF86AudioPlay
XF86AudioPrev
XF86AudioLowerVolume
XF86AudioRaiseVolume
XF86MonBrightnessUp
XF86MonBrightnessDown

که خب فکر کنم واضح باشه هرکدوم برای چکاریه. کافیه یک شرتکات تعریف کنم که مثلا وقتی alt+f2 رو فشار میدم این دستور اجرا بشه. با توجه به محیط دسکتاپی که استفاده میکنید این تنظیمات متفاوته. ولی قطعا در قسمت setting پیداش میکنید!

 xdotool key --clearmodifiers XF86AudioPlay

اما چرا باید از سویچ --clearmodifiers استفاده کنیم. این جیزیه که من مدت ها باهاش مشکل داشتم تا اینکه این صفحه را خواندم. اتفاق عجیبی که میوفته اینه که وقتی شما دستور xdotool key X را اجرا در ترمینال اجرا میکنید به درستی کار میکند اما زمانی که برای آن یک کلید میانبر تعریف میکنید، اصلا کار نمیکنه. دلیل این اتفاق این است که شما در هنگام اجرای این دستور در ترمینال هیج کلید دیگری را هم زمان با اجرای دستور فشار نمیدهید؛ اما زمانی که یک میانبر تعریف میکنید این دستور زمانی اجرا میشود که شما در حال فشردن چند کلید دیگر هستید و این همزمانی برای سیستم گیج کننده است. سویچ clearmodifiers قبل از فشردن(!) کلید جدید از کلیدهای دیگر که در حال فشرده شدن هستند صرف نظر میکنه.

اولین نفری باشید که دیدگاهی ارسال می کند!




حاصل سر و کله زدن های من با لینوکس