1 (изменено: Chp11, 2016-06-28 10:09:52)

Тема: Стрелки имитируют нажатие на крестовину геймпада

Здравствуйте.
Подскажите пожалуйста, как сделать так, чтобы при нажатии на стрелку вверх игра думала, что была нажата стрелка вверх на крестовине геймпада.
Гуглил про JoyPOV, но мозгов не хватает понять как именно с крестовиной геймпада работать. Видимо, цикл нужен, но в этом я нуб поэтому прошу помощи.

2 (изменено: Indomito, 2016-06-28 23:03:11)

Re: Стрелки имитируют нажатие на крестовину геймпада

Chp11 Можно сделать наоборот, а так как тебе хочется нельзя.
Можно только так: JoyPOV -> клавиатура/мышка или блокировка.

У меня в своё время такое не получилось, но может кто то подскажет решение.


Хотя, я может быть тебя не верно понял.
Это код перехвата из FAQ.

Joy2::
if not GetKeyState("Control") ; Не нажата ни правая, ни левая клавиша Control.
	return ; т.е. ничего не предпринимать.
MsgBox Вы нажали Joy2, удерживая при этом клавишу Control в нажатом положении.
return

P.S. Более сложные не стал давать.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

3

Re: Стрелки имитируют нажатие на крестовину геймпада

Виртуальный джойстик можно:
https://autohotkey.com/boards/viewtopic.php?t=17621

4

Re: Стрелки имитируют нажатие на крестовину геймпада

Malcev Такой код работает.

#Persistent
Joy1::Send {Left}  ; Have button #1 send a left-arrow keystroke.
Joy2::Click  ; Have button #2 send a click of left mouse button.
Joy3::Send a{Esc}{Space}{Enter}  ; Have button #3 send the letter "a" followed by Escape, Space, and Enter.
Joy4::Send Sincerely,{Enter}John Smith  ; Have button #4 send a two-line signature.
Return

Вот такой - нет.

#Persistent
JoyX::Send {Up}
JoyY::Send {Up}
JoyPOV::Send {Up}
Return

Только, что проверил.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

5

Re: Стрелки имитируют нажатие на крестовину геймпада

А при чем тут это?
У топикстартера был конкретный вопрос:

Подскажите пожалуйста, как сделать так, чтобы при нажатии на стрелку вверх игра думала, что была нажата стрелка вверх на крестовине геймпада.

На что я ответил:

Виртуальный джойстик можно

И дал ссылку, где описывается - что устанавливать и как пользоваться.
На ваш же вопрос в справке всё написано:
https://www.autohotkey.com/docs/misc/Re … k.htm#axis

6 (изменено: Indomito, 2016-06-30 06:06:31)

Re: Стрелки имитируют нажатие на крестовину геймпада

Malcev Извини, я не верно понял его вопрос, т.е. - нажатие на JoyPOV переназначить на UP.

P.S. Эмулятор джойстика мне не нужен, я его сам давно сделал.

-------------------------- Дополнение, от 30.06.2016 --------------------------
Chp11
Готовый код, заменяющий  нажатие на JoyPOV на стрелки клавиатуры.

+ Код
;-----Инициализация
#Persistent
;#SingleInstance  Ignore


JoyPOVDelay    = 50
JoystickNumber = 1
SetTimer, ArrowJoyPOV, %JoyPOVDelay%
Return

Thread, NoTimers
ArrowJoyPOV:
GetKeyState, JoyPOV, %JoystickNumber%JoyPOV
;tooltip % JoyPOV
 if JoyPOV = -1  ; No angle.
    return

  If JoyPOV = 0
   {
    Send {Up Down}
    KeyWait, % A_ThisHotkey
    Send {Up Up}
    return
   }
  If JoyPOV = 18000
   {
    Send {Down Down}
    KeyWait, % A_ThisHotkey
    Send {Down Up}
    return
   }
  If JoyPOV = 27000
   {
    Send {Left Down}
    KeyWait, % A_ThisHotkey
    Send {Left Up}
    return
   }    
If JoyPOV = 9000
   {
    Send {Right Down}
    KeyWait, % A_ThisHotkey
    Send {Right Up}
   }    
Return
Thread, NoTimers, Off

Может и пригодиться.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

7

Re: Стрелки имитируют нажатие на крестовину геймпада

Indomito, Malcev, спасибо вам за информацию!
Буду копать в сторону виртуального геймпада.

8

Re: Стрелки имитируют нажатие на крестовину геймпада

Chp11
Да, то что я написал работает только в аналоговом режиме, а так JoyPOV выдаёт кнопки... могу посмотреть какие.

Удачи в написании кода, ну и если что обращайся.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

9 (изменено: Chp11, 2016-06-30 10:53:48)

Re: Стрелки имитируют нажатие на крестовину геймпада

