Линукс, Electron програмууд дээр alt+shift ашиглан шилжих асуудлыг шийдэж байна

Сайн байна уу хамт олон!

Гарчиг дээр дурдсан асуудлын шийдлийг хуваалцахыг хүсч байна. Би энэ нийтлэлийг бичихэд хамт ажилладаг хүнээс санаа авсан брновк, хэн залхуу биш байсан бөгөөд асуудлын хэсэгчилсэн (миний хувьд) шийдлийг санал болгосон. Би өөрөө "таяг" хийсэн нь надад тусалсан. Би та бүхэнтэй хуваалцаж байна.

Асуудлын тодорхойлолт

Би Ubuntu 18.04-ийг ажилдаа ашиглаж байсан бөгөөд Electron ашиглан үүсгэсэн Visual Studio Code, Skype, Slack болон бусад программуудын байршлыг alt+shift ашиглан солих үед дараах асуудал гарч байгааг анзаарсан: оролтын талбараас анхаарлаа төвлөрүүлэх нь дээд тал руу шилждэг. цонхны самбар (цэс). Бусад шалтгааны улмаас би Fedora + KDE руу шилжиж, асуудал арилаагүй гэдгийг ойлгосон. Үүний шийдлийг хайж байхдаа би гайхалтай нийтлэл олж авлаа Skype хэрхэн өөрөө засах вэ. Маш их баярлалаа нөхөр брновк, асуудлын талаар дэлгэрэнгүй ярьж, шийдвэрлэх арга барилаа хуваалцсан. Гэхдээ нийтлэлд дурдсан арга нь асуудлыг зөвхөн нэг програм, тухайлбал Skype-аар шийдсэн. Миний хувьд Visual Studio кодыг ойлгох нь маш чухал байсан, учир нь үсрэх цэсээр мессеж бичих нь ядаргаатай боловч хэрэв та хөгжүүлэлтэд оролцдог бол тийм ч их биш юм. Нэмж хэлэхэд, нэг хамт олон програмын цэсийг бүрмөсөн алга болгох шийдлийг санал болгосон бөгөөд би VS Code дахь цэсийг алдахыг үнэхээр хүсэхгүй байна.

Юу болсныг ойлгохыг хичээсэн

Тиймээс би юу болоод байгааг ойлгохын тулд цаг гаргахаар шийдсэн. Одоо би өөрийнхөө явсан замыг товч тайлбарлах болно, магадгүй энэ талаар илүү мэдлэгтэй хэн нэгэн надад тулгарсан бэрхшээлийг тайлбарлахад тусална.

Би Visual Studio Code-г нээж, өөр өөр Alt+<%something%> хослолыг дарж, програм хэрхэн хариу үйлдэл үзүүлж байгааг харахаар эхэлсэн. Бараг бүх тохиолдолд Alt+Shift-аас бусад бүх хослолууд анхаарлаа төвлөрүүлэхгүйгээр ажилласан. Хэн нэгэн Alt товчийг дарсны дараа дарсан Shift-ийг идэж байгаа юм шиг санагдсан ба програм намайг Alt товчийг дараад юу ч дарсангүй, Alt товчлуурыг суллаж, миний анхаарлыг өөрийн цэс рүү баяртайгаар оруулсан нь логиктой санагдав. тэр.

Би гарын байрлалыг солих тохиргоог нээгээд (та энэ урт жагсаалт болон товчлуурын бүх төрлийн тохиргоог шалгах хайрцаг) нээж, ямар ч нэмэлт товшилтгүйгээр Alt товчийг ашиглан байрлалыг солихоор тохируулсан.

Линукс, Electron програмууд дээр alt+shift ашиглан шилжих асуудлыг шийдэж байна

Үүний дараа цонх солих Alt+Tab ажиллахаа больсон. Зөвхөн Таб ажилласан, өөрөөр хэлбэл хэн нэгэн миний Alt-г дахин "идсэн". Энэ "хэн нэгэн" хэн бэ гэсэн асуулт үлдсэнгүй, гэхдээ би түүнтэй юу хийж болохыг мэдэхгүй байв.

Гэхдээ асуудлыг ямар нэгэн байдлаар шийдэх ёстой байсан тул ийм шийдэл санаанд оров.

  1. Тохиргоо дотроос гарын байрлалыг солих товчийг идэвхгүй болго (Өөр байршил руу шилжих хэсэгт байгаа бүх чагтыг арилгана уу);
  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

Одоо бид энэ хослол дээр дарахад байршил өөрчлөгддөг эсэхийг шалгах хэрэгтэй. Би зохион байгуулалтыг зааж өгөх цорын ганц ажлын командыг олсон:


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

сэтгэгдэл нэмэх