Desabilita a tecla de seta para a direita com falha usando autohotkey

0

Eu estraguei um pouco de água no meu teclado e, agora, periodicamente, a tecla de seta para a direita é ativada sem que eu a pressione (por exemplo, PDFs salta uma página à frente, o YouTube pula 5s etc.). Eu usei um keylogger online ( link ) para verificar se é a tecla de seta para a direita (keyCode = 39) com um keydown rápido e sinal de chave. Por isso, tentei desativá-lo usando Autohotkey como:

Right::return

(seguindo esta solução ) Mas sem sucesso. Idealmente, eu gostaria de ter apenas a seta para a direita registrada se for pressionada por mais tempo do que, por exemplo. 0.5s, mas na pior das hipóteses eu aceito totalmente desligá-lo (então eu posso remapear Shift+Left::Right )

Qualquer ajuda é muito apreciada!

Editar: no momento, meu script é assim:

    #NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
    ; #Warn  ; Enable warnings to assist with detecting common errors.
    SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
    SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

    SC063::Pause
    +BS::Del
    ^BS::run, taskmgr
    Right::return
    
por Andarin 26.11.2015 / 12:13

1 resposta

0

Eu sigo a sugestão de secador de cabelo (cuidadosamente). Você também pode tentar colocá-lo em um grande saco de arroz durante a noite para remover qualquer umidade.

O botão de retorno é {Enter} , como em uma das seguintes opções abaixo. O retorno é interpretado de outra forma para significar o retorno de uma sub-rotina, não a tecla enter.

Right::{Enter}
Right::Send {Enter}
Right::SendInput {Enter}
As declarações

Send não são necessárias, mas são úteis se você precisar fazer combinações especiais.

Para verificar a temporização, você poderia monitorar as teclas pressionadas para cima e para baixo para determinar a diferença de tempo e, em seguida, enviar somente se o tempo fosse maior que um valor definido (500ms = meio segundo).

Right::                      
    timedown := A_TickCount
    ; no tilde on hotkey definition and no SendInput {Right} here
    ; means the keystroke down will get discarded
return

Right Up::
    timeUp := A_TickCount

    ; interval between down and up has to be half second or more, otherwise ignore
    if ((timeUp - timeDown) >= 500)     
        SendInput {Right}
return

Obviamente, você poderia simplificar o procedimento acima e se livrar do timeUp, apenas listado para maior clareza ...

Right Up::
    if ((A_TickCount - timeDown) >= 500)     
        SendInput {Right}
return

Para reatribuir completamente:

Right::return        ; ignores all right button presses by doing nothing and returning
+Left::Right         ; send right if Shift+Left is detected

ou ...

Right::return        ; ignores all right button presses by doing nothing and returning
 +Right::Right        ; send right if Shift+Right is detected

Além disso, se você ainda estiver com problemas, você também pode usar o AutoHotkey como um registrador de chaves que lhe dirá todas as teclas digitadas, incluindo aquelas que podem ser ignoradas e a ordem em que são processadas. Abrindo um programa em execução a partir do ícone da bandeja e selecione Visualizar > História Chave.

    
por 27.11.2015 / 07:31