Linuxda, Electron ilovalarida alt+shift yordamida almashtirish muammosini hal qilish

Salom hamkasblar!

Sarlavhada ko'rsatilgan muammoga yechimimni baham ko'rmoqchiman. Ushbu maqolani yozishga hamkasbim ilhom berdi brnovk, dangasa bo'lmagan va muammoni qisman (men uchun) hal qilishni taklif qilgan. Men o'zimning "tayoqcham" yasadim, bu menga yordam berdi. Men siz bilan baham ko'raman.

Muammoning tavsifi

Men ish uchun Ubuntu 18.04 dan foydalanardim va yaqinda Electron yordamida yaratilgan Visual Studio Code, Skype, Slack va boshqalar kabi ilovalarda alt+shift yordamida maketlarni almashtirishda quyidagi muammo yuzaga kelganini payqadim: kirish maydonidan fokus yuqoriga o‘tadi. oyna paneli (menyu). Boshqa sabablarga ko'ra, men Fedora + KDE-ga ko'chib o'tdim va muammo hal qilinmaganini angladim. Yechim izlab, ajoyib maqola topdim Skypeni o'zingiz qanday tuzatishingiz mumkin. Katta rahmat o'rtoq brnovk, muammo haqida batafsil gapirib, uni hal qilish usuli bilan o'rtoqlashdi. Ammo maqolada ko'rsatilgan usul muammoni faqat bitta dastur, ya'ni Skype bilan hal qildi. Men uchun Visual Studio kodini tushunish ham juda muhim edi, chunki sakrash menyusi bilan xabarlar yozish, garchi zerikarli bo'lsa ham, agar siz ishlab chiqishda ishtirok etsangiz, unchalik ko'p emas. Bundan tashqari, bir hamkasb dastur menyusi butunlay yo'qolib ketadigan yechimni taklif qildi va men VS kodidagi menyuni yo'qotishni xohlamayman.

Nima noto'g'ri ekanligini tushunishga harakat qildi

Shunday qilib, nima bo'layotganini tushunish uchun vaqt ajratishga qaror qildim. Endi men bosib o'tgan yo'lni qisqacha tasvirlab beraman, ehtimol bu masalada ko'proq bilimdon kimdir men duch kelgan qiyinchiliklarni tushuntirishga yordam beradi.

Men Visual Studio Code-ni ochdim va dastur qanday javob berishini ko'rish uchun turli xil Alt+<%something%> kombinatsiyalarini bosishni boshladim. Deyarli barcha holatlarda, Alt+Shift-dan tashqari barcha kombinatsiyalar diqqatni yo'qotmasdan ishladi. Kimdir Shift tugmachasini bosganga o'xshardi, bu esa Alt tugmachasini bosib ushlab turgandan so'ng, dastur men Alt-ni bosdim, keyin hech narsani bosmadi, deb o'yladi, Alt-ni qo'yib yubordi va u quvonch bilan diqqatimni o'z menyusiga qaratdi, bu juda mantiqiy tuyuldi. bu.

