Alt+shift-ի միջոցով անջատման խնդրի լուծում Linux-ում, Electron հավելվածներում

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

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

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

Ես օգտագործել եմ 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-ից, աշխատել են առանց կենտրոնացումը կորցնելու: Թվում էր, թե ինչ-որ մեկը ուտում էր սեղմված Shift-ը, որը հետևեց Alt-ը սեղմելուց հետո, և հավելվածը մտածեց, որ ես սեղմեցի Alt-ը, հետո ոչինչ չսեղմեցի, բաց թողեց Alt-ը և այն ուրախությամբ իմ ուշադրությունը գցեց իր մենյուի մեջ, ինչը միանգամայն տրամաբանական էր թվում: այն.

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

Alt+shift-ի միջոցով անջատման խնդրի լուծում Linux-ում, Electron հավելվածներում

Դրանից հետո 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

Добавить комментарий