Como remover idiomas raramente usados ​​das teclas de atalho de troca de idioma?

Como remover idiomas raramente usados ​​das teclas de atalho de troca de idioma?

Eu digito nos três idiomas a seguir:

Idioma A - 55% das vezes

Idioma B – 40% das vezes

Idioma C - 5% das vezes

A solução usual seria ter todos os três idiomas instalados e usar Ctrl/Alt-Shift, no entanto, é muito chato ter que mudar para o idioma C cada vez que alterno entre A e B.

Existe algum tipo de solução que me permita impedir que o Windows mude para o idioma C quando pressiono Ctrl/Alt-Shift? Eu poderia então adicionar uma tecla de atalho separada para mudar para o idioma C.

Estou usando o Windows 7 SP1.

Obrigado.

Responder1

Você pode criarAutoitscript para "pular" o idioma "C" ao mudar o idioma do teclado.

Depois de instalarAutoiteeditor. Clique com o botão direito na área de trabalho-> Novo-> Autoit Script. Clique com o botão direito neste arquivo criado->Editar. Agora você deve ver a janela do ScITE e após a linha "Adicione seu código abaixo aqui" adicione este código:

#include <WinAPISys.au3>
ClipPut(_WinAPI_GetKeyboardLayout(ControlGetHandle("[ACTIVE]","","")))

Pressione SHIFT + ALT (ou quais teclas de atalho registradas para mudar o idioma do teclado) até que seu idioma atual seja "C" (se o nome do idioma do teclado não aparecer na barra de tarefas, pressione Win + R ->> CTFMON.EXE ->> Enter) então em na janela do ScITE pressione Ferramentas->Ir. Agora na sua área de transferência o código "C" do idioma. Cole (CTRL+V) e salve em algum lugar.

Remova o código anterior e cole isto:

#include <WindowsConstants.au3>
#include <WinAPISys.au3>
#include <String.au3>
#NoTrayIcon
$skiplang="0x04090409" ;pular este idioma ao mudar de idioma
$list=_WinAPI_GetKeyboardLayoutList ( )

$fakeforwardlang=""
Se IsArray($lista) Então
    se $list[0]<3 então Sair; você batata
    Para $i = 1 Para $lista[0]
        if $list[$i]=$skiplang Then;encontre o próximo idioma
            se $i=$lista[0] então
                $fakeforwardlang=$lista[1]
                Sair do Loop
            Fim se
            $fakeforwardlang=$lista[$i+1]
            Sair do Loop
        Fim se
    Próximo
Outro
    Saída
Fim se
$fakeforwardlang=StringMid($fakeforwardlang,1,6)
enquanto 1
$handle=ControlGetHandle("[ATIVO]","","")
se getcurkb($handle)=$skiplang então _WinAPI_SetKeyboardLayout($handle, $fakeforwardlang)
Sono(100)
vamos
Função getcurkb($handle)
    Retornar _WinAPI_GetKeyboardLayout($handle)
EndFunc

Para a próxima etapa, é necessário substituir o código "C" do idioma salvo por0x04090409neste script (5 linhas).

Então, na janela do SciTE, pressione Ferramentas->Construir. Agora você obterá o executável no mesmo diretório onde estava o script Autoit. Execute este executável (.exe).

É necessário usar o gerenciador de tarefas para encerrar o processo se quiser interromper o script.

Funciona no Windows 7 com 3 idiomas de teclado e UAC desativado.

Atualizar:

Eu estraguei tudo. _WinAPI_SetKeyboardLayout Forward funciona apenas algumas vezes. Envio padrão com muitos bugs quando a tecla {down} é pressionada. Solução atual baseada em função externa. Mas um problema com esta função é que você precisa pressionar shift e alt para mudar para o próximo idioma do teclado. Deve verificar novamente o código mais tarde.

Atualização2:

Voltar para _WinAPI_SetKeyboardLayout, mas usando encaminhamento falso. Não consigo encontrar nenhum problema agora.

Responder2

Tenho a mesma situação e defino teclas de atalho diferentes para cada idioma, por exemplo:

  • Ctrl++ Shiftpara 1o idioma A,
  • Ctrl++ para Shifto 2idioma B,
  • Ctrl++ Shiftpara 3linguagem C

Isso permite mudar para o idioma desejado com apenas um toque de tecla. Isso pode ser definido em Painel de controle\Todos os itens do painel de controle\Idioma\Configurações avançadas\Alterar teclas de atalho da barra de idioma (é o caminho do Windows 10, no Windows 7 pode ser diferente, mas em algum lugar semelhante). A caixa de diálogo é semelhante a esta:Alterar sequência de teclas

informação relacionada