Men klaviatura tartibini almashtirish sozlamalarini ochdim (bilasizmi, belgilash katakchalari va tugmalar uchun barcha turdagi sozlamalar bilan bu uzun ro'yxat) va uni hech qanday qo'shimcha bosishlarsiz Alt tugmasi yordamida tartiblarni almashtirish uchun o'rnatdim.

Linuxda, Electron ilovalarida alt+shift yordamida almashtirish muammosini hal qilish

Shundan so'ng, oynalarni almashtirish uchun Alt + Tab tugmalari ishlashni to'xtatdi. Faqat Tab ishladi, ya'ni kimdir mening Altimni yana "yeydi". Bu "kimdir" kimligi haqida hech qanday savol qolmadi, lekin men u bilan nima qilish mumkinligini bilmasdim.

Ammo muammoni qandaydir tarzda hal qilish kerak bo'lganligi sababli, yechim aqlga keldi:

  1. Sozlamalarda klaviatura tartibini almashtirish uchun tezkor tugmani o'chirib qo'ying (Boshqa tartibga o'tish bo'limidagi barcha belgilash katakchalarini olib tashlang);
  2. Men uchun tartibni o'zgartiradigan o'zingizning tezkor tugmachangizni yarating

Yechim tavsifi

Birinchidan, Xbindkeys tugmachalariga buyruqlar belgilash imkonini beruvchi dasturni o'rnatamiz. Afsuski, standart vositalar chiroyli interfeys orqali Alt+Shift kabi kombinatsiya uchun tezkor tugmani yaratishga imkon bermadi. Alt+S, Alt+1, Alt+shift+Y va boshqalar uchun bajarilishi mumkin. va hokazo, lekin bu bizning vazifamiz uchun mos emas.

sudo dnf install xbindkeysrc

Bu haqda batafsil ma'lumotni quyidagi manzilda topishingiz mumkin ArchWiki
Keyinchalik, dastur uchun namuna sozlamalari faylini yaratamiz. Namuna juda qisqa, bir nechta buyruqlar bilan, u bilan qanday ishlashni tushunish uchun nima kerak:

xbindkeys -d > ~/.xbindkeysrc

Fayldagi misoldan ko'rinib turibdiki, biz foydalanmoqchi bo'lgan tezkor tugmani va bajarilishi kerak bo'lgan buyruqni ko'rsatishimiz kerak. Oddiy ko'rinadi.


# Examples of commands:
"xbindkeys_show"
  control+shift + q
# set directly keycode (here control + f with my keyboard)
"xterm"
  c:41 + m:0x4

Tezkor tugma sifatida siz odam o'qiy oladigan yozuvdan foydalanishingiz yoki kalit kodlaridan foydalanishingiz mumkin. Bu men uchun faqat kodlar bilan ishladi, lekin hech kim sizga ozgina tajriba qilishni taqiqlamaydi.

Kodlarni olish uchun buyruqni ishlatishingiz kerak:

xbindkeys -k

Kichik "X" oynasi ochiladi. Siz faqat ushbu oynada diqqat markazida bo'lganingizda tugmachalarni bosishingiz kerak! Faqat bu holatda siz terminalda shunga o'xshash narsani ko'rasiz:


[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

Mening holatimda, Alt + Shift tugmalar birikmasi quyidagicha ko'rinadi:

m:0x8 + c:50

Endi biz ushbu kombinatsiyani bosganingizda tartib o'zgarishiga ishonch hosil qilishimiz kerak. Tartibni belgilash uchun faqat bitta ishchi buyruq topdim:


setxkbmap ru
setxkbmap us

Misoldan ko'rinib turibdiki, u faqat u yoki bu tartibni yoqishi mumkin, shuning uchun skript yozishdan boshqa hech narsa xayolimga kelmadi.


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

Endi, agar .xbindkeysrc va layout.sh fayllari bitta katalogda joylashgan bo'lsa, .xbindkeysrc faylining yakuniy ko'rinishi quyidagicha ko'rinadi:


# 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

Shundan so'ng biz o'zgarishlarni qo'llaymiz:


xbindkeys -p

Va tekshirishingiz mumkin. Standart sozlamalarda tartiblarni almashtirish uchun har qanday variantlarni o'chirishni unutmang.

Xulosa

Hamkasblar, umid qilamanki, ushbu maqola kimgadir zerikarli muammodan tezda xalos bo'lishga yordam beradi. Shaxsan men butun dam olish kunimni ish vaqtida chalg‘itmaslik uchun muammoni qandaydir yo‘l bilan aniqlash va hal qilish uchun o‘tkazdim. Men bu maqolani birovning vaqtini va asabini tejash uchun yozdim. Ko'pchiligingiz sxemalarni almashtirishning muqobil usulidan foydalanasiz va muammo nimada ekanligini tushunmaysiz. Shaxsan men Alt+Shift bilan almashishni yoqtiraman. Va men uning ishlashini xohlayman. Agar siz mening fikrimni baham ko'rsangiz va ushbu muammoga duch kelsangiz, ushbu maqola sizga yordam berishi kerak.

Manba: www.habr.com

a Izoh qo'shish