До того как создать здесь тему я успел опробовать ppjoy.
Он работал, но мне не удалось добиться того что мне нужно. Поэтому я обратился к Autohotkey.
Расскажу вкратце:
В игре есть ходьба и бег.
Если играть геймпадом то доступны оба действия.
Если играть на клавиатуре - только бег (причуда разработчиков).
А мне ходьба нужна как раз на клавиатуре. Причем самый удобный вариант это когда её можно будет активировать shift-ом не отжимая клавиши бега.
За ходьбу отвечает стрелка вверх на крестовине геймпада.
То есть основной режим это бег, а ходьбу включаем изредка.
ppjoy и vJoy работают, но получается что бег и ходьба взаимоисключают друг друга (нельзя зажать бег и переходить на ходьбу не отжимая бега).
Насколько я понял так умеет делать autohotkey с помощью sendinput, но не в случае с крестовиной.

Вывод: нужно с помощью autohotkey обращаться к vJoy, например. Видел, что люди так делают, но не могу понять как - знаний не хватает.
Я не программист и использую autohotkey просто чтобы оптимизировать работу на компьютере.

Подошло бы простое лаконичное решение чтобы забиндить лишь одну клавишу.
Может быть попадались такие варианты?

10

Re: Стрелки имитируют нажатие на крестовину геймпада

Вывод: нужно с помощью autohotkey обращаться к vJoy, например. Видел, что люди так делают, но не могу понять как - знаний не хватает.

Так есть же готовая библиотека с примерами:
https://autohotkey.com/boards/viewtopic.php?t=5705
Тут с Гуи:
https://autohotkey.com/boards/viewtopic … mp;t=12249

11

Re: Стрелки имитируют нажатие на крестовину геймпада

Chp11 пишет:

Подошло бы простое лаконичное решение чтобы забиндить лишь одну клавишу.
Может быть попадались такие варианты?

Я по сути привёл решение в  посте №6
Просто мог попросить написать, тут многим это не сложно.
1. Назвать сочетание для клавиши клавиатуры и кнопки джойстика - я напишу.
2. Можно больше, или с INI-файлом и сделать exe-шник.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

12

Re: Стрелки имитируют нажатие на крестовину геймпада

Malcev, спасибо за информацию!
Indomito, я возможно ошибаюсь, но в посте №6 при нажатии на крестовину геймпада эмитируется нажатие стрелки клавиатуры, а мне нужно наоборот.

Был бы очень признателен за помощь с решением.
В игре ходьба срабатывает если нажать кнопку "вверх" на крестовине геймпада.
Нужно чтобы ходьба активировалась при нажатии на shift и не взаимоисключалась с бегом, который остается по умолчанию на кнопке "стрелка вверх" клавиатуры.
Самый лучший вариант был бы в виде просто .ahk.

13 (изменено: Indomito, 2016-07-01 13:18:46)

Re: Стрелки имитируют нажатие на крестовину геймпада

Chp11 пишет:

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

Ну это же просто, если Shift это клавиша.

Только фраза "и не взаимоисключалась с бегом," не понятна, т.е. я запутался Они что друг другу мешают?
Стрелки это направление движения, а Shift - это бег по направлению.

Да, и причём тут джойстик то?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

14 (изменено: Chp11, 2016-07-01 13:23:35)

Re: Стрелки имитируют нажатие на крестовину геймпада

Да, под shift-ом я имею ввиду кнопку клавиатуры.
Допустим, я бегу в игре использую стандартное управление - то есть просто зажимаю клавишу "стрелка вверх".
В какой-то момент я хочу перейти на ходьбу зажав shift, но не отжимая клавишу бега.

Ходьба в игре доступна только при нажатии на крестовину геймпада.

Ходьба и бег в игре по сути похожие действия, но отличаются скоростью.

>Они что друг другу мешают?
Если пользоваться ppjoy, например, то у меня получается что на ходьбу я могу перейти только отжав клавишу бега.

15 (изменено: Indomito, 2016-07-01 13:27:57)

Re: Стрелки имитируют нажатие на крестовину геймпада

Chp11 И так всё оказалось на клавиатуре, верно? Работают методом зажатия/удержания?
Я должен просто понять прежде чем писать.

P.S. Ндя, ну и игры стали... жесть. :LOL:

Я  буду занят по работе, часов 3-6, может меньше, продолжим позже.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

16 (изменено: Chp11, 2016-07-01 18:28:06)

Re: Стрелки имитируют нажатие на крестовину геймпада

Indomito, и ходьба и бег работают зажатием клавиш.

>И так всё оказалось на клавиатуре, верно?
Не понимаю о чем вы спрашиваете

Разработчики игры сделали странно - при игре только на клавиатуре нет такого действия как ходьба. В настройках управления просто нет и всё.

Но ходить можно если играть геймпадом, а не на клавиатуре.

Мне не нравится играть геймадом, мне удобнее на клавиатуре. И мне не хватает ходьбы.