1 (изменено: Gamabunta, 2012-04-22 21:53:58)

Тема: AHK: Блокировка оси Y мыши при нажатии на кнопку

Нужно чтобы при зажатии определённой клавиши, например Space, ось Y блокировалась, читал эту Серый форум тему, в Battlefield 3 эти варианты не работают, возможно из-за DirectInput, по идее код не должен быть связан с mouse_event или SetCursorPos.

2

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

SetBatchLines, -1
CoordMode, Mouse, Screen
Space::
MouseGetPos, , OutputVarY
While GetKeyState( "Space" )
   ClipCursor( 1, 0, OutputVarY, A_ScreenWidth, OutputVarY )
ClipCursor( 0 )
Return

ClipCursor( Confine=True, x1=0 , y1=0, x2=1, y2=1 ) {
   VarSetCapacity( R, 16, 0 )
   NumPut( x1, &R+0 ), NumPut( y1, &R+4 )
   NumPut( x2, &R+8 ), NumPut( y2, &R+12 )
   Return Confine ? DllCall( "ClipCursor", UInt, &R ) : DllCall( "ClipCursor" )
}
return

3

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Malcev
Спасибо за попытку помочь, этот код интересно воздействовал на программу, как и на ос в целом: в 2D блокировка оси работает, а кнопка нет; в 3D играх, как и в нужной - нажатие не обрабатывается и ось не блокируется.

4

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Может проблема в игре? Отключи аппаратную поддержку мышки.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

5

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Indomito
И как тогда я буду ей пользоваться? Возможно и в игре... Но я не верю что нет больше вариантов, кроме испытанных. Мне не нужно чтобы курсор сохранял вертикальную позицию в момент нажатия, да и вообще всё-равно на курсор, надо чтоб ось Y блокировалась по нажатию, не важно как и почему.

6 (изменено: andrew, 2012-04-17 13:43:40)

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Off: Indomito Можно ваш Skype ?

                                                   
                                                   
                                                     
                                                     

7

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Можно Отправил на "мыло".

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

8 (изменено: Indomito, 2012-04-20 19:08:57)

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Gamabunta я тут подумал и решил что можно поступить проще чем написал Malcev, т.е. использовать лобовой метод - удерживать курсор по оси методом проверки от начального.
1. Нажали кнопку - запомнили позицию по Y
2. По таймеру проверяем смещение от запомненного и возвращаем курсор обратно. По сути можно не проверять, а тупо возвращать в запомненную позицию.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

9

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Indomito
Интересный вариант, тоже думал о таймере, но казалось не поможет... надо попробывать.

10

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Зачастую простые решения , т.е. тупые срабатывают...

Например:

HotKey #a, vsLabel
return
vsLabel:
return

не тоже само что

#a::
return

Если логически рассуждать, код то должен быть одинаковый, а на деле - нет.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

11

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Как то так... хотя может я и не прав.

#Persistent
fBlock := false
HotKey #b, lBlock
return

lBlock:
fBlock := !fBlock
 if (fBlock)
    {
     SetTimer, BlockY, 10, on
     CoordMode, Pixel
     MouseGetPos,, vPosY
     }
  else
    SetTimer, BlockY,, off  
return

BlockY:
if (!fBlock)
  return
CoordMode, Pixel
MouseGetPos,vPosX
MouseMove,vPosX,vPosY
;ToolTip, %fBlock%
return
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

12 (изменено: Indomito, 2012-04-20 22:20:58)

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Проверил - не во всех играх работает, т.е. работает в тех, которые сделаны нормально.

P.S. Можно добавить в секции таймера строчку Thread, interrupt, 0 быть может - поможет.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

13

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Indomito
Что-то не хочет код работать

14 (изменено: Indomito, 2012-04-20 22:22:48)

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

У тебя AHK_L ?
Скрипт на Рабочем Столе то работает?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

15

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Да, есть и AHK_L под другое расширение
Нет, не работает. Поменял на нужную кнопку - всё-равно.

16

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

А у меня наоборот - таймер один раз включается и не хочет выключаться ))))
Что то я перемудрил видимо... хотя явной ошибки не вижу.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

17 (изменено: Indomito, 2012-04-21 00:53:12)

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Вот, торопиться вредно, просто была ошибка в синтаксисе описания SetTimer

#Persistent
fBlock := false
HotKey #b, lBlock
return
 
lBlock:
fBlock := !fBlock
 if (fBlock)
    {
     SetTimer BlockY, 10
     CoordMode, Pixel
     MouseGetPos,, vPosY
     }
  else
    SetTimer  BlockY, off  
return
 
BlockY:
CoordMode, Pixel
MouseGetPos,vPosX
MouseMove,vPosX,vPosY
return
"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

18

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Всё ещё нужен код

19

Re: AHK: Блокировка оси Y мыши при нажатии на кнопку

Gamabunta пишет:

Всё ещё нужен код

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

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download