Remapeando Alt + Key para a mesma Key não está funcionando?

0

Aqui está o meu teclado atual, um Logitech K270:

Eu quero sobrescrever o Browser_Home assim:

  1. Browser_Home > > > Media_Next
  2. ALT + Browser_Home > > > Browser_Home

Enquanto o primeiro remapeamento funciona o segundo não, e ALT + Browser_Home resulta em Media_Next sendo enviado. Aqui está a parte relevante do meu script:

Browser_Home::Send {Media_Next}
!Browser_Home::Send {Browser_Home} ; this one is ignored

Eu não sei se isso é devido à Logitech, implementação do AHK, ou um erro lógico no meu script AHK (provável).

    
por beppe9000 25.11.2017 / 13:50

2 respostas

0

Você tentou uma abordagem combinada de atalhos?

; $ = Force keyboard hook such that Send command won't trigger itself
; * = Prefix to allow firing with any other hotkey combination as long as that key is pressed

$*Browser_Home::
    If GetKeyState("Alt", "P")  ; See if user is holding the Alt key down
        Send {Browser_Home}
    Else
        Send {Media_Next}
Return

Ou combinado usando o operador ternário:

$Browser_Home::Send, % GetKeyState("Alt", "P") ? "{Browser_Home}" : "{Media_Next}"

Eu não sei se isso realmente funciona ou não (ou seja, não testado), apenas algo para tentar.

Às vezes é mais fácil depurar onde as coisas estão dando errado quando você tem um atalho combinado adicionando MsgBox declarações nos vários casos de teste para ver quais estão ou não em execução e, em seguida, se elas parecem ser executadas (por um declaração particular de envio, por exemplo), então você pode procurar no log de pressionamento de tecla através do ícone da bandeja e ver o que realmente foi enviado, ou possivelmente ignorado / bloqueado devido à sintaxe de atalho (se for configurado inadvertidamente de uma maneira que o AutoHotkey está bloqueando o que você gostaria de enviar)

    
por 27.12.2017 / 07:58
0
*Browser_Home::
GetKeyState, OutputVar, alt , P
if(OutputVar = "D")
{
    ;~ MsgBox,  alt down %OutputVar%
    Send {Browser_Home}
    sleep, 250
}
else if(OutputVar = "U")
{
    Send {Media_Next}  
    sleep, 250
}
return
*Browser_Home up::
sleep, 50
return

Espero que isso ajude (vezes até você) ou

Browser_Home::Send, {Media_Next}
Alt & Browser_Home::send, {Browser_Home}
    
por 18.01.2018 / 09:09