سلام همکاران!
من میخواهم راه حل خودم را برای مشکلی که در عنوان ذکر شده است به اشتراک بگذارم. یکی از همکارانم الهامبخش نوشتن این مقاله بود. که زحمت کشیدند و یک راه حل جزئی (برای من) برای این مشکل ارائه دادند. من "تقلب" خودم را ساختم که به من کمک کرد. آن را با شما به اشتراک میگذارم.
شرح مشکل
استفاده شده Ubuntu من از نسخه ۱۸.۰۴ برای کار استفاده میکردم و اخیراً متوجه شدم که هنگام تغییر طرحبندی با استفاده از Alt+Shift در برنامههایی مانند Visual Studio Code، Skype، Slack و سایر برنامههای ساخته شده با Electron، مشکل زیر رخ میدهد: فوکوس از فیلد ورودی به پنل پنجره بالا (منو) منتقل میشود. به دلایل دیگر، به Fedora + KDE تغییر دادم و متوجه شدم که این مشکل همچنان ادامه دارد. در حین جستجوی راه حل، این مقاله عالی را پیدا کردم. خیلی ممنونم رفیق. ، که مشکل را با جزئیات شرح داد و راه حل خود را به اشتراک گذاشت. با این حال، راه حل شرح داده شده در مقاله فقط با یک برنامه، اسکایپ، کار میکرد. همچنین برای من فهمیدن Visual Studio Code بسیار مهم بود، زیرا اگرچه پیام رسانی با منوی پرشی آزاردهنده است، اما اگر در حال توسعه هستید، چندان بد نیست. به علاوه، یکی از همکاران راه حلی پیشنهاد داد که باعث میشود منوی برنامه به طور کامل ناپدید شود و من واقعاً نمیخواستم منو را در VS Code از دست بدهم.
سعی کردم بفهمم چه خبر است.
بنابراین، تصمیم گرفتم وقت بگذارم و بفهمم چه اتفاقی دارد میافتد. من به طور خلاصه مسیری را که طی کردم شرح میدهم؛ شاید کسی که در این زمینه دانش بیشتری دارد بتواند به روشن شدن مشکلاتی که با آنها مواجه شدم کمک کند.
من ویژوال استودیو کد را باز کردم و شروع به فشردن ترکیبهای مختلف Alt+<%something%> کردم و واکنش برنامه را تماشا کردم. تقریباً در همه موارد، همه ترکیبها به جز Alt+Shift بدون از دست دادن تمرکز کار میکردند. انگار چیزی داشت کلید Shift را که بعد از نگه داشتن Alt فشار میدادم، میبلعید و برنامه فکر کرد که من Alt را فشار دادهام، سپس چیزی فشار نداده، Alt را رها کرد و با خوشحالی تمرکز من را به منوی خود منتقل کرد، که برایش کاملاً منطقی به نظر میرسید.
تنظیمات تغییر طرحبندی صفحهکلید (همان لیست طولانی با چکباکسها و انواع تنظیمات برای کلیدها) را باز کردم و تغییر طرحبندی را روی کلید Alt تنظیم کردم، بدون هیچ فشار اضافی.

