Olá colegas!
Quero compartilhar para compartilhar minha solução para o problema, que é indicado no cabeçalho. O artigo foi inspirado por um colega
brnovk , que não era muito preguiçoso e sugeriu uma solução parcial (para mim) para o problema. Fiz minha “muleta” que me ajudou. Eu compartilho com você
Descrição do problema
Usei o Ubuntu 18.04 para trabalhar e notei recentemente que, ao alternar layouts por alt + shift em aplicativos como o Visual Studio Code, Skype, Slack e outros criados com o Electron, surge o seguinte problema: o foco no campo de entrada passa para painel superior da janela (menu). Por outras razões, mudei para o Fedora + KDE e percebi que o problema não desapareceu. Em busca de uma solução, encontrei um artigo maravilhoso
Faça você mesmo, Skype . Muito obrigado ao camarada
brnovk por explicar em detalhes o problema e compartilhar seu caminho para resolvê-lo. Mas o método especificado no artigo abordou a questão com apenas um aplicativo, o Skype. Ainda era crítico para mim lidar com o Visual Studio Code, porque escrever mensagens com um menu de salto é irritante, mas não tanto se você estiver desenvolvendo. Além disso, um colega propôs uma solução na qual o menu do aplicativo desapareceu completamente, mas eu realmente não gostaria de perder o menu no VS Code.
Eu tentei entender qual era o problema
Então, decidi reservar um tempo e descobrir o que estava acontecendo. Agora vou descrever brevemente o caminho que segui, talvez alguém com mais conhecimento sobre esse assunto ajude a esclarecer as dificuldades que encontrei.
Abri o Visual Studio Code e comecei a clicar em diferentes combinações Alt + <% something%>, observando a reação do aplicativo. Em quase todos os casos, todas as combinações, exceto Alt + Shift, funcionavam sem perda de foco. Parecia que alguém comeu a Shift pressionada, que se seguiu após segurar e segurar Alt, e o aplicativo pensa que eu pressionei Alt, depois não pressionei nada, soltei Alt e ele alegremente lançou meu foco em seu menu, o que lhe parecia lógico.
Abri as configurações de alternância do layout do teclado (bem, você conhece esta longa lista com caixas de seleção e todos os tipos de configurações de teclas) e defini a alternância do layout do teclado pelo botão Alt, sem pressionar mais.

Depois disso, Alt + Tab parou de funcionar para mudar de janela. Somente Tab funcionou, ou seja, alguém novamente "comeu" meu Alt. Quem é esse "alguém" não tem mais dúvidas, mas não tenho ideia do que pode ser feito com ele.
Mas como o problema tinha que ser resolvido pelo menos de alguma maneira, a solução veio à minha mente:
- Nas configurações, desative a tecla de atalho para alterar o layout do teclado (remova todas as caixas de seleção na seção Alternar para outro layout);
- Crie sua própria tecla de atalho para mudar meu layout
Descrição da solução
Primeiro, instale um programa que permita atribuir comandos às teclas Xbindkeys. Infelizmente, as ferramentas padrão não me permitiram criar uma tecla de atalho para uma combinação do tipo Alt + Shift por meio de uma interface bonita. Pode ser feito para Alt + S, Alt + 1, Alt + shift + Y, etc. etc., mas isso não é adequado para a nossa tarefa.
sudo dnf install xbindkeysrc
Há mais sobre isso no
ArchWikiEm seguida, crie um arquivo de configurações de amostra para o programa. O exemplo é bastante curto, com apenas alguns comandos, exatamente o que você precisa para descobrir como trabalhar com ele:
xbindkeys -d > ~/.xbindkeysrc
Como você pode ver no exemplo que está no arquivo, precisamos especificar a tecla de atalho que queremos usar e o comando que deve ser executado. Parece simples.
Como tecla de atalho, você pode usar a ortografia legível por humanos ou os códigos de teclas. Funcionou para mim apenas com códigos, mas ninguém proíbe que você experimente um pouco.
Para obter os códigos, você precisa usar o comando:
xbindkeys -k
Uma pequena janela "X" será aberta. Você só precisa pressionar as teclas com o foco nesta janela! Somente neste caso, você verá algo assim 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, o atalho de teclado Alt + Shift se parece com o seguinte:
m:0x8 + c:50
Agora você precisa ter certeza de que, ao clicar nessa combinação, o layout será alterado exatamente. Encontrei apenas um comando de trabalho para especificar o layout:
setxkbmap ru setxkbmap us
Como você pode ver no exemplo, ela só sabe como ativar um ou outro layout, então nada me veio à mente, exceto a escrita de um script.
vim ~/layout.sh
Agora, se os arquivos .xbindkeysrc e layout.sh estiverem no mesmo diretório, a forma final do arquivo .xbindkeysrc ficará assim:
Depois disso, aplique as alterações:
xbindkeys -p
E você pode conferir. Não esqueça de desativar nenhuma opção para alternar layouts nas configurações padrão.
Sumário
Colegas, espero que este artigo possa ajudar alguém a se livrar rapidamente do problema irritante. Pessoalmente, passei o dia inteiro resolvendo e resolvendo o problema de alguma forma, para não me distrair mais com isso durante o horário de trabalho. Escrevi este artigo para economizar tempo e nervos a alguém. Muitos de vocês usam uma maneira alternativa de alternar layouts e não entendem qual é o problema. Eu pessoalmente gosto de mudar Alt + Shift. E eu quero que funcione dessa maneira. Se você compartilha minha opinião e encontrou esse problema, este artigo deve ajudá-lo.