Alt+Shift-ի միջոցով անցման խնդրի լուծում Linux, էլեկտրոնային կիրառություններում

Բարև գործընկերներ:

Ես ուզում եմ կիսվել վերնագրում նշված խնդրի իմ լուծմամբ։ Հոդվածը գրելու համար ինձ ոգեշնչել է իմ գործընկերը։ Բռնովկ, ով ծույլ չէր և առաջարկեց խնդրի մասնակի (ինձ համար) լուծում։ Ես պատրաստեցի իմ սեփական «հենակը», որն օգնեց ինձ։ Կիսվում եմ դրանով ձեզ հետ։

Խնդրի նկարագրությունը

Օգտագործված Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью Skype-ի վերանորոգումը ձեր սեփական ձեռքերովՇատ շնորհակալություն ընկերոջս։ Բռնովկ, ով մանրամասն նկարագրեց խնդիրը և կիսվեց իր լուծմամբ։ Սակայն հոդվածում նշված մեթոդը փակեց խնդիրը միայն մեկ ծրագրով, այն է՝ Skype-ով։ Ինձ համար կարևոր էր նաև Visual Studio Code-ը հասկանալը, քանի որ ցատկող մենյուով հաղորդագրություններ գրելը նյարդայնացնող է, բայց ոչ այնքան, եթե զբաղվում եք մշակմամբ։ Բացի այդ, գործընկերս առաջարկեց լուծում, որի դեպքում ծրագրի մենյուն ամբողջությամբ անհետանում է, և ես իրականում չէի ցանկանա կորցնել մենյուն VS Code-ում։

Ես փորձեցի հասկանալ, թե ինչ է կատարվում

Այսպիսով, որոշեցի ժամանակ հատկացնել՝ պարզելու համար, թե ինչ է կատարվում։ Հակիրճ կնկարագրեմ անցած ուղին, գուցե այս հարցում ավելի գիտակ մեկը կարողանա բացատրել, թե ինչ դժվարությունների եմ հանդիպել։

Ես բացեցի Visual Studio Code-ը և սկսեցի սեղմել Alt+<%something%> տարբեր համակցություններ՝ հետևելով ծրագրի արձագանքին։ Գրեթե բոլոր դեպքերում, բացի Alt+Shift-ից, բոլոր համակցությունները աշխատեցին առանց կենտրոնացումը կորցնելու։ Թվում էր, թե ինչ-որ մեկը ուտում էր Alt-ը պահելուն հաջորդող Shift սեղմածը, և ծրագիրը կարծեց, որ ես սեղմել եմ Alt, ապա ոչինչ չսեղմեց, բաց թողեց Alt-ը, և այն ուրախությամբ իմ կենտրոնացումը տեղափոխեց իր մենյու, ինչը նրան բավականին տրամաբանական թվաց։

Ես բացեցի ստեղնաշարի դասավորության փոփոխման կարգավորումները (գիտեք, այդ երկար ցանկը՝ նշատուփերով և ստեղների համար նախատեսված բոլոր տեսակի կարգավորումներով) և դասավորության փոփոխման համար դրեցի Alt կոճակը՝ առանց որևէ լրացուցիչ սեղմման։

Alt+Shift-ի միջոցով անցման խնդրի լուծում Linux, էլեկտրոնային կիրառություններում

Դրանից հետո Alt+Tab-ը դադարեց աշխատել պատուհանները փոխելու համար։ Միայն 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: Եվ ես ուզում եմ, որ այն աշխատի հենց այդպես: Եթե դուք կիսում եք իմ կարծիքը և բախվել եք այս խնդրին, այս հոդվածը պետք է օգնի ձեզ:

Source: www.habr.com

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster