Usando o AutoHotKey para remapear as chaves

3

Eu comprei recentemente o Rayman 2 do GOG.com. O jogo é antigo e, portanto, não dá a opção de remapear chaves, e eu gostaria de torná-las um pouco mais próximas do que estamos acostumados hoje.

Basicamente, eu quero movimento normal com o WSAD, salto com espaço e tiro com o botão esquerdo do mouse. Além disso, gostaria que as chaves fossem apenas remapeadas quando a janela do Rayman estivesse ativa. Eu criei o script abaixo, mas ele não funciona corretamente.

Esta é a primeira vez que trabalhei com o AHK, então não sei o que fazer. Como posso configurar corretamente o script?

Veja o que acontece com este script ativo:

  • O script está ativo se o Rayman está aberto ou não, e muito menos se a janela está ativa. (O nome da janela pode ser Rayman II ou Rayman2 .)
  • W: avança e gira a câmera para a direita
  • S: funciona como pretendido
  • A: move-se para a esquerda e pula
  • D: funciona como pretendido
  • LButton: funciona como pretendido
  • espaço: atira e pula

O script em si:

IfWinActive, Rayman2
{
    w::up
    s::down
    a::left
    d::right
    space::a
    LButton::space
}
    
por vaindil 04.11.2013 / 21:15

2 respostas

4

  1. Primeiro, você está usando o comando errado. Use #IfWinActive . Isso é para o script inteiro. O comando que você escolheu verifica se uma janela está ativa em um script.
  2. Em seguida, verifique com WindowSpy qual é o ahk_class da janela (o que é útil se o título da janela for alterado). O WindowSpy está incluído na instalação do AutoHotkey.
  3. Por último, experimente diferentes SendModes . Existem alguns que variam nos detalhes. Mais informações sobre os diferentes comandos Enviar podem ser encontradas aqui .

Seu código será parecido com isto:

#IfWinActive, ahk_class xyz ; put your ahk_class instead of xyz
SendMode Play ; try all of the following: Input|Play|Event|InputThenPlay

    w::up
    s::down
    a::left
    d::right
    space::a
    LButton::space

Qualificação: Dependendo da versão do Windows que você está usando, a simulação de pressionamentos de teclas pode ou não funcionar. O que funciona até o Windows 7, pode não funcionar mais no Windows 8. Isso também aconteceu comigo e ainda não descobri uma alternativa dentro do AutoHotkey.

Pode ser necessário experimentar um software de macro diferente (AutoIt, PhraseExpress, Macro Express).

    
por 04.11.2013 / 21:48
1

Parece que você mapeou as chaves entre si, o que pode causar chamadas circulares. Tente colocar um $ na frente de cada uma das suas chaves. Isso evitará esse problema.

Exemplo:

$w::up

Fonte

Em relação ao seu problema de IfWinActive , sugiro usar ahk_exe . Basta procurar o nome do processo no Gerenciador de Tarefas e colocar a seguinte linha antes de todas as suas teclas de atalho.

#If WinActive("ahk_exe rayman.exe")  ; Rename exe to whatever it really is

Fonte

    
por 04.11.2013 / 21:46