1 (изменено: Fatherboard, 2015-12-27 22:15:30)

Тема: AHK: Откуда берется Ctrl???

Добрый день!
Необходимо на горячие клавиши Shift+Alt+ЛКМ назначить нажатие СКМ+ПКМ.
Смог написать вот такой код:


!+LButton::
SendInput {MButton down}{RButton down} 
Loop
{
Sleep, 10
GetKeyState, state, LButton, P
if state = U 
break 
}
SendInput {MButton up}{RButton up} 
return

Скрипт вроде работает, но если записать на MacroRecorder или другой рекордер макросов выдаст:

Keyboard : ShiftLeft : KeyDown
Keyboard : AltLeft : KeyDown
Mouse : 193 : 306 : LeftButtonDown : 0 : 0 : 0
Keyboard : ControlLeft : KeyDown
Keyboard : ControlLeft : KeyUp
Keyboard : ControlLeft : KeyDown
Keyboard : ControlLeft : KeyUp
Keyboard : AltLeft : KeyUp
Keyboard : ShiftLeft : KeyUp
Mouse : 193 : 306 : MiddleButtonDown : 0 : 0 : 0
Mouse : 193 : 306 : RightButtonDown : 0 : 0 : 0
Keyboard : ControlLeft : KeyDown
Keyboard : AltLeft : KeyDown
Keyboard : ControlLeft : KeyUp
Keyboard : ShiftLeft : KeyDown
Keyboard : ControlLeft : KeyDown
Keyboard : ControlLeft : KeyUp
Keyboard : AltLeft : KeyUp
Keyboard : ShiftLeft : KeyUp
Mouse : 236 : 336 : MiddleButtonUp : 0 : 0 : 0
Mouse : 236 : 336 : RightButtonUp : 0 : 0 : 0
Keyboard : AltLeft : KeyDown
Keyboard : AltLeft : KeyDown
Keyboard : AltLeft : KeyUp
Keyboard : ShiftLeft : KeyUp

Откуда то  появляется Ctrl который делает невозможным использование Alt+Shift в других комбинациях в этой программе. Экспериментально проверил любое Alt+ЛКМ выдаёт многократное Ctrl в потоке .((( В чём ошибка?
Заранее благодарю!

2

Re: AHK: Откуда берется Ctrl???

Необходимо MLB+RLB заменить на Shift+Alt+LMB.

Судя по коду, вопрос задан неправильно. А необходимо Shift+Alt+ЛКМ заменить на СКМ+ПКМ так, чтобы работало удержание.

3 (изменено: Fatherboard, 2015-12-27 22:17:50)

Re: AHK: Откуда берется Ctrl???

Пояснения:
В программе CATIA управление камерой СКМ+ПКМ. Мне необходимо заменить это на Alt+Shift+ЛКМ, и, да, чтобы было удержание пока не отпустишь ЛКМ. Схожий код (без добавления Alt+ Shift) у других работает.

4

Re: AHK: Откуда берется Ctrl???

Fatherboard, на форуме и в документации используются совсем другие термины. То, что по-Вашему "MLB+RLB заменить на Shift+Alt+LMB",  у нас принято называть "на гор. клавишу Shift+Alt+ЛКМ назначить нажатие СКМ+ПКМ".

5

Re: AHK: Откуда берется Ctrl???

Проблема и решение подробно описаны здесь.

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

6

Re: AHK: Откуда берется Ctrl???

teadrinker Спасибо за ссылку! Пытаюсь теперь понять что происходит...))
Если использовать левый Alt, то всё нормально, никаких левых Ctrl не появляется. Если его же использовать в любой комбинации мыши или клавиатуры, в потоке появляется левый Ctrl. Так же появляется Ctrl, если использовать правый Alt как отдельно, так и в комбинациях. По ссылке написано что делать если хулиганит правый Alt - переписать в реестре или удалить обновления, а у меня то левый, я только с ним работаю! Что можно с ним сделать?
Вот пример идеально работающего для Shift, но не для Alt+Shift, как хотелось бы.

#IfWinActive 3DEXPERIENCE

$+LButton::                                                       ; orbit
SendInput {MButton down}{RButton down} 
Loop
{
    Sleep, 10
    GetKeyState, state, LButton, P
    if state = U       
break
   
}
SendInput {MButton up}{RButton up}
return

;---------------

$+MButton::                                                     ; pan
SendInput {MButton down}
Loop
{
    Sleep, 10
    GetKeyState, state, MButton, P
    if state = U       
break
   
}
SendInput {MButton up}
return

;---------------


$+RButton::                                                      ; zoom
SendInput {Ctrl down}{MButton down}
Loop
{
    Sleep, 10
    GetKeyState, state, RButton, P
    if state = U         
break
   
}
SendInput {Ctrl up}{MButton up}
return

;----------------

Если просто добавить Alt везде, то 'Pan' ,из-за появления того самого левого Ctrl, превращается в "Zoom". При этом с 'Orbit' всё нормально. Тут либо надо затыкать этот Ctrl в скрипте, либо устранять причину.