1 (изменено: dm.tr.y, 2016-07-23 11:11:07)

Тема: AHK: Комбинацию клавиш заменить другой комбинацией

Добрый день, подскажите как это реализовать:
Есть комбинация клавиш в программе "Альт+средняя кнопка мыши" при зажатии которой  и движении мышки крутится 3d обзор.
Надо чтобы зажатие "D+пробел" срабатывало как "Альт+Левая кнопка мыши" и клавиша "D" отдельно при  нажатии работала как "D", а пробел всегда оставался как средняя кнопка мыши.

Кнопку мыши я заменил пробелом такой постоянной командой, работает отлично:

Space::MButton

а вот с кнопкой "D" нужен скрипт - при нажатии чтобы работала по умолчанию, а при зажатии симулировала зажатие Альт:
вот с этим у меня проблема.

2 (изменено: dm.tr.y, 2016-07-23 11:07:53)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

Почитал ещё раз предыдущие темы и вроде прикинул:


Space::MButton
vk44::Send {LAlt Down}
vk44 up::Send {LAlt Up}

клавиша D - vk44
средняя кнопка мыши - MButton

Поправьте если не так

3 (изменено: dm.tr.y, 2016-07-23 11:01:25)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

dm.tr.y пишет:

Space::MButton
vk44::Send {LAlt Down}
vk44 up::Send {LAlt Up}

Какая-то ерунда в итоге получается(

Все сводится к команде на клавише, которая при одинарном нажатии оставалась бы собой , при зажимании имитировала зажимание другой клавиши.

Нашел похожий скрипт в соседней теме http://forum.script-coding.com/viewtopic.php?id=5098
где зажатие клавиши имитирует нажатие другой клавиши, но не могу туда вставить зажатие другой клавиши.

RButton::
   mod =
   SetTimer, Timer, -300
   KeyWait, RButton
   SetTimer, Timer, Off
   if !mod
      Send, {RButton}
   Return
   
Timer:
   mod = 1
   Send, {MButton}
   Return

4 (изменено: YMP, 2016-07-23 06:47:19)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

Так не пойдёт? Попутно к вам просьба/совет — если используете виртуальные коды для обозначения клавиш, указывайте в комментарии, что это за клавиша. Никто же всех этих кодов не помнит наизусть.


Space & vk44::  ; D
    Send, {LAlt down}{LButton down}
    KeyWait, vk44
    Send, {LButton up}{LAlt up}
    Return

Space Up:: Send, Space

5 (изменено: dm.tr.y, 2016-07-23 11:01:04)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

YMP
за совет спасибо, поправлю
я еще ошибся в посте - надо "среднюю кнопку мыши", я поправил в скрипте на MButton,
но скрипт чего-то не срабатывает, ни пробел ни кнопка D(vk44).
Я не понимаю и половину этого скриптования, но мне кажется что кнопку мыши повесить на пробел отдельной командой.

Space::MButton

эта команда отлично работает.

а вот с кнопкой "D" при нажатии чтобы работала по умолчанию, а при зажатии симулировала зажатие Альт
вот с этим у меня проблема.

6

Re: AHK: Комбинацию клавиш заменить другой комбинацией

Переведу. Требуется выполнить 3 условия.

  1. Чтобы удержание "D+Пробел" скрипт преобразовывал в удержание "Альт+ЛКМ".

  2. Сохранить работоспособность клавиши "D".

  3. Переназначить Пробел на СКМ.

Сложность в том, что клавиши из п. 2 и п. 3связаны с комбинацией из п. 1.

7

Re: AHK: Комбинацию клавиш заменить другой комбинацией

dm.tr.y, ознакомьтесь с этой темой отредактируйте свои посты.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

8 (изменено: dm.tr.y, 2016-07-23 11:22:36)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

ypppu
3 пункт: я переназначил Пробел на СКМ командой:

Space:MButton

и пробел со всеми сочетаниями клавиш и на зажатие работает очень хорошо.

2 пункт: если на кнопку "D" отдельно сделать скрипт: при нажатии чтобы работала по умолчанию, а при зажатии симулировала зажатие Альт, то мне кажется, что 1-й пункт сам решится.

9

Re: AHK: Комбинацию клавиш заменить другой комбинацией

dm.tr.y
Если вы сначала D нажимаете, а потом пробел, то поменяйте их местами в моём коде. Если же хотите отличать нажатие D от зажатия по времени, то используйте KeyWait с опцией T (таймаут).

10 (изменено: dm.tr.y, 2016-07-23 14:25:46)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

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

11

Re: AHK: Комбинацию клавиш заменить другой комбинацией

Таймаут указан сразу после Т (0,3 секунды).


$vk44::
    KeyWait, vk44, T0.3
    If (ErrorLevel = 0)
        Send, {vk44}
    Else {
        Send, {Alt down}
        KeyWait, vk44
        Send, {Alt up}
    }
    Return

12 (изменено: dm.tr.y, 2016-07-23 16:34:59)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

YMP
Работает отлично и вместе с пробелом вместо мышки. Спасибо.

13

Re: AHK: Комбинацию клавиш заменить другой комбинацией

dm.tr.y, не забываем о точках в конце предложений, здесь не чат.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

14 (изменено: dm.tr.y, 2018-02-02 18:57:18)

Re: AHK: Комбинацию клавиш заменить другой комбинацией

Добрый день!
Подскажите: можно ли исправить или сделать по другому код, чтобы он работал, когда зажата только одна клавиша D (vk44), а если зажато несколько клавиш (клавиша D + еще какая) - чтобы работала функция по умолчанию?


$vk44::
    KeyWait, vk44, T0.3
    If (ErrorLevel = 0)
        Send, {vk44}
    Else {
        Send, {Alt down}
        KeyWait, vk44
        Send, {Alt up}
    }
    Return