Desde quando instalei o Windows 8 no meu computador, ainda durante o beta, eu notei um comportamento estranho e que me incomodava muito: O layout do meu teclado mudava “sozinho”.
No início eu achava que era a sincronização de configurações que estava fazendo isso, mudando o layout do meu computador do trabalho para o layout de casa e vice-versa. Para a maioria das pessoas isso não seria um problema, pois normalmente teriam todos os teclados com o mesmo layout (ABNT2 para o teclados nacionais). Mas para mim isso é um problema pois tenho 3 computadores:
- Desktop em casa com teclado USB ABNT2
- Laptop no trabalho com teclado Americano (comprado nos EUA) + Teclado ABNT2 wireless da Microsoft
- Surface Pro 2 com Type cover Americana
Para “resolver” isso eu desabilitei no PC Settings o sincronísmo das configurações de teclado e língua
Agora, cada um dos meus computadores tem suas próprias configurações individuais neste aspecto. Meu Surface e deskto em casa não tiveram mais problemas, pois ambos têm apenas 1 teclado, mas meu laptop no trabalho continuou apresentando mudanças de layout do teclado “aleatórias” e eu não conseguia descobrir a causa. Passei a achar que o Windows 8 tinha alguma lógica interna que tentava ser “esperto” e descobrir o layout do teclado, mas estaria se perdendo por ter 2 teclados físicos com layouts diferentes.
Por um tempo, para mitigar o problema, eu removi o teclado com layout americano das configurações no meu laptop e dexei apenas o ABNT2 que é o que uso para trabalhar, mas essa configuração não é boa se eu tiver que ir para alguma reunião ou cliente com o laptop pois nesses casos o teclado estaria errado. Acabei colocando o teclado americano novamente e tendo que conviver com a mudança “automática” do layout.
O ideal seria que o Windows identificasse automaticamente o hardware que estou usando e se adaptasse de acordo, ou seja, se eu digito no teclado se fio ele sabe que é ABNT2, se eu digito no teclado do laptop ele sabe que é padrão americano, e a língua que estou usando continuaria sob meu controle. Mas não é assim que funciona.
Finalmente, depois de MUITO tempo trocando chaves e acentos (o que é particularmente ruim em .NET pois as chaves e ; e aspas são alguns dos caracteres que mudam de lugar nesses 2 layouts) eu descobri o motivo das mudanças de layout “automáticas” e como resolver o problema. Até o Windows 7 a tecla de atalho para mudança de layout era shift + alt. No Windows 8, são 3 teclas de atalho: shift + alt para mudar a lingua, ctrl + shift para mudar o layout de teclado e Windows + barra de espaço para mudar entre as conbinações configuradas de teclado + lingua. Viram o problema? Ctrl + shift é uma tecla MUITO usada em edição de texto, principalmente se você trabalha escrevendo código. Agora está explicado e a solução é bem simples.
Como temos 3 formas de mudar o layout do teclado e língua, posso facilmente desabilitar 2 delas e mantar apenas 1 que faça ambas as alterações. Sendo assim, vou desabilitar shift + alt e ctrl + alt e deixar apenas o Windows + espaço. Para fazer isso, siga os passos abaixo:
- No painel de controle, acesse a tela de configurações de língua e vá em configurações avançadas, conforme no print abaixo.
- Escolha a opção de mudar as teclas de atalho da barra de línguas, clicando no link abaixo.
- Note que no meu computador tem 2 línguas e 2 layouts de teclado, mas apenas a opção de trocar entre eles tem tecla de atalho. Selecione esta opção e clique no botão de mudar sequencia de teclas
Agora bastou mudar para a primeira opção, dar Ok em todas as janelas e pronto, problema resolvido.
De agora em diante, se eu quiser mudar o teclado por estar usando o nativo do laptop ou quiser mudar a língua para ficar com correção ortográfica correta ao escrever em inglês ou português basta usar a tecla Windows + espaço até marcar a combinação desejada de teclado e língua.
Realmente, escolher Ctrl + shift como atalho padrão para mudar o layout de teclado foi uma idéia muito, muito ruim. Fazer essa configuração vir ativa por padrão foi pior ainda. Espero que essa dica ajude mais gente que esteja com o mesmo problema que eu estava.