Я очень новичок в AutoHotkey, и я хочу знать, можно ли привязать клавишу клавиатуры к левой кнопке мыши один к одному? Как если бы я удерживал нажатой клавишу, назначенную для щелчка левой кнопкой мыши, он удерживался бы так, как если бы я удерживал / перетаскивал его левой кнопкой мыши? И если я отпущу это, это выпустит также. Кроме того, есть ли другой способ сделать это, кроме AutoHotkey?

Пример:

c::
MouseClick, Left

Но если я нажимаю и удерживаю C он начинает быстро повторять левый щелчок вместо того, чтобы удерживать его, пока я держу C

Любая помощь с благодарностью.

2 ответа2

0

MouseClick в основном используется для нажатия на определенное место и выглядит примерно так

MouseClick, left, 55, 233

Это все еще будет работать, когда вы используете этот код ниже

c:: MouseClick, Left

Он будет щелкать при нажатии клавиши C, однако, если вы удерживаете клавишу C, он будет постоянно щелкать спамом. Вы можете решить эту проблему с помощью Click, Down, как показано ниже.

c:: Click, down

Теперь, когда нажата клавиша C, она будет щелкнуть один раз и удерживать ее, пока нажата клавиша C, активируя, как кнопка мыши

Здесь больше информации о том, как щелчки мыши работают с AHK здесь.

0

Следуя тому, что дано @Plox, который вводит в заблуждение то, что требуется в этом посте, еще больше поясним, если мы поймем, что c:: MouseClick left,,,,, D работает по тому же механизму, который используется

c::
MouseClick left,,,,, D
return

Движок AHK здесь запускает MouseDown, выходит из этого потока и снова подключается к пользовательскому вводу в ожидании другого действия, которое говорит, что если клавиша все еще удерживается, AHK будет бесконечно входить в ту же процедуру, когда она поймет, что горячая клавиша, вызывающая ее, является все еще нажата.

Можно использовать больше двух паллиативов:

  • Вы выбираете, чтобы просочиться AHK до тех пор, пока не выпустите тот же кей:

    c::
    MouseClick left,,,,, D
    Keywait, c, U
    MouseClick left,,,,, U
    return
    
  • Или вы предпочитаете оставить интерпретатор AHK свободным вне той же самой процедуры, резервируя глобальную переменную keybound чтобы запретить повторное обращение к тому же действию снова, если ключ еще не сделан свободным.

    #HotkeyInterval 0
    
    keybound:=0
    
    c::
    if keybound
    return
    keybound:=1
    MouseClick left,,,,, D
    return
    
    c Up::
    MouseClick left,,,,, U
    keybound:=0
    return 
    

HotkeyInterval - это пороговое значение, отключенное для предотвращения нежелательных предупреждений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .