Resolución do problema de cambiar con alt+shift Linux, en aplicacións electrónicas

Ola compañeiros!

Gustaríame compartir a miña solución ao problema mencionado no título. Un compañeiro inspiroume a escribir este artigo. Brnovk, que se tomou a molestia de ofrecer unha solución parcial (para min) ao problema. Creei a miña propia "trampa" que me axudou. Compártoa con vós.

Descrición do problema

Использовал Ubuntu 18.04 для работы и в последнее время заметил, что при переключении раскладки по alt+shift в таких приложениях, как Visual Studio Code, Skype, Slack и прочих, которые созданы с помощью Electron возникает следующая проблема: фокус с поля ввода, переходит к верхней панели окна (меню). По иным причинам переехал в Fedora + KDE и понял, что проблема никуда не делась. В поисках решения нашёл замечательную статью Arranxando Skype coas túas propias mansMoitas grazas, compañeiro. Brnovk, quen describiu o problema en detalle e compartiu a súa solución. Non obstante, a solución descrita no artigo só funcionou cunha aplicación, Skype. Tamén foi crucial para min descubrir o código de Visual Studio, porque aínda que enviar mensaxes cun menú saltador é molesto, non é tan malo se estás desenvolvendo. Ademais, un compañeiro suxeriu unha solución que fai que o menú da aplicación desapareza por completo, e eu realmente non quería perder o menú en VS Code.

Intentei comprender o que estaba a suceder.

Entón, decidín dedicar tempo a descubrir que estaba a suceder. Describirei brevemente o camiño que tomei; quizais alguén con máis coñecementos neste eido poida axudar a aclarar as dificultades coas que me atopei.

Abrín Visual Studio Code e comecei a premer varias combinacións Alt+<%something%>, observando a resposta da aplicación. En case todos os casos, todas as combinacións agás Alt+Shift funcionaron sen perder o foco. Sentín como se algo estivese a comer a tecla Maiús que premei despois de manter premida a tecla Alt, e a aplicación pensou que premera Alt, logo non premei nada, soltei a tecla Alt e moveu felizmente o meu foco ao seu menú, o que lle parecía perfectamente lóxico.

Abrín a configuración de cambio de disposición do teclado (xa sabes, esa longa lista con caixas de verificación e todo tipo de configuracións para as teclas) e configurei o cambio de disposición para a tecla Alt, sen premer máis.

Resolución do problema de cambiar con alt+shift Linux, en aplicacións electrónicas

Despois diso, Alt+Tab deixou de funcionar para cambiar de xanela. Só funcionaba Tab, o que significaba que alguén estaba a "comer" a miña tecla Alt de novo. Xa non había dúbida de quen era este "alguén", pero non tiña nin idea de que facer con el.

Pero como o problema necesitaba ser resolto dalgún xeito, entón ocorreuse unha solución:

  1. Na configuración, desactive a tecla de atallo para cambiar a disposición do teclado (desmarque todas as caixas de verificación na sección Cambiar a outra disposición);
  2. Crear a miña propia tecla de atallo que cambiaría o meu deseño

Descrición da solución

Primeiro, instalemos Xbindkeys, un programa que che permite asignar comandos ás teclas. Desafortunadamente, as ferramentas integradas non me permitiron crear unha tecla de atallo para unha combinación como Alt+Shift usando a súa atractiva interface. Podes crear unha para Alt+S, Alt+1, Alt+Shift+Y, etc., pero iso non é axeitado para os nosos propósitos.

sudo dnf install xbindkeysrc

Máis detalles ao respecto pódense atopar en ArchWiki
A continuación, imos crear un ficheiro de configuración de exemplo para o programa. É bastante curto, con só uns poucos comandos, xusto o que necesitas para entender como usalo:

xbindkeys -d > ~/.xbindkeysrc

Como podes ver no exemplo do ficheiro, precisamos especificar a tecla de atallo que queremos usar e o comando que se debe executar. Parece sinxelo.


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

Podes usar códigos ortográficos lexibles por humanos ou códigos de teclas como teclas de atallo. Os códigos de teclas foron o único que funcionou para min, pero non dubides en experimentar un pouco.

Para obter os códigos necesitas usar o comando:

xbindkeys -k

Abrirase unha pequena xanela con "X". Só debes premer as teclas cando esta xanela teña o foco! Só entón verás algo coma isto no terminal:


[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

No meu caso, a combinación de teclas Alt+Shift ten este aspecto:

m:0x8 + c:50

Agora preciso facer que ao premer esta combinación de teclas cambie realmente a disposición do teclado. Só atopei un comando que funcione para especificar a disposición do teclado:


setxkbmap ru
setxkbmap us

Como podes ver no exemplo, só pode activar un ou outro deseño, polo que non se me ocorreu nada máis que escribir un guión.


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

Agora, se os ficheiros .xbindkeysrc e layout.sh están situados no mesmo directorio, o aspecto final do ficheiro .xbindkeysrc será o seguinte:


# 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

Despois disto aplicamos os cambios:


xbindkeys -p

E podes comprobalo. Non esquezas desactivar as opcións de cambio de deseño na configuración predeterminada.

Total

Compañeiros, espero que este artigo axude a alguén a desfacerse rapidamente dun problema irritante. Persoalmente, pasei toda a fin de semana intentando descubrir e resolver o problema dalgún xeito para non ter que preocuparme por el de novo durante o horario laboral. Escribín este artigo para aforrarlle tempo e frustración a alguén. Moitos de vostedes usan unha forma alternativa de cambiar a distribución do teclado e non entenden o problema. Persoalmente, prefiro Alt+Maiús e quero que funcione así. Se comparten a miña opinión e están a experimentar este problema, este artigo debería axudarlles.

Fonte: www.habr.com

Compre hospedaxe fiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra aloxamento web fiable con protección DDoS, servidores VPS VDS | ProHoster