Posso mudar os métodos de entrada enquanto o Caps Lock está sendo pressionado no Windows?

4

No meu computador com Linux, meu teclado muda do inglês para o sérvio quando eu mantenho a tecla Caps Lock. Por exemplo, para escrever è tudo que tenho que fazer é segurar Caps Lock, e pressionar a tecla onde è está no teclado sérvio (neste caso, a chave é: no teclado inglês). Quando eu libero o Caps Lock, o teclado "volta" para o inglês, de modo que, se eu pressionar; Eu recebo ; como desejado. Super útil.

Por favor, note que eu sei como mudar o layout do teclado. Eu quero usar o Caps Lock como uma tecla modificadora para alterar o idioma apenas enquanto estiver pressionado!

Existe uma maneira de replicar esse comportamento no Windows 7 ou no Windows 8?

Observação: Às vezes, isso é conhecido como comutação de caracteres de "terceiro nível" (pressionar shift seria segundo nível, por exemplo). Eu também não sou ligado ao Caps Lock; outras chaves farão.

    
por MarkovCh1 08.09.2012 / 03:45

4 respostas

1

O script AutoHotKey mais confiável do meu teste foi o seguinte:

*CapsLock::
SetKeyDelay -1   ; If the destination key is a mouse button, SetMouseDelay is used instead.
;send {Blind}{CapsLock DownTemp}
PostMessage, 0x50, 0x02, 1,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST. 0x02 is forward
return

*CapsLock up::
SetKeyDelay -1  ; See note below for why press-duration is not specified with either of these SetKeyDelays.
;send {Blind}{CapsLock Up}
PostMessage, 0x50, 0x04, 1,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST. 0x04 is backward
return

Nota: você precisa ter 2 idiomas de entrada já configurados no painel de controle da região / idioma do Windows.

Versão executável autônoma aqui .

Para parar o script, clique com o botão direito do mouse na barra de tarefas e clique em pausar / sair.

Se você quiser manter a funcionalidade de caps lock (ou seja, pressionar para ativar o caps lock E alterar o idioma, liberá-lo irá reverter para o idioma anterior, mas deixe o caps lock ativado). Basta remover os dois caracteres ; no início das duas linhas send .

Veja quão rápido eu digito isto:;; è; è; è; è; è; è; è

Muito rápido, né?

    
por 10.10.2012 / 05:53
1

Você provavelmente pode fazer isso com bastante facilidade usando AutoHotKey . Você precisará ler a si mesmo um pouco, se não tiver usado antes, mas pode ser usado para mapear qualquer coisa para qualquer tecla.

Veja este para remapeamento de chaves (convenientemente, há uma entrada específica para o Caps Lock).

    
por 08.10.2012 / 15:50
1

No windows 7, você pode definir várias sobreposições de teclado:

Control Panel-> "Clock, Language, and region" -> "Change Keyboards or other input methods" -> "Keyboards and Languages" tab -> "Change Keyboards"

A partir daqui, você pode adicionar o teclado sérvio em serviços instalados.

Por padrão, Alt+Shift é a combinação padrão para alternar entre teclados, mas você pode personalizar isso na guia Advanced Key Settings .

Até onde eu sei, não há uma opção de modificador de terceiro nível, mas esse método permitiria que você trocasse conjuntos de chaves, digite os caracteres necessários e, em seguida, retorne novamente.

    
por 08.10.2012 / 18:33
1

As duas respostas anteriores, por @Jared e @pleinolijf, podem ser usadas juntas para construir a resposta final.

Usando a resposta de Jared, você poderia atribuir a cada tecla de atalho um atalho.

Usando a resposta do pleinolijf, você pode escrever um script AutoHotkey que enviará a tecla de atalho para alternar para sérvio quando o CapsLock for pressionado e, em seguida, o inglês quando for lançado.

Sem testar nada, isso pode ser semelhante a:

Capslock::{Serbian-hotkey}
Capslock Up::{English-hotkey}
    
por 09.10.2012 / 08:24