حل مشکل سوئیچینگ با استفاده از alt+shift در لینوکس، در برنامه های Electron

سلام همکاران!

من می خواهم راه حل خود را برای مشکلی که در عنوان نشان داده شده است به اشتراک بگذارم. من برای نوشتن این مقاله توسط یکی از همکاران الهام گرفتم برنوف، که تنبل نبود و یک راه حل جزئی (برای من) برای مشکل ارائه کرد. من "عصا" خودم را ساختم که به من کمک کرد. من با شما به اشتراک می گذارم.

شرح مشکل

من از اوبونتو 18.04 برای کار استفاده کردم و اخیراً متوجه شدم که هنگام تعویض طرح‌بندی با استفاده از alt+shift در برنامه‌هایی مانند Visual Studio Code، Skype، Slack و موارد دیگر که با استفاده از Electron ایجاد شده‌اند، مشکل زیر رخ می‌دهد: فوکوس از فیلد ورودی به بالا می‌رود. پانل پنجره (منو). به دلایل دیگر، من به Fedora + KDE نقل مکان کردم و متوجه شدم که مشکل برطرف نشده است. در حالی که به دنبال راه حلی بودم، یک مقاله فوق العاده پیدا کردم چگونه اسکایپ را خودتان تعمیر کنید. خیلی ممنون رفیق برنوف، که به تفصیل در مورد مشکل صحبت کرد و روش خود را برای حل آن به اشتراک گذاشت. اما روش ذکر شده در مقاله تنها با یک برنامه، یعنی Skype، مشکل را حل کرد. برای من، درک کد ویژوال استودیو نیز بسیار مهم بود، زیرا نوشتن پیام‌ها با منوی پرش، اگرچه آزاردهنده است، اما اگر درگیر توسعه باشید، چندان مهم نیست. به علاوه، یکی از همکاران راه حلی را پیشنهاد کرد که در آن منوی برنامه به طور کامل ناپدید می‌شود و من واقعاً نمی‌خواهم منو را در VS Code گم کنم.

سعی کرد بفهمد چه مشکلی دارد

بنابراین، تصمیم گرفتم وقت بگذارم تا بفهمم چه اتفاقی در حال رخ دادن است. اکنون مسیری را که در پیش گرفتم به اختصار شرح می دهم، شاید کسی که در این زمینه آگاه تر است به توضیح مشکلاتی که با آن برخورد کردم کمک کند.

کد ویژوال استودیو را باز کردم و شروع به زدن ترکیبات مختلف Alt+<%something%> کردم تا ببینم برنامه چگونه پاسخ می دهد. تقریباً در همه موارد، همه ترکیب ها به جز Alt+Shift بدون از دست دادن تمرکز کار می کردند. به نظر می رسید کسی در حال خوردن Shift فشرده بود که بعد از نگه داشتن Alt دنبال شد، و برنامه فکر کرد که من Alt را فشار دادم، سپس چیزی را فشار ندادم، Alt را آزاد کرد و با خوشحالی تمرکز من را به منوی خود انداخت، که کاملاً منطقی به نظر می رسید. آی تی.

تنظیمات تغییر طرح‌بندی صفحه‌کلید (می‌دانید، این فهرست طولانی با چک‌باکس‌ها و انواع تنظیمات برای کلیدها) را باز کردم و آن را تنظیم کردم تا با استفاده از دکمه Alt، بدون هیچ کلیک اضافی، طرح‌بندی‌ها را تغییر دهد.

حل مشکل سوئیچینگ با استفاده از alt+shift در لینوکس، در برنامه های Electron

پس از آن، Alt+Tab برای تعویض ویندوز از کار افتاد. فقط Tab کار کرد، یعنی کسی دوباره Alt من را خورد. هیچ سوالی در مورد اینکه این "کسی" کیست باقی نمانده بود، اما نمی دانستم با او چه می توان کرد.

اما از آنجایی که مشکل باید به نحوی حل می شد، پس یک راه حل به ذهنم رسید:

  1. در تنظیمات، کلید میانبر را برای تغییر طرح‌بندی صفحه‌کلید غیرفعال کنید (تیک تمام چک باکس‌ها را در بخش Switch to other layout بردارید).
  2. کلید میانبر خود را ایجاد کنید که طرح را برای من تغییر دهد

شرح راه حل

ابتدا برنامه ای را نصب می کنیم که به شما اجازه می دهد تا دستورات را به کلیدهای Xbindkeys اختصاص دهید. متأسفانه، ابزارهای استاندارد به من اجازه نمی دادند که از طریق یک رابط زیبا، یک کلید میانبر برای ترکیبی مانند Alt+Shift ایجاد کنم. برای Alt+S، Alt+1، Alt+shift+Y و غیره قابل انجام است. و غیره، اما این برای وظیفه ما مناسب نیست.

sudo dnf install xbindkeysrc

جزئیات بیشتر در مورد آن در دسترس است ArchWiki
در مرحله بعد یک فایل تنظیمات نمونه برای برنامه ایجاد می کنیم. نمونه بسیار کوتاه است، با چند دستور، فقط آنچه شما نیاز دارید تا نحوه کار با آن را بفهمید:

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

حال باید مطمئن شویم که وقتی روی این ترکیب کلیک می‌کنید، layout تغییر می‌کند. من فقط یک دستور کار برای مشخص کردن طرح پیدا کردم:


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

اضافه کردن نظر