Решавање проблема са пребацивањем помоћу алт+схифт у Линук-у, у Елецтрон апликацијама

Здраво колеге!

Желим да поделим своје решење за проблем који је назначен у наслову. На писање овог чланка инспирисао ме је колега брновк, који није био лењ и понудио делимично (за мене) решење проблема. Направио сам своју „штаку“ која ми је помогла. делим са вама.

Опис проблема

Користио сам Убунту 18.04 за рад и недавно сам приметио да када мењам распореде користећи алт+схифт у апликацијама као што су Висуал Студио Цоде, Скипе, Слацк и друге које су креиране помоћу Елецтрон-а, долази до следећег проблема: фокус са поља за унос иде на врх панел прозора (мени). Из других разлога, прешао сам на Федора + КДЕ и схватио да проблем није нестао. Док сам тражио решење, нашао сам диван чланак Како сами поправити Скипе. Много хвала друже брновк, који је детаљно говорио о проблему и поделио свој начин његовог решавања. Али метода наведена у чланку решила је проблем само са једном апликацијом, а то је Скипе. За мене је такође било критично да разумем Висуал Студио Цоде, јер писање порука помоћу менија за прескакање, иако досадно, није толико ако се бавите развојем. Поред тога, колега је предложио решење у којем мени апликације потпуно нестаје, а ја не бих баш желео да изгубим мени у ВС Цоде-у.

Покушао сам да схватим шта није у реду

Зато сам одлучио да одвојим време да схватим шта се дешава. Сада ћу укратко описати пут којим сам кренуо, можда ће неко боље упућен у ову материју помоћи да објасни потешкоће на које сам наишао.

Отворио сам Висуал Студио Цоде и почео да ударам различите комбинације Алт+<%сометхинг%> да видим како је апликација реаговала. У скоро свим случајевима, све комбинације осим Алт+Схифт су радиле без губитка фокуса. Деловало је као да неко једе притиснут Схифт, који је уследио након држања Алт, а апликација је мислила да сам притиснуо Алт, па ништа нисам притиснуо, пустио Алт и радосно је бацио мој фокус у свој мени, што је изгледало сасвим логично да то.

Отворио сам подешавања за пребацивање распореда тастатуре (знате, ову дугачку листу са потврдним оквирима и свим врстама подешавања за тастере) и подесио је да мења распоред помоћу дугмета Алт, без икаквих додатних кликова.

Решавање проблема са пребацивањем помоћу алт+схифт у Линук-у, у Елецтрон апликацијама

Након тога, Алт+Таб за пребацивање прозора је престао да ради. Само Таб је радио, односно неко је поново „појео“ мој Алт. Више није било питања ко је тај „неко“, али нисам имао појма шта би се могло урадити са њим.

Али пошто је проблем морао некако да се реши, онда ми је на памет пало решење:

  1. У подешавањима онемогућите интервентни тастер за пребацивање распореда тастатуре (поништите сва поља за потврду у одељку Пребаци на други распоред);
  2. Креирајте сопствени интервентни тастер који би променио изглед за мене

Опис решења

Прво, хајде да инсталирамо програм који вам омогућава да доделите команде тастерима Ксбиндкеис. Нажалост, стандардни алати ми нису дозволили да креирам интервентни тастер за комбинацију као што је Алт+Схифт кроз прелеп интерфејс. Може се урадити за Алт+С, Алт+1, Алт+схифт+И, итд. итд., али ово није прикладно за наш задатак.

sudo dnf install xbindkeysrc

Више детаља о томе доступно је на АрцхВики
Затим ћемо креирати узорак датотеке поставки за програм. Узорак је прилично кратак, са неколико команди, управо оно што вам је потребно да схватите како да радите са њим:

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

Отвориће се мали „Кс“ прозор. Потребно је само да притиснете тастере када је фокус на овом прозору! Само у овом случају ћете видети нешто овако у терминалу:


[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: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

Сада, ако се датотеке .кбиндкеисрц и лаиоут.сх налазе у истом директоријуму, коначни приказ датотеке .кбиндкеисрц изгледа овако:


# 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

И можете проверити. Не заборавите да онемогућите све опције за пребацивање распореда у стандардним подешавањима.

Укупан

Колеге, надам се да ће овај чланак некоме помоћи да се брзо реши досадног проблема. Лично сам цео свој слободан дан провео покушавајући да некако схватим и решим проблем, како ми више не би сметао током радног времена. Написао сам овај чланак да некоме уштедим време и живце. Многи од вас користе алтернативни метод промене распореда и не разумеју у чему је проблем. Ја лично волим да прелазим са Алт+Схифт. И тако желим да функционише. Ако делите моје мишљење и ако се суочите са овим проблемом, овај чланак би требало да вам помогне.

Извор: ввв.хабр.цом

Додај коментар