alt+shift düymələri ilə keçid probleminin həlli Linux, Elektron tətbiqlərində

Salam həmkarlar!

Başlıqda qeyd olunan problemin həllini bölüşmək istərdim. Bu yazını yazmağa bir həmkarım ilham verdi. brnovk, problemin qismən (mənim üçün) həllini təklif etmək üçün əziyyət çəkən. Mənə kömək edən öz "fırıldaq"ımı yaratdım. Sizinlə paylaşıram.

Problemin təsviri

İstifadə olunur Ubuntu İş üçün 18.04 versiyasından istifadə edirəm və bu yaxınlarda Visual Studio Code, Skype, Slack və Electron ilə qurulmuş digər tətbiqlərdə Alt+Shift istifadə edərək düzeni dəyişdirərkən aşağıdakı problemin yarandığını müşahidə etdim: fokus giriş sahəsindən yuxarı pəncərə panelinə (menyu) keçir. Digər səbəblərə görə Fedora + KDE-yə keçdim və problemin davam etdiyini anladım. Həll yolu axtararkən bu əla məqaləni tapdım. Skype-ı öz əllərinizlə düzəltməkÇox sağ olun, yoldaş. brnovk, problemi ətraflı təsvir edən və həllini paylaşan. Bununla belə, məqalədə təsvir olunan həll yalnız bir proqramla, Skype ilə işləmişdir. Visual Studio Kodunu anlamaq da mənim üçün çox vacib idi, çünki atlama menyusu ilə mesajlaşma zəhlətökən olsa da, inkişaf edirsinizsə, o qədər də pis deyil. Üstəlik, bir həmkarım tətbiq menyusunu tamamilə yox edən bir həll təklif etdi və mən həqiqətən VS Kodunda menyunu itirmək istəmədim.

Nə baş verdiyini anlamağa çalışdım.

Beləliklə, nə baş verdiyini anlamaq üçün vaxt ayırmağa qərar verdim. Mən tutduğum yolu qısaca təsvir edəcəyəm; bəlkə bu sahədə daha çox məlumatlı birisi qarşılaşdığım çətinlikləri aydınlaşdırmağa kömək edə bilər.

Mən Visual Studio Kodunu açdım və tətbiqin cavabını izləyərək müxtəlif Alt+<%something%> kombinasiyalarına basmağa başladım. Demək olar ki, hər bir halda, Alt+Shift istisna olmaqla, bütün kombinasiyalar diqqəti itirmədən işləyirdi. Sanki Alt düyməsini basdıqdan sonra Shift düyməsini nəsə yeyirdi və proqram Alt düyməsini basdığımı düşündü, sonra heç nəyə basmadı, Altı buraxdı və o, məmnuniyyətlə diqqətimi öz menyusuna köçürdü, bu ona tamamilə məntiqli görünürdü.

Klaviatura düzümünün dəyişdirilməsi parametrlərini (bilirsiniz ki, qeyd qutuları və düymələr üçün hər cür parametrləri olan uzun siyahı) açdım və heç bir əlavə basmadan Alt düyməsinə keçidi təyin etdim.

alt+shift düymələri ilə keçid probleminin həlli Linux, Elektron tətbiqlərində

Bundan sonra Alt+Tab pəncərələri dəyişdirmək üçün işləməyi dayandırdı. Yalnız Tab işlədi, yəni kimsə mənim Alt düyməsini yenidən "yeyirdi". Artıq bu "kimsə"nin kim olduğu sualı yox idi, amma bununla nə edəcəyimi bilmirdim.

Ancaq problemi bir şəkildə həll etmək lazım olduğu üçün ağlıma bir həll gəldi:

  1. Parametrlərdə klaviatura düzümünü dəyişdirmək üçün isti düyməni söndürün (Başqa layout bölməsindəki bütün onay qutularını işarələyin);
  2. Planımı dəyişdirəcək öz isti düyməni yaradın

Həll təsviri

Əvvəlcə düymələrə əmrlər təyin etməyə imkan verən Xbindkeys proqramını quraşdıraq. Təəssüf ki, daxili alətlər onun cəlbedici interfeysindən istifadə edərək Alt+Shift kimi kombinasiya üçün isti düymə yaratmağa imkan vermədi. Siz Alt+S, Alt+1, Alt+shift+Y və sair üçün birini yarada bilərsiniz, lakin bu bizim məqsədlərimizə uyğun deyil.

sudo dnf install xbindkeysrc

Haqqında ətraflı məlumat əldə edə bilərsiniz ArchWiki
Sonra proqram üçün nümunə parametrlər faylı yaradaq. Bu, kifayət qədər qısadır, sadəcə bir neçə əmrlə, ondan necə istifadə edəcəyinizi anlamaq üçün lazım olanlar:

xbindkeys -d > ~/.xbindkeysrc

Fayldakı nümunədən də göründüyü kimi, istifadə etmək istədiyimiz qısa düyməni və yerinə yetirilməli olan əmri göstərməliyik. Sadə görünür.


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

Siz isti düymə kimi insan tərəfindən oxuna bilən orfoqrafiya və ya açar kodlardan istifadə edə bilərsiniz. Açar kodlar mənim üçün işləyən yeganə şey idi, lakin bir az sınaqdan keçirin.

Kodları əldə etmək üçün əmrdən istifadə etməlisiniz:

xbindkeys -k

Kiçik bir "X" pəncərəsi açılacaq. Siz yalnız bu pəncərə fokuslandıqda düymələri basmalısınız! Yalnız bundan sonra terminalda belə bir şey görəcəksiniz:


[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

Mənim vəziyyətimdə Alt+Shift düymələri kombinasiyası belə görünür:

m:0x8 + c:50

İndi bunu elə etməliyəm ki, bu kombinasiyaya basmaqla əslində klaviatura düzümü dəyişsin. Düzəni təyin etmək üçün yalnız bir iş əmri tapdım:


setxkbmap ru
setxkbmap us

Nümunədən göründüyü kimi, o, yalnız bu və ya digər layoutu aktivləşdirə bilər, ona görə də ağlıma skript yazmaqdan başqa heç nə gəlmədi.


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

İndi, əgər .xbindkeysrc və layout.sh faylları eyni kataloqda yerləşirsə, .xbindkeysrc faylının son görünüşü belə görünür:


# 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

Bundan sonra dəyişiklikləri tətbiq edirik:


xbindkeys -p

Və yoxlaya bilərsiniz. Defolt parametrlərdə hər hansı layout keçid seçimlərini söndürməyi unutmayın.

Ümumi

Həmkarlar, ümid edirəm ki, bu məqalə kiməsə narahatedici problemdən tez bir zamanda qurtulmağa kömək edəcək. Şəxsən mən bütün həftə sonumu problemi anlamağa və birtəhər həll etməyə çalışaraq keçirdim ki, iş saatlarında yenidən bu barədə narahat olmayacam. Bu yazını kiminsə vaxtına və məyusluğuna qənaət etmək üçün yazdım. Bir çoxunuz klaviatura düzümlərini dəyişmək üçün alternativ yoldan istifadə edirsiniz və problemi başa düşmürsünüz. Şəxsən mən Alt+Shift-ə üstünlük verirəm və onun belə işləməsini istəyirəm. Fikrimi bölüşsəniz və bu problemlə qarşılaşırsınızsa, bu məqalə sizə kömək etməlidir.

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster