Linux-ում alt+shift արանքում переключելու խնդրի լուծումը, Electron-ի հավելվածներում

Բարի առավոտ, գործընկերներ!

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

Առիւծի խնդիրը

Գործարկված եմ Ubuntu 18.04-ի վրա և վերջերս նկատել եմ, որ Alt+Shift կազմի փոխանակման ժամանակ ծրագրերում, ինչպիսիք են Visual Studio Code, Skype, Slack և այլ ծրագրեր, որոնք ստեղծված են Electron-ի միջոցով, առաջանում է հետևյալ խնդիր. ֆոկուսը մուտքի դաշտից անցնում է պատուհանի վերին վահանակի (մենյու): Այլ պատճառներով տեղափոխվել եմ Fedora + KDE և հասկացել եմ, որ խնդիրը չէր исчезում: Հետեւանքներից գտել եմ հրաշալի հոդված Փորձենք Skype- ը ինքներս ավարտել. Շնորհակալություն ընկերոջը brnovk, ում մանրամասն պատմել է խնդրի և կիսվել իր լուծումով: Սակայն հոդվածում նշված լուծումը հարցը փակեց մի ծրագրի համար, այլ կոնկրետ Skype-ի: Ինձ համար նաև կարևոր էր разобраться Visual Studio Code-ի հետ, քանի որ հաղորդագրություններ գրել «քայլող մենյուի» հետ, չնայած տհաճ, բայց այնքան էլ լուրջ չէ, եթե զբաղվում ես մշակմամբ: Բացի այդ, գործընկերը առաջարկեց լուծում, երբ ծրագիրը ամբողջությամբ կորցնում է մենյու, բայց ես չէի ուզում կորցնել մենյուն VS Code-ում:

Փորձել եմ հասկանալ, թե ինչն է պատճառը

Այդ պատճառով ես որոշեցի ժամանակ հատկացնել և разобраться, թե ինչն է պատճառը: Հիմա կարճ ներկայացնեմ, թե ինչ ճանապարհով եմ գնացել, կարող է ինչ-որ մեկը, ով ավելի սուրհանդակ է այս հարցում, կօգնի պարզաբանել այն դժվարությունները, որոնց ես հանդիպել եմ:

Բացել եմ Visual Studio Code-ը և սկսել եմ սեղմել տարբեր Alt+<%ինչ որ %>, դիտելով ծրագրի արձագանքը: Անմիջապես գրեթե բոլոր դեպքում բոլոր կոմբինացիաները, բացի Alt+Shift-ից, աշխատում էին առանց ֆոկուսի կորուստի: Ուժեղ տպավորություն էր, որ ինչ-то չի խորտակում Shift-ը, որը յետագայում հետևում էր Alt-ի համար, և ծրագիրը կարծում է, որ ես սեղմել եմ Alt, հետո ոչինչ չեմ սեղմել, թողնել եմ Alt-ը և այն ուրախությամբ թողնում է իմ ֆոկուսը իր մենյուում, ինչը նրան թվում է տրամաբանական:

Բացել եմ ստեղնաշարի կազմի переключման կարգավորումները (իմիտացիոն երկար ցուցակը բոլոր այն մենյուների և սեղմակների հետ) և կարգավորել եմ կազմի переключումը Alt-ով առանց լրացուցիչ սեղմումների:

Linux-ում alt+shift արանքում переключելու խնդրի լուծումը, Electron-ի հավելվածներում

Այդ դեպքում կանգնած է Alt+Tab-ը պատուհանների переключման համար: Ընդամենը Tab-ի վրա էր աշխատում, այսինքն ինչ-որ մեկ ուրիշը ևս մի անգամ «խորտակեց» իմ Alt-ը: Ով է этот «որ-либо» այլ հարցեր արդեն չունի, իսկ ինչ կարելի է անել նրա հետ, ես գաղափար չունեմ:

Բայց քանի որ խնդիրը պետք է լուծել ինչ-որ կերպ, այդ դեպքում մտքիս եկավ իր լուծումը:

  1. Կարգավորումներում չեղյալ հայտարարել ստեղնահատկությունը ստեղների переключման համար (հեռացնել բոլոր տուֆիկները Switch to another layout բաժնում);
  2. Ստեղծել իմ ստեղնահատուկը, որը ինձ պատրաստել է կազմի переключում

Լուծման նկարագրություն

Որպես առաջին քայլ, եկեք տեղադրենք ծրագիր, որը թույլ է տալիս հրամաններ նշանակել Xbindkeys ստեղնաշարի կոճակներին: Ցավոք, ներկառուցված միջոցները չեն թույլատրել ինձ ստեղծել գեղեցիկ ինտերֆեյսով կարճ ճանապարհային հրաման, օրինակ, Alt+Shift: Կարող եք ստեղծել ստեղնաշարային կոդեր, ինչպիսիք են Alt+S, Alt+1, Alt+Shift+Y և այլն, սակայն մեր առաջադրանքի համար դա չի համապատասխանում:

sudo dnf install xbindkeysrc

Դրան ավելի մանրամասն ծանոթացեք այստեղ՝ ArchWiki
Այժմ ստեղծենք Xbindkeys-ի կարգավորումներով ֆայլի օրինակ: Օրինակն բավականին կարճ է, մի քանի հրամաններով, որն այսքանով բավական է հասկանալու համար, թե ինչպես աշխատանքով վարվել:

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

Դարձնելով մեր կարճ ճանապարհը, կարող եք օգտագործել մարդասեր գրությունը կամ օգտագործել ստեղնաշարի կոդերը: Ես տեսել եմ, որ միայն ստեղնաշարի կոդերով աշխատեց, բայց ոչ ոք չի արգելում ձեզ քիչ է eksperiment անել:

Կոդեր ստանալու համար պետք է օգտագործել հրամանը:

xbindkeys -k

Փոքր «Իքս» պատուհան կբացվի: Պետք է սեղմել ստեղները միայն այս պատուհանում առկա ժամանակ! Այլապես, դուք ոչինչ չեք տեսնի տերմինալում:


[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 կոճակների կոմբինացիան looks like this:

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

Ընտանիք: habr.com

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