AutoHotkey (teclado da UE): como remapear o LCtrl enquanto mantém o AltGr

0

Pesquisei perguntas anteriores, mas não encontrei uma solução para trocar o LAlt por LCtrl (ou CapsLock por LCtrl), enquanto preservo completamente o AltGr, que corresponde a Ctrl + Alt (ou talvez a LCtrl + RAlt?).

Esta é a pergunta mais próxima, mas não posso usar o Registro, tenho privilégios limitados. Alterne Ctrl e Alt com AutoHotKey sem bagunçar o alternador Alt-Tab?

Relacionado também: link

Estou usando um desses scripts simples:

LAlt::LCtrl
LCtrl::LAlt

Segundo:

LCtrl::CapsLock
CapsLock::LCtrl

Sempre que pressiono AltGr com qualquer outra tecla, algo fica preso e eu tenho que pressionar aleatoriamente Alt, Ctrl até que eu possa escrever novamente. Se eu usar o segundo script, o CapsLock será ativado!

Meu teclado é suíço e eu tenho um monte de teclas com um terceiro símbolo, portanto eu preciso frequentemente de AltGr, o remapeamento de cada uma delas não seria uma solução limpa.

Atualizar

Acabei de descobrir que os problemas com o AltGr são completamente resolvidos adicionando a seguinte linha no final dos dois scripts postados anteriormente, mas não entendo por que isso está acontecendo.

<^>!::RAlt

Por que o remapeamento de AltGr como RAlt ALONE continua produzindo o efeito de um AltGr normal?

    
por FarO 01.10.2015 / 16:15

1 resposta

0

1) Embora de natureza simples, a lógica deste post é difícil de seguir para aqueles de nós sem um teclado AltGr para testar. Eu falo por mim mesmo, de qualquer forma ... por uma questão de compreensão, pode ajudar a esclarecer de qual script de duas linhas você está falando, seguido por uma lista de quais teclas você pressiona (e em que ordem), seguidas por uma lista do que resultados que você recebe. Em seguida, liste o próximo script, chaves e resultados. Ou talvez outros não precisem disso, mas foi um pouco difícil para mim seguir, embora eu acredite que você tenha todas as informações críticas listadas.

2) Você observou as reatribuições de teclas de atalho nos arquivos de ajuda? Eu notei duas coisas que você pode querer brincar. Primeiro é o uso de * como um modificador. O segundo é o uso de 'Up' para acionar em um movimento ascendente para enviar um movimento ascendente diferente (isto é, enviar um movimento ascendente para um modificador diferente). Veja a redefinição LWin listada em Hotkeys no arquivo de ajuda:

*LWin::Send {LControl Down}
*LWin Up::Send {LControl Up}

3) As coisas ficam presas às vezes e quando isso acontece, às vezes você pode trabalhar em torno dele enviando comandos 'Up' mesmo que a chave já esteja ativa. Tecnicamente, pode não ser necessário, mas às vezes funciona (e às vezes não funciona).

4) Pode (ou não) servir para procurar na lista do histórico de chaves através do menu Ver. Muitas vezes, você pode descobrir por que as coisas ficam presas ou por que elas não funcionam, observando as chaves de ordem serem processadas (isto é, a ordem em que estão listadas) e se são ou não ignoradas devido às várias razões listadas.

5) Como o exemplo de redefinição LWin mostra, você pode querer usar o comando 'Send' ou 'SendInput' para ter mais flexibilidade durante a solução de problemas (se você não precisar disso, é claro que pode ficar sem fazer o código mais limpo, mas não faz mal a nada). Por exemplo, usar um comando Enviar facilita a marcação de outro caractere ou pressionamento de tecla em uma única reatribuição de teclas de atalho, depois a ordem de acionamento na lista do histórico de teclas para ver o que acha que foi pressionado e em que ordem.

Se eu tivesse um desses teclados para testar, provavelmente tomaria um dos exemplos de duas linhas que você listou e o transformaria em uma reatribuição de chave de quatro linhas, à maneira do exemplo da reatribuição de LWin, em seguida, verificaria o que acontecendo no histórico chave. Eu poderia adicionar uma instrução de pausa também, a fim de pegá-la no ato e poder olhar o histórico de pressionamento de tecla até o ponto em que a pausa foi executada, o que excluiria o log de mostrar qualquer tecla modificadora sendo liberada.

Eu não tenho ideia se isso funcionaria, mas aqui está um resumo do tipo de coisa que você pode começar para fins de depuração.

*LAlt::Send {LCtrl Down}
*LAlt Up::Send {LCtrl Up}
*LCtrl Up::Send {LAlt Up}
*LCtrl::
     Send {LAlt Down}
     Pause   ; once the script is paused you can go look at Key History
 Return
    
por 02.10.2015 / 08:56