بعد از آن، Alt+Tab برای تعویض پنجرهها دیگر کار نمیکرد. فقط Tab کار میکرد، به این معنی که دوباره کسی داشت کلید Alt من را "میخورد". دیگر شکی نبود که این "شخص" کیست، اما من نمیدانستم با آن چه کار کنم.
اما از آنجایی که مشکل باید به نحوی حل میشد، راه حلی به ذهن رسید:
- در تنظیمات، کلید میانبر برای تغییر طرحبندی صفحهکلید را غیرفعال کنید (در بخش «تغییر به طرحبندی دیگر»، همه کادرهای انتخاب را بردارید)؛
- کلید میانبر خودم را ایجاد کنم که طرحبندی من را تغییر دهد
شرح راه حل
ابتدا، بیایید Xbindkeys را نصب کنیم، برنامهای که به شما امکان میدهد دستورات را به کلیدها اختصاص دهید. متأسفانه، ابزارهای داخلی به من اجازه ندادند با استفاده از رابط کاربری جذاب آن، یک کلید فوری برای ترکیبی مانند Alt+Shift ایجاد کنم. میتوانید برای Alt+S، Alt+1، Alt+shift+Y و غیره یکی ایجاد کنید، اما این برای اهداف ما مناسب نیست.
sudo dnf install xbindkeysrc جزئیات بیشتر در مورد آن را میتوانید در
در مرحله بعد، بیایید یک فایل تنظیمات نمونه برای برنامه ایجاد کنیم. این فایل بسیار کوتاه است و فقط شامل چند دستور است، دقیقاً همان چیزی که برای درک نحوه استفاده از آن نیاز دارید:
xbindkeys -d > ~/.xbindkeysrcهمانطور که در مثال فایل میبینید، باید کلید میانبری که میخواهیم استفاده کنیم و دستوری که باید اجرا شود را مشخص کنیم. به نظر ساده میآید.
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
میتوانید از املای قابل خواندن توسط انسان یا کدهای کلیدی به عنوان کلید میانبر استفاده کنید. کدهای کلیدی تنها چیزی بودند که برای من کار کردند، اما میتوانید کمی آزمایش کنید.
برای دریافت کدها باید از دستور زیر استفاده کنید:
xbindkeys -kیک پنجره کوچک "X" باز خواهد شد. فقط وقتی روی این پنجره فوکوس شدهاید، باید کلیدها را فشار دهید! فقط در این صورت چیزی شبیه به این را در ترمینال خواهید دید:
[podkmax@localhost ~]$ xbindkeys -k
Press combination of keys or/and click under the window.
You can use one of the two lines after "NoCommand"
in $HOME/.xbindkeysrc to bind a key.
"(Scheme function)"
m:0x4 + c:39
Control + s
در مورد من، ترکیب کلید Alt+Shift به این شکل است:
m:0x8 + c:50حالا باید طوری تنظیمش کنم که با فشردن این ترکیب کلید، چیدمان صفحهکلید تغییر کند. من فقط یک دستور کاربردی برای مشخص کردن چیدمان صفحهکلید پیدا کردهام:
setxkbmap ru
setxkbmap us
همانطور که از مثال میبینید، فقط میتواند یک یا چند طرحبندی دیگر را فعال کند، بنابراین چیزی جز نوشتن یک اسکریپت به ذهنم نرسید.
vim ~/layout.sh
#!/bin/bash
LAYOUT=$(setxkbmap -print | awk -F + '/xkb_symbols/ {print $2}')
if [ "$LAYOUT" == "ru" ]
then `/usr/bin/setxkbmap us`
else `/usr/bin/setxkbmap ru`
fi
حال، اگر فایلهای .xbindkeysrc و layout.sh در یک دایرکتوری قرار داشته باشند، ظاهر نهایی فایل .xbindkeysrc به این شکل خواهد بود:
# Examples of commands:
"xbindkeys_show"
control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
# specify a mouse button
"xterm"
control + b:2
#А вот то, что добавил я
"./layout.sh"
m:0x8 + c:50
بعد از این تغییرات را اعمال میکنیم:
xbindkeys -p
و میتوانید بررسی کنید. فراموش نکنید که گزینههای تغییر طرحبندی را در تنظیمات پیشفرض غیرفعال کنید.
مجموع
همکاران، امیدوارم این مقاله به کسی کمک کند تا به سرعت از شر یک مشکل آزاردهنده خلاص شود. من شخصاً تمام آخر هفتهام را صرف فهمیدن و حل کردن مشکل کردم تا دیگر مجبور نباشم در طول ساعات کاری نگران آن باشم. این مقاله را نوشتم تا در زمان و ناامیدی کسی صرفهجویی کنم. بسیاری از شما از یک روش جایگزین برای تغییر طرحبندی صفحهکلید استفاده میکنید و مشکل را نمیفهمید. من شخصاً Alt+Shift را ترجیح میدهم و میخواهم به این روش کار کند. اگر شما هم نظر من را دارید و با این مشکل مواجه هستید، این مقاله باید به شما کمک کند.
منبع: www.habr.com
