Hello! Thanks for the amazing software! Could you explain please how is it possible to combine axes from mouse with right stick of xBox360 gamepad? Not just remap mouse to stick, but use it at the same time? It needs for head-control camera view in VR by FreePie protocol, but with possibility to conrol it just with gamepad simultaneously. Thanx!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Okey, i have combined axes from mouse and right stick of my x360 gamepad. But i cant to manage enough usability of mouse like right stick has. If i move mouse left, camera in game turns left (it is ok) but if i move mouse othe direction , camera still turns left. It needs moving alot to forse camera move in properly direction. How to set it properly that mouse works works like ever in games?
Thanks! this is my settings.
I recommend attaching a file to reduce the content of the message.
I recommend using RAW Input for the mouse.
I recommend using XInput for the gamepad.
I recommend that you first configure the mouse separately, and then the mouse + gamepad. Reduced time for testing.
Hello! thanks for youк quck answer!
I quit trying to solve the problem with a mouse. I export the Rx and Ry coordinates from Opentrack as Joystick Emulation for vJoy. In Virtual Controller I try to combine two right sticks - from the vJoy and from the physical controller. But vJoy does not return the stick to the neutral position as a physical controller. The camera rotates constantly. There may be a solution with settings in which the virtual stick will behave as a physical, acting only during deflection, rather than holding the deflection, creating a constant movement. Sorry for my english, i hope you will understand my question.
I mean that it should work like usual mouse camera control in games. When you move mouse camera moves, when you stop moving camera stops to. But here i can not manege this. My virtual stick does not reset in zero position when moving stops. Axis [RX] Release didn't helps
Last edit: Anton 2019-11-08
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
vJoy by default has its "neutral" axis values. They are stored in the register (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\vjoy\Parameters\Device01). Function "Release" sets them (or 50% if they not exist). You can try to set 50% - the usual neutral value:
Axis [RX] = 50%
My English is a mixture of "I think it should be" + google translate. I write well (more or less) in Russian.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Сейчас попробую. спасибо! Где именно нужно прописать Axis [RX] = 50%?
В реестре по этому адресу только два параметра:
HideReportDescriptor и HideReportDescriptorSize
По логике получается, что сброс в нейтральное положение должен происходить при остановке движения, а потом из нейтрального положения снова смещаться до следущей остановки мыши или трэкера. Но как этого достичь? Каким образом обычное управление обзором мышью в играх этого достигает? Почему камера не продолжает вращаться в том же направлении при остановке мыши?
Last edit: Anton 2019-11-08
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Думаю проблема в том, что программа Opentrack "захватила" контроль над vJoy Device 1, и как результат программа Virtual Controller не может получить доступ к контролю vJoy Device 1. Насколько я знаю только одна программа может иметь контроль над устройством, а вот получать данные с него могут несколько программ.
Таким образом, невозможно одновременно использовать две программы для управления vJoy Device 1. Можешь попытаться использовать встроенный vJoy Feeder Demo для тестов.
Мышь при движение генерирует, как правило, "смещение" от текущего положения. Например слабое движение влево dX: -5 -5 -4 -5 -3 -4 -2 -1 0. Вот и получается, что в конце движения всегда 0 - нейтральное положение. "смещение" аналог скорости. При попытки это перекинуть на стик возникает проблема размерности: значения смещения не соответствуют значениям стика (например dX -5 это сколько для стика? -10% или -50%).
Пример настройки для мыши:
100% - относительная величина, подбирай под себя.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Я почему-то думал, что Virtual Controller просто берёт данные из Vjoy Device, в который их отдёт Opentrack, и затем уже с помощью функций можно ими управлять при компоновке. Я думал, что их конечное использование( трансляция, обнуление и т.д.) за Virtal Controller)
Я снова попытал удачу с прикручиванием мыши к правому стику, и вот что заметил.
Если задать не
Axis Speed [X] Positive. а просто Axis [X] Positive,
но при этом оставить
Axis Speed [X] Release
то мышь в правом стике отрабатывает почти один-в-один как сам стик, кроме одного момента.
Я проверяю по свойствам игрового устройства в Панель управления-> Устройства и принтеры->Игровые устройства. Там где индикаторы нажатий в виде полосок.
Если быстро вести мышку, то значение достигает 100% и при остановки мышки возвращается в среднее положение. Но! При следующем перемещении ползунок на долю секунды возвращается на значение 100%, а потом уже на значение, соответствующее скорости движения мышки. Пока не понимаю. как сделать так, чтобы после остановки, новое движение начиналось с нуля. Если это получится, то дело сделано. По крайней мере уже отклонение мыше-стика зависит от скорости перемещения мыши и при остановке возвращается в нейтраль. Но нужно как -то эту нейтраль записать в переменную. которая служит точкой отсчёта при следующем движении. Я не программист и даже не математик, я пытаюсь логикой побороть проблему, но это провал) Есть идеи, может? Осталось чуть-чуть.И я не понимаю, неужели никто из интернет-сообщества не пытался прикрутить трекинг головы к стику джойстика? Я не нашёл ничего вообще. Все как будто на клавиатурах и мышках сидят...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Работает! Возвращается в среднее положение и с него начинает при следующем перемещении. Теперь проблема в том, что когда курсор упирается в край экрана, случается остановка и сброс значений. То есть нужно, чтобы именно курсор перемещался, а не только сама мышь. И из-за зависимости "отклонения стика" от скорости перемеения мыши, присутсвует инерция и несоответствие между перемещением мыши и поворотом камеры. Есть ли способ задать прямое соответствие, как при управлении обзором непосредственно мышью? Без зависимости от скорости?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Если включить режим RawInput, то всё работает как надо, при упирании в край экрана ложение "стика" сохраняется, но почему-то Opentrack перестаёт управлять этим процессом. Курсором по-прежнему управляет, а виртуальным стиком нет. Обычная проводная мышка управляет и курсором и положением "стика". Не одно, так другое(
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Нужно полное описание того чего ты хочешь. Просто в первом сообщение было сказано только про (мышь+гейпад xbox360) => (виртуальный геймпад xbox360). А потом появились всякие Opentrack, vJoy. Напиши какие у тебя физические (которые можно в руки взять) устройства. Программа VR читает данные только с одного устройства (виртуальный геймпад xbox360) или нет (виртуальный геймпад xbox360, клавиатура, мышь, vJoy)?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Задача реализовать управление камерой в играх с помощью трекинга головы, но при этом, чтобы геймпад сохранял свой полный функционал. Большинство игр переключают управление: либо геймпад, либо клава и мышь. Большинство пользователей, как я понимаю, использует Mouse Mode в выходе програм для трансляции трекинга. (OpenTtack, FreePie, Trinus и т.д.) Но это всё переключает на управление клавиатурой и мышью( нельзя одновременно бежать левым стиком геймпада и крутить головой, к примеру). Я искал готовые решения в интернете (Oculus не предлагать! :)) , но ничего не нашёл. Очень долго искал и выкурил тонны форумов. Подумал, что должно получиться, если прикрутить к правому стику геймпада ещё и зависимость от положения головы, то должно получиться.
И вот я ищу решение.
Для трансляции координат использую FreePie для Android 9 (в последних андроидах какая-то функция, которая отрубает датчики положения в фоновом режиме, поэтому Trinus например перестал работать в этом смысле)
Для приёма координат использую OpenTrack.
Пробовал в режиме vJoy, тогда он передаёт данные наклона в оси Rx и Ry, я пытался мэпить их на правый стик виртуального геймпада в Virtual Controller наравне со стиком физического контроллера. Но как я писал ранее, я не смог добиться сброса в нейтральное положение после остановки поворота головы ( чтобы камера переставала вращаться).
Теперь пробую в режиме MouseMode. Пытаюсь замэпить координаты мыши, которые выдаёт Opentrack на правый стик виртуального геймпада в Virtual Controller наравне со стиком физического контроллера, о чём я и пишу выше.
Задача иметь жёсткую связку положения головы и положения камеры так же, как при управлении камерой физической мышью. Без инерции и прочего. Я не знаю, как это реализуется в играх, увы. Пытаюсь с помощью твоей программы.
У меня геймпад по типу xBox360, Honor 8 pro с андроид 9 и windows 10.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
RawInput связан с определенным устройством. Твоя физ. мышь не связана с OpenTrack. Чтобы работало попробуй определить устройство – например через режим «быстрой привязки» или перебором. Рекомендую попробовать устройство Simulated Mouse. Если не помогло, тогда надо пробовать использовать LLHook + Lock Feature.
Нужно уточнить детали про трекинг.
Ограничен или нет поворот головы влево и вправо (думаю ограничен если не крутишься на кресле)? В играх где есть управление обзором мышкой ограничения нет. Это особенность мыши, например у стика есть ограничение диапазона значений. Из-за ограничения чтобы иметь возможность (если надо) поворота на неограниченный угол, контроль осуществляется не самим углом поворота, а скоростью поворота. То есть максимальный наклон стика влево = поворот влево на макс. скорости.
Если у тебя ограничен поворот (не крутишься) головы влево и вправо, то тогда устроит ли тебя то что например ты в шутере не сможешь посмотреть за спину?
Если у тебя неограничен поворот (крутишься) головы влево и вправо, то тогда нужно уточнить как именно поворот передается в vJoy. Как меняются значения RX если ты будешь крутится? Не будет ли в какой-то момент всегда постоянное значение или значения меняются как-то циклично.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
В режиме RawInput и режиме быстрой привязки Virtual Controller не считывает Mouse Emulation выход из Opentrack ( ни в Direct input, ни в Legacy Input). Курсор бегает под управленем наклонов телефона, но не цепляется в VC. Не получается их связать режиме Raw Input.
LLHook, как я писал выше, почти работает, но когда курсор упирается в край экрана, виртуальный стик возвращается в нейтральное положение, то есть вращение прекращается.
При активации Lock Feature всё вообще странно, при любых перемещениях ось X выходит на 100, а ось Y на 0 %. Это видно по окну настройки геймпада в виндоус.
Что касается потребностей в трекинге, то меня действительно полностью бы устроил аналог mouse view. Игры от первого лица почти не используются, в основном от третьего. На кресле я не кручусь, достаточно поворотов в пределах 180 градусов, чтобы можно было смотреть по бокам.
Вот в этой дискуссии ребята обсуждают как раз схожий вопрос, но конуретных решений, кроме аппаратных не озвучивают, хотя пишут, что всё просто. В видео-примере там как раз то, что я пытаюсь реализовать, но так, чтобы и геймпад работал тоже. https://www.reddit.com/r/OculusQuest/comments/bydxfm/cinemizer_headtracking_ble_to_add_headtracking_to/?sort=old
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ваууу! Спасибо огромное! Я сам никогда бы не додумался до всего этого, совершенно иной уровень знаний нужен. Доберусь до подопытного компьютера и отпишусь! Спасибо!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Привет! Я всё протестировал! Основная проблема в том, что виртуальный стик залипает в крайних положениях, но не всегда их доситигает. Как следствие камера реагирует непредсказуемо и не синхронно? жёсткой связи не получается( Я пробовал разные настройки таймера >50ms, но при маленьких значениях "стик" не достигает крайних положений, при слишком больших залипает в крайних положениях. Режим экспорта датчиков Mouse Mode в OpenTrack или Trinus, к примеру работает абсолютно синхронно, как-то же там пересчитываются координаты датчиков в координаты положения камеры ? Насколько я понимаю, при управлении стиком вообще заложена инерция камеры за счёт разных степеней наклона. Если стик отклонён НЕ в крайнее положение, то камера реагирует медленно и т.д. Градация. Как соотнести скорость поворота головы с углом наклона стика не понятно. В этом плане мышь абсолютно адекватно связывает перемещение головы и камеры. Нельзя как-то использовать мышиный алгоритм и реализовать его одновременно с геймпадом? Может, не через стик, а как-то ещё? Прошу прощения за бред, если что)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello! Thanks for the amazing software! Could you explain please how is it possible to combine axes from mouse with right stick of xBox360 gamepad? Not just remap mouse to stick, but use it at the same time? It needs for head-control camera view in VR by FreePie protocol, but with possibility to conrol it just with gamepad simultaneously. Thanx!
Okey, i have combined axes from mouse and right stick of my x360 gamepad. But i cant to manage enough usability of mouse like right stick has. If i move mouse left, camera in game turns left (it is ok) but if i move mouse othe direction , camera still turns left. It needs moving alot to forse camera move in properly direction. How to set it properly that mouse works works like ever in games?
Thanks! this is my settings.
System.Version = 4199
System.FirstRun = FALSE
IO.Physical.Keyboard.Enabled = TRUE
IO.Physical.Keyboard.LockFeature = FALSE
IO.Physical.Keyboard.EntireDeviceLock = FALSE
IO.Physical.Keyboard.API = 1
IO.Physical.Mouse.Enabled = TRUE
IO.Physical.Mouse.LockFeature = TRUE
IO.Physical.Mouse.EntireDeviceLock = FALSE
IO.Physical.Mouse.TimeInterval = 50
IO.Physical.Mouse.API = 1
IO.Physical.GameController.Enabled = TRUE
IO.Physical.GameController.TimeInterval = 50
IO.Physical.GameController.API = 3
IO.Internal.NetJoy.Server.Enabled = FALSE
IO.Internal.NetJoy.Server.LocalPort = 6060
IO.Internal.NetJoy.Server.Protocol = 0
IO.Internal.NetJoy.Server.AddressFamily = 0
IO.Internal.NetJoy.Server.DeviceCount = 0
IO.Internal.Timers.Enabled = FALSE
IO.Internal.Timers.Count = 0
IO.Internal.Calculator.Enabled = FALSE
IO.Internal.Calculator.Count = 0
IO.Internal.Joystick.Enabled = FALSE
IO.Internal.Joystick.Count = 0
IO.Internal.NetJoy.Client.Enabled = FALSE
IO.Internal.NetJoy.Client.DeviceCount = 0
IO.Virtual.vJoy.Enabled = FALSE
IO.Virtual.vXbox360.Enabled = TRUE
IO.Virtual.vXbox360.Device1.Enabled = TRUE
IO.Virtual.vXbox360.Device2.Enabled = FALSE
IO.Virtual.vXbox360.Device3.Enabled = FALSE
IO.Virtual.vXbox360.Device4.Enabled = FALSE
IO.Virtual.vKeyboard.Enabled = FALSE
IO.Virtual.vMouse.Enabled = FALSE
Binding.Count = 50
Binding.Bind0.Input.Device.Number = 9052406270241038766
Binding.Bind0.Input.Device.DeviceType = 3
Binding.Bind0.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind0.Input.Control = 1
Binding.Bind0.Input.Modifier = 1
Binding.Bind0.Input.Number = 8
Binding.Bind0.Input.UseInput = FALSE
Binding.Bind0.Input.CustomValueType = 0
Binding.Bind0.Output.Device.Number = 1
Binding.Bind0.Output.Device.DeviceType = 5
Binding.Bind0.Output.Device.Name = "vXbox 1"
Binding.Bind0.Output.Control = 1
Binding.Bind0.Output.Modifier = 1
Binding.Bind0.Output.Number = 16
Binding.Bind0.Output.Value1 = 0
Binding.Bind0.Output.Value2 = 0
Binding.Bind0.Output.UseInput = FALSE
Binding.Bind0.Output.CustomValueType = 0
Binding.Bind0.Id = 0
Binding.Bind1.Input.Device.Number = 9052406270241038766
Binding.Bind1.Input.Device.DeviceType = 3
Binding.Bind1.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind1.Input.Control = 1
Binding.Bind1.Input.Modifier = 252
Binding.Bind1.Input.Number = 8
Binding.Bind1.Input.UseInput = FALSE
Binding.Bind1.Input.CustomValueType = 0
Binding.Bind1.Output.Device.Number = 1
Binding.Bind1.Output.Device.DeviceType = 5
Binding.Bind1.Output.Device.Name = "vXbox 1"
Binding.Bind1.Output.Control = 1
Binding.Bind1.Output.Modifier = 252
Binding.Bind1.Output.Number = 16
Binding.Bind1.Output.Value1 = 0
Binding.Bind1.Output.Value2 = 0
Binding.Bind1.Output.UseInput = FALSE
Binding.Bind1.Output.CustomValueType = 0
Binding.Bind1.Id = 1
Binding.Bind2.Input.Device.Number = 9052406270241038766
Binding.Bind2.Input.Device.DeviceType = 3
Binding.Bind2.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind2.Input.Control = 1
Binding.Bind2.Input.Modifier = 1
Binding.Bind2.Input.Number = 7
Binding.Bind2.Input.UseInput = FALSE
Binding.Bind2.Input.CustomValueType = 0
Binding.Bind2.Output.Device.Number = 1
Binding.Bind2.Output.Device.DeviceType = 5
Binding.Bind2.Output.Device.Name = "vXbox 1"
Binding.Bind2.Output.Control = 1
Binding.Bind2.Output.Modifier = 1
Binding.Bind2.Output.Number = 32
Binding.Bind2.Output.Value1 = 0
Binding.Bind2.Output.Value2 = 0
Binding.Bind2.Output.UseInput = FALSE
Binding.Bind2.Output.CustomValueType = 0
Binding.Bind2.Id = 2
Binding.Bind3.Input.Device.Number = 9052406270241038766
Binding.Bind3.Input.Device.DeviceType = 3
Binding.Bind3.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind3.Input.Control = 1
Binding.Bind3.Input.Modifier = 252
Binding.Bind3.Input.Number = 7
Binding.Bind3.Input.UseInput = FALSE
Binding.Bind3.Input.CustomValueType = 0
Binding.Bind3.Output.Device.Number = 1
Binding.Bind3.Output.Device.DeviceType = 5
Binding.Bind3.Output.Device.Name = "vXbox 1"
Binding.Bind3.Output.Control = 1
Binding.Bind3.Output.Modifier = 252
Binding.Bind3.Output.Number = 32
Binding.Bind3.Output.Value1 = 0
Binding.Bind3.Output.Value2 = 0
Binding.Bind3.Output.UseInput = FALSE
Binding.Bind3.Output.CustomValueType = 0
Binding.Bind3.Id = 3
Binding.Bind4.Input.Device.Number = 9052406270241038766
Binding.Bind4.Input.Device.DeviceType = 3
Binding.Bind4.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind4.Input.Control = 1
Binding.Bind4.Input.Modifier = 1
Binding.Bind4.Input.Number = 9
Binding.Bind4.Input.UseInput = FALSE
Binding.Bind4.Input.CustomValueType = 0
Binding.Bind4.Output.Device.Number = 1
Binding.Bind4.Output.Device.DeviceType = 5
Binding.Bind4.Output.Device.Name = "vXbox 1"
Binding.Bind4.Output.Control = 1
Binding.Bind4.Output.Modifier = 1
Binding.Bind4.Output.Number = 64
Binding.Bind4.Output.Value1 = 0
Binding.Bind4.Output.Value2 = 0
Binding.Bind4.Output.UseInput = FALSE
Binding.Bind4.Output.CustomValueType = 0
Binding.Bind4.Id = 4
Binding.Bind5.Input.Device.Number = 9052406270241038766
Binding.Bind5.Input.Device.DeviceType = 3
Binding.Bind5.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind5.Input.Control = 1
Binding.Bind5.Input.Modifier = 252
Binding.Bind5.Input.Number = 9
Binding.Bind5.Input.UseInput = FALSE
Binding.Bind5.Input.CustomValueType = 0
Binding.Bind5.Output.Device.Number = 1
Binding.Bind5.Output.Device.DeviceType = 5
Binding.Bind5.Output.Device.Name = "vXbox 1"
Binding.Bind5.Output.Control = 1
Binding.Bind5.Output.Modifier = 252
Binding.Bind5.Output.Number = 64
Binding.Bind5.Output.Value1 = 0
Binding.Bind5.Output.Value2 = 0
Binding.Bind5.Output.UseInput = FALSE
Binding.Bind5.Output.CustomValueType = 0
Binding.Bind5.Id = 5
Binding.Bind6.Input.Device.Number = 9052406270241038766
Binding.Bind6.Input.Device.DeviceType = 3
Binding.Bind6.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind6.Input.Control = 1
Binding.Bind6.Input.Modifier = 1
Binding.Bind6.Input.Number = 10
Binding.Bind6.Input.UseInput = FALSE
Binding.Bind6.Input.CustomValueType = 0
Binding.Bind6.Output.Device.Number = 1
Binding.Bind6.Output.Device.DeviceType = 5
Binding.Bind6.Output.Device.Name = "vXbox 1"
Binding.Bind6.Output.Control = 1
Binding.Bind6.Output.Modifier = 1
Binding.Bind6.Output.Number = 128
Binding.Bind6.Output.Value1 = 0
Binding.Bind6.Output.Value2 = 0
Binding.Bind6.Output.UseInput = FALSE
Binding.Bind6.Output.CustomValueType = 0
Binding.Bind6.Id = 6
Binding.Bind7.Input.Device.Number = 9052406270241038766
Binding.Bind7.Input.Device.DeviceType = 3
Binding.Bind7.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind7.Input.Control = 1
Binding.Bind7.Input.Modifier = 252
Binding.Bind7.Input.Number = 10
Binding.Bind7.Input.UseInput = FALSE
Binding.Bind7.Input.CustomValueType = 0
Binding.Bind7.Output.Device.Number = 1
Binding.Bind7.Output.Device.DeviceType = 5
Binding.Bind7.Output.Device.Name = "vXbox 1"
Binding.Bind7.Output.Control = 1
Binding.Bind7.Output.Modifier = 252
Binding.Bind7.Output.Number = 128
Binding.Bind7.Output.Value1 = 0
Binding.Bind7.Output.Value2 = 0
Binding.Bind7.Output.UseInput = FALSE
Binding.Bind7.Output.CustomValueType = 0
Binding.Bind7.Id = 7
Binding.Bind8.Input.Device.Number = 9052406270241038766
Binding.Bind8.Input.Device.DeviceType = 3
Binding.Bind8.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind8.Input.Control = 1
Binding.Bind8.Input.Modifier = 1
Binding.Bind8.Input.Number = 5
Binding.Bind8.Input.UseInput = FALSE
Binding.Bind8.Input.CustomValueType = 0
Binding.Bind8.Output.Device.Number = 1
Binding.Bind8.Output.Device.DeviceType = 5
Binding.Bind8.Output.Device.Name = "vXbox 1"
Binding.Bind8.Output.Control = 1
Binding.Bind8.Output.Modifier = 1
Binding.Bind8.Output.Number = 256
Binding.Bind8.Output.Value1 = 0
Binding.Bind8.Output.Value2 = 0
Binding.Bind8.Output.UseInput = FALSE
Binding.Bind8.Output.CustomValueType = 0
Binding.Bind8.Id = 8
Binding.Bind9.Input.Device.Number = 9052406270241038766
Binding.Bind9.Input.Device.DeviceType = 3
Binding.Bind9.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind9.Input.Control = 1
Binding.Bind9.Input.Modifier = 252
Binding.Bind9.Input.Number = 5
Binding.Bind9.Input.UseInput = FALSE
Binding.Bind9.Input.CustomValueType = 0
Binding.Bind9.Output.Device.Number = 1
Binding.Bind9.Output.Device.DeviceType = 5
Binding.Bind9.Output.Device.Name = "vXbox 1"
Binding.Bind9.Output.Control = 1
Binding.Bind9.Output.Modifier = 252
Binding.Bind9.Output.Number = 256
Binding.Bind9.Output.Value1 = 0
Binding.Bind9.Output.Value2 = 0
Binding.Bind9.Output.UseInput = FALSE
Binding.Bind9.Output.CustomValueType = 0
Binding.Bind9.Id = 9
Binding.Bind10.Input.Device.Number = 9052406270241038766
Binding.Bind10.Input.Device.DeviceType = 3
Binding.Bind10.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind10.Input.Control = 1
Binding.Bind10.Input.Modifier = 1
Binding.Bind10.Input.Number = 6
Binding.Bind10.Input.UseInput = FALSE
Binding.Bind10.Input.CustomValueType = 0
Binding.Bind10.Output.Device.Number = 1
Binding.Bind10.Output.Device.DeviceType = 5
Binding.Bind10.Output.Device.Name = "vXbox 1"
Binding.Bind10.Output.Control = 1
Binding.Bind10.Output.Modifier = 1
Binding.Bind10.Output.Number = 512
Binding.Bind10.Output.Value1 = 0
Binding.Bind10.Output.Value2 = 0
Binding.Bind10.Output.UseInput = FALSE
Binding.Bind10.Output.CustomValueType = 0
Binding.Bind10.Id = 10
Binding.Bind11.Input.Device.Number = 9052406270241038766
Binding.Bind11.Input.Device.DeviceType = 3
Binding.Bind11.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind11.Input.Control = 1
Binding.Bind11.Input.Modifier = 252
Binding.Bind11.Input.Number = 6
Binding.Bind11.Input.UseInput = FALSE
Binding.Bind11.Input.CustomValueType = 0
Binding.Bind11.Output.Device.Number = 1
Binding.Bind11.Output.Device.DeviceType = 5
Binding.Bind11.Output.Device.Name = "vXbox 1"
Binding.Bind11.Output.Control = 1
Binding.Bind11.Output.Modifier = 252
Binding.Bind11.Output.Number = 512
Binding.Bind11.Output.Value1 = 0
Binding.Bind11.Output.Value2 = 0
Binding.Bind11.Output.UseInput = FALSE
Binding.Bind11.Output.CustomValueType = 0
Binding.Bind11.Id = 11
Binding.Bind12.Input.Device.Number = 9052406270241038766
Binding.Bind12.Input.Device.DeviceType = 3
Binding.Bind12.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind12.Input.Control = 1
Binding.Bind12.Input.Modifier = 1
Binding.Bind12.Input.Number = 1
Binding.Bind12.Input.UseInput = FALSE
Binding.Bind12.Input.CustomValueType = 0
Binding.Bind12.Output.Device.Number = 1
Binding.Bind12.Output.Device.DeviceType = 5
Binding.Bind12.Output.Device.Name = "vXbox 1"
Binding.Bind12.Output.Control = 1
Binding.Bind12.Output.Modifier = 1
Binding.Bind12.Output.Number = 4096
Binding.Bind12.Output.Value1 = 0
Binding.Bind12.Output.Value2 = 0
Binding.Bind12.Output.UseInput = FALSE
Binding.Bind12.Output.CustomValueType = 0
Binding.Bind12.Id = 12
Binding.Bind13.Input.Device.Number = 9052406270241038766
Binding.Bind13.Input.Device.DeviceType = 3
Binding.Bind13.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind13.Input.Control = 1
Binding.Bind13.Input.Modifier = 252
Binding.Bind13.Input.Number = 1
Binding.Bind13.Input.UseInput = FALSE
Binding.Bind13.Input.CustomValueType = 0
Binding.Bind13.Output.Device.Number = 1
Binding.Bind13.Output.Device.DeviceType = 5
Binding.Bind13.Output.Device.Name = "vXbox 1"
Binding.Bind13.Output.Control = 1
Binding.Bind13.Output.Modifier = 252
Binding.Bind13.Output.Number = 4096
Binding.Bind13.Output.Value1 = 0
Binding.Bind13.Output.Value2 = 0
Binding.Bind13.Output.UseInput = FALSE
Binding.Bind13.Output.CustomValueType = 0
Binding.Bind13.Id = 13
Binding.Bind14.Input.Device.Number = 9052406270241038766
Binding.Bind14.Input.Device.DeviceType = 3
Binding.Bind14.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind14.Input.Control = 1
Binding.Bind14.Input.Modifier = 1
Binding.Bind14.Input.Number = 2
Binding.Bind14.Input.UseInput = FALSE
Binding.Bind14.Input.CustomValueType = 0
Binding.Bind14.Output.Device.Number = 1
Binding.Bind14.Output.Device.DeviceType = 5
Binding.Bind14.Output.Device.Name = "vXbox 1"
Binding.Bind14.Output.Control = 1
Binding.Bind14.Output.Modifier = 1
Binding.Bind14.Output.Number = 8192
Binding.Bind14.Output.Value1 = 0
Binding.Bind14.Output.Value2 = 0
Binding.Bind14.Output.UseInput = FALSE
Binding.Bind14.Output.CustomValueType = 0
Binding.Bind14.Id = 14
Binding.Bind15.Input.Device.Number = 9052406270241038766
Binding.Bind15.Input.Device.DeviceType = 3
Binding.Bind15.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind15.Input.Control = 1
Binding.Bind15.Input.Modifier = 252
Binding.Bind15.Input.Number = 2
Binding.Bind15.Input.UseInput = FALSE
Binding.Bind15.Input.CustomValueType = 0
Binding.Bind15.Output.Device.Number = 1
Binding.Bind15.Output.Device.DeviceType = 5
Binding.Bind15.Output.Device.Name = "vXbox 1"
Binding.Bind15.Output.Control = 1
Binding.Bind15.Output.Modifier = 252
Binding.Bind15.Output.Number = 8192
Binding.Bind15.Output.Value1 = 0
Binding.Bind15.Output.Value2 = 0
Binding.Bind15.Output.UseInput = FALSE
Binding.Bind15.Output.CustomValueType = 0
Binding.Bind15.Id = 15
Binding.Bind16.Input.Device.Number = 9052406270241038766
Binding.Bind16.Input.Device.DeviceType = 3
Binding.Bind16.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind16.Input.Control = 1
Binding.Bind16.Input.Modifier = 1
Binding.Bind16.Input.Number = 3
Binding.Bind16.Input.UseInput = FALSE
Binding.Bind16.Input.CustomValueType = 0
Binding.Bind16.Output.Device.Number = 1
Binding.Bind16.Output.Device.DeviceType = 5
Binding.Bind16.Output.Device.Name = "vXbox 1"
Binding.Bind16.Output.Control = 1
Binding.Bind16.Output.Modifier = 1
Binding.Bind16.Output.Number = 16384
Binding.Bind16.Output.Value1 = 0
Binding.Bind16.Output.Value2 = 0
Binding.Bind16.Output.UseInput = FALSE
Binding.Bind16.Output.CustomValueType = 0
Binding.Bind16.Id = 16
Binding.Bind17.Input.Device.Number = 9052406270241038766
Binding.Bind17.Input.Device.DeviceType = 3
Binding.Bind17.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind17.Input.Control = 1
Binding.Bind17.Input.Modifier = 252
Binding.Bind17.Input.Number = 3
Binding.Bind17.Input.UseInput = FALSE
Binding.Bind17.Input.CustomValueType = 0
Binding.Bind17.Output.Device.Number = 1
Binding.Bind17.Output.Device.DeviceType = 5
Binding.Bind17.Output.Device.Name = "vXbox 1"
Binding.Bind17.Output.Control = 1
Binding.Bind17.Output.Modifier = 252
Binding.Bind17.Output.Number = 16384
Binding.Bind17.Output.Value1 = 0
Binding.Bind17.Output.Value2 = 0
Binding.Bind17.Output.UseInput = FALSE
Binding.Bind17.Output.CustomValueType = 0
Binding.Bind17.Id = 17
Binding.Bind18.Input.Device.Number = 9052406270241038766
Binding.Bind18.Input.Device.DeviceType = 3
Binding.Bind18.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind18.Input.Control = 1
Binding.Bind18.Input.Modifier = 1
Binding.Bind18.Input.Number = 4
Binding.Bind18.Input.UseInput = FALSE
Binding.Bind18.Input.CustomValueType = 0
Binding.Bind18.Output.Device.Number = 1
Binding.Bind18.Output.Device.DeviceType = 5
Binding.Bind18.Output.Device.Name = "vXbox 1"
Binding.Bind18.Output.Control = 1
Binding.Bind18.Output.Modifier = 1
Binding.Bind18.Output.Number = 32768
Binding.Bind18.Output.Value1 = 0
Binding.Bind18.Output.Value2 = 0
Binding.Bind18.Output.UseInput = FALSE
Binding.Bind18.Output.CustomValueType = 0
Binding.Bind18.Id = 18
Binding.Bind19.Input.Device.Number = 9052406270241038766
Binding.Bind19.Input.Device.DeviceType = 3
Binding.Bind19.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind19.Input.Control = 1
Binding.Bind19.Input.Modifier = 252
Binding.Bind19.Input.Number = 4
Binding.Bind19.Input.UseInput = FALSE
Binding.Bind19.Input.CustomValueType = 0
Binding.Bind19.Output.Device.Number = 1
Binding.Bind19.Output.Device.DeviceType = 5
Binding.Bind19.Output.Device.Name = "vXbox 1"
Binding.Bind19.Output.Control = 1
Binding.Bind19.Output.Modifier = 252
Binding.Bind19.Output.Number = 32768
Binding.Bind19.Output.Value1 = 0
Binding.Bind19.Output.Value2 = 0
Binding.Bind19.Output.UseInput = FALSE
Binding.Bind19.Output.CustomValueType = 0
Binding.Bind19.Id = 19
Binding.Bind20.Input.Device.Number = 9052406270241038766
Binding.Bind20.Input.Device.DeviceType = 3
Binding.Bind20.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind20.Input.Control = 2
Binding.Bind20.Input.Modifier = 34
Binding.Bind20.Input.Number = 48
Binding.Bind20.Input.UseInput = FALSE
Binding.Bind20.Input.CustomValueType = 0
Binding.Bind20.Output.Device.Number = 1
Binding.Bind20.Output.Device.DeviceType = 5
Binding.Bind20.Output.Device.Name = "vXbox 1"
Binding.Bind20.Output.Control = 2
Binding.Bind20.Output.Modifier = 21
Binding.Bind20.Output.Number = 48
Binding.Bind20.Output.Value1 = 1
Binding.Bind20.Output.Value2 = 0
Binding.Bind20.Output.UseInput = TRUE
Binding.Bind20.Output.CustomValueType = 0
Binding.Bind20.Id = 20
Binding.Bind21.Input.Device.Number = 9052406270241038766
Binding.Bind21.Input.Device.DeviceType = 3
Binding.Bind21.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind21.Input.Control = 2
Binding.Bind21.Input.Modifier = 35
Binding.Bind21.Input.Number = 48
Binding.Bind21.Input.UseInput = FALSE
Binding.Bind21.Input.CustomValueType = 0
Binding.Bind21.Output.Device.Number = 1
Binding.Bind21.Output.Device.DeviceType = 5
Binding.Bind21.Output.Device.Name = "vXbox 1"
Binding.Bind21.Output.Control = 2
Binding.Bind21.Output.Modifier = 21
Binding.Bind21.Output.Number = 48
Binding.Bind21.Output.Value1 = -1
Binding.Bind21.Output.Value2 = 0
Binding.Bind21.Output.UseInput = TRUE
Binding.Bind21.Output.CustomValueType = 0
Binding.Bind21.Id = 21
Binding.Bind22.Input.Device.Number = 9052406270241038766
Binding.Bind22.Input.Device.DeviceType = 3
Binding.Bind22.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind22.Input.Control = 2
Binding.Bind22.Input.Modifier = 252
Binding.Bind22.Input.Number = 48
Binding.Bind22.Input.UseInput = FALSE
Binding.Bind22.Input.CustomValueType = 0
Binding.Bind22.Output.Device.Number = 1
Binding.Bind22.Output.Device.DeviceType = 5
Binding.Bind22.Output.Device.Name = "vXbox 1"
Binding.Bind22.Output.Control = 2
Binding.Bind22.Output.Modifier = 252
Binding.Bind22.Output.Number = 48
Binding.Bind22.Output.Value1 = 0
Binding.Bind22.Output.Value2 = 0
Binding.Bind22.Output.UseInput = FALSE
Binding.Bind22.Output.CustomValueType = 0
Binding.Bind22.Id = 22
Binding.Bind23.Input.Device.Number = 9052406270241038766
Binding.Bind23.Input.Device.DeviceType = 3
Binding.Bind23.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind23.Input.Control = 2
Binding.Bind23.Input.Modifier = 35
Binding.Bind23.Input.Number = 49
Binding.Bind23.Input.UseInput = FALSE
Binding.Bind23.Input.CustomValueType = 0
Binding.Bind23.Output.Device.Number = 1
Binding.Bind23.Output.Device.DeviceType = 5
Binding.Bind23.Output.Device.Name = "vXbox 1"
Binding.Bind23.Output.Control = 2
Binding.Bind23.Output.Modifier = 21
Binding.Bind23.Output.Number = 49
Binding.Bind23.Output.Value1 = 1
Binding.Bind23.Output.Value2 = 0
Binding.Bind23.Output.UseInput = TRUE
Binding.Bind23.Output.CustomValueType = 0
Binding.Bind23.Id = 23
Binding.Bind24.Input.Device.Number = 9052406270241038766
Binding.Bind24.Input.Device.DeviceType = 3
Binding.Bind24.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind24.Input.Control = 2
Binding.Bind24.Input.Modifier = 34
Binding.Bind24.Input.Number = 49
Binding.Bind24.Input.UseInput = FALSE
Binding.Bind24.Input.CustomValueType = 0
Binding.Bind24.Output.Device.Number = 1
Binding.Bind24.Output.Device.DeviceType = 5
Binding.Bind24.Output.Device.Name = "vXbox 1"
Binding.Bind24.Output.Control = 2
Binding.Bind24.Output.Modifier = 21
Binding.Bind24.Output.Number = 49
Binding.Bind24.Output.Value1 = -1
Binding.Bind24.Output.Value2 = 0
Binding.Bind24.Output.UseInput = TRUE
Binding.Bind24.Output.CustomValueType = 0
Binding.Bind24.Id = 24
Binding.Bind25.Input.Device.Number = 9052406270241038766
Binding.Bind25.Input.Device.DeviceType = 3
Binding.Bind25.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind25.Input.Control = 2
Binding.Bind25.Input.Modifier = 252
Binding.Bind25.Input.Number = 49
Binding.Bind25.Input.UseInput = FALSE
Binding.Bind25.Input.CustomValueType = 0
Binding.Bind25.Output.Device.Number = 1
Binding.Bind25.Output.Device.DeviceType = 5
Binding.Bind25.Output.Device.Name = "vXbox 1"
Binding.Bind25.Output.Control = 2
Binding.Bind25.Output.Modifier = 252
Binding.Bind25.Output.Number = 49
Binding.Bind25.Output.Value1 = 0
Binding.Bind25.Output.Value2 = 0
Binding.Bind25.Output.UseInput = FALSE
Binding.Bind25.Output.CustomValueType = 0
Binding.Bind25.Id = 25
Binding.Bind26.Input.Device.Number = 9052406270241038766
Binding.Bind26.Input.Device.DeviceType = 3
Binding.Bind26.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind26.Input.Control = 2
Binding.Bind26.Input.Modifier = 34
Binding.Bind26.Input.Number = 50
Binding.Bind26.Input.UseInput = FALSE
Binding.Bind26.Input.CustomValueType = 0
Binding.Bind26.Output.Device.Number = 1
Binding.Bind26.Output.Device.DeviceType = 5
Binding.Bind26.Output.Device.Name = "vXbox 1"
Binding.Bind26.Output.Control = 2
Binding.Bind26.Output.Modifier = 21
Binding.Bind26.Output.Number = 50
Binding.Bind26.Output.Value1 = 1.2
Binding.Bind26.Output.Value2 = 0
Binding.Bind26.Output.UseInput = TRUE
Binding.Bind26.Output.CustomValueType = 0
Binding.Bind26.Id = 26
Binding.Bind27.Input.Device.Number = 9052406270241038766
Binding.Bind27.Input.Device.DeviceType = 3
Binding.Bind27.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind27.Input.Control = 2
Binding.Bind27.Input.Modifier = 252
Binding.Bind27.Input.Number = 50
Binding.Bind27.Input.UseInput = FALSE
Binding.Bind27.Input.CustomValueType = 0
Binding.Bind27.Output.Device.Number = 1
Binding.Bind27.Output.Device.DeviceType = 5
Binding.Bind27.Output.Device.Name = "vXbox 1"
Binding.Bind27.Output.Control = 2
Binding.Bind27.Output.Modifier = 252
Binding.Bind27.Output.Number = 50
Binding.Bind27.Output.Value1 = 0
Binding.Bind27.Output.Value2 = 0
Binding.Bind27.Output.UseInput = FALSE
Binding.Bind27.Output.CustomValueType = 0
Binding.Bind27.Id = 27
Binding.Bind28.Input.Device.Number = 0
Binding.Bind28.Input.Device.DeviceType = 2
Binding.Bind28.Input.Device.Name = "Mouse"
Binding.Bind28.Input.Control = 2
Binding.Bind28.Input.Modifier = 34
Binding.Bind28.Input.Number = 51
Binding.Bind28.Input.UseInput = FALSE
Binding.Bind28.Input.CustomValueType = 0
Binding.Bind28.Output.Device.Number = 1
Binding.Bind28.Output.Device.DeviceType = 5
Binding.Bind28.Output.Device.Name = "vXbox 1"
Binding.Bind28.Output.Control = 2
Binding.Bind28.Output.Modifier = 21
Binding.Bind28.Output.Number = 51
Binding.Bind28.Output.Value1 = 1
Binding.Bind28.Output.Value2 = 0
Binding.Bind28.Output.UseInput = TRUE
Binding.Bind28.Output.CustomValueType = 0
Binding.Bind28.Id = 28
Binding.Bind29.Input.Device.Number = 0
Binding.Bind29.Input.Device.DeviceType = 2
Binding.Bind29.Input.Device.Name = "Mouse"
Binding.Bind29.Input.Control = 2
Binding.Bind29.Input.Modifier = 35
Binding.Bind29.Input.Number = 51
Binding.Bind29.Input.UseInput = FALSE
Binding.Bind29.Input.CustomValueType = 0
Binding.Bind29.Output.Device.Number = 1
Binding.Bind29.Output.Device.DeviceType = 5
Binding.Bind29.Output.Device.Name = "vXbox 1"
Binding.Bind29.Output.Control = 2
Binding.Bind29.Output.Modifier = 21
Binding.Bind29.Output.Number = 51
Binding.Bind29.Output.Value1 = -1
Binding.Bind29.Output.Value2 = 0
Binding.Bind29.Output.UseInput = TRUE
Binding.Bind29.Output.CustomValueType = 0
Binding.Bind29.Id = 29
Binding.Bind30.Input.Device.Number = 0
Binding.Bind30.Input.Device.DeviceType = 2
Binding.Bind30.Input.Device.Name = "Mouse"
Binding.Bind30.Input.Control = 2
Binding.Bind30.Input.Modifier = 252
Binding.Bind30.Input.Number = 51
Binding.Bind30.Input.UseInput = FALSE
Binding.Bind30.Input.CustomValueType = 0
Binding.Bind30.Output.Device.Number = 1
Binding.Bind30.Output.Device.DeviceType = 5
Binding.Bind30.Output.Device.Name = "vXbox 1"
Binding.Bind30.Output.Control = 2
Binding.Bind30.Output.Modifier = 252
Binding.Bind30.Output.Number = 51
Binding.Bind30.Output.Value1 = 0
Binding.Bind30.Output.Value2 = 0
Binding.Bind30.Output.UseInput = FALSE
Binding.Bind30.Output.CustomValueType = 0
Binding.Bind30.Id = 30
Binding.Bind31.Input.Device.Number = 0
Binding.Bind31.Input.Device.DeviceType = 2
Binding.Bind31.Input.Device.Name = "Mouse"
Binding.Bind31.Input.Control = 2
Binding.Bind31.Input.Modifier = 35
Binding.Bind31.Input.Number = 52
Binding.Bind31.Input.UseInput = FALSE
Binding.Bind31.Input.CustomValueType = 0
Binding.Bind31.Output.Device.Number = 1
Binding.Bind31.Output.Device.DeviceType = 5
Binding.Bind31.Output.Device.Name = "vXbox 1"
Binding.Bind31.Output.Control = 2
Binding.Bind31.Output.Modifier = 21
Binding.Bind31.Output.Number = 52
Binding.Bind31.Output.Value1 = 1
Binding.Bind31.Output.Value2 = 0
Binding.Bind31.Output.UseInput = TRUE
Binding.Bind31.Output.CustomValueType = 0
Binding.Bind31.Id = 31
Binding.Bind32.Input.Device.Number = 0
Binding.Bind32.Input.Device.DeviceType = 2
Binding.Bind32.Input.Device.Name = "Mouse"
Binding.Bind32.Input.Control = 2
Binding.Bind32.Input.Modifier = 34
Binding.Bind32.Input.Number = 52
Binding.Bind32.Input.UseInput = FALSE
Binding.Bind32.Input.CustomValueType = 0
Binding.Bind32.Output.Device.Number = 1
Binding.Bind32.Output.Device.DeviceType = 5
Binding.Bind32.Output.Device.Name = "vXbox 1"
Binding.Bind32.Output.Control = 2
Binding.Bind32.Output.Modifier = 21
Binding.Bind32.Output.Number = 52
Binding.Bind32.Output.Value1 = -1
Binding.Bind32.Output.Value2 = 0
Binding.Bind32.Output.UseInput = TRUE
Binding.Bind32.Output.CustomValueType = 0
Binding.Bind32.Id = 32
Binding.Bind33.Input.Device.Number = 0
Binding.Bind33.Input.Device.DeviceType = 2
Binding.Bind33.Input.Device.Name = "Mouse"
Binding.Bind33.Input.Control = 2
Binding.Bind33.Input.Modifier = 252
Binding.Bind33.Input.Number = 52
Binding.Bind33.Input.UseInput = FALSE
Binding.Bind33.Input.CustomValueType = 0
Binding.Bind33.Output.Device.Number = 1
Binding.Bind33.Output.Device.DeviceType = 5
Binding.Bind33.Output.Device.Name = "vXbox 1"
Binding.Bind33.Output.Control = 2
Binding.Bind33.Output.Modifier = 252
Binding.Bind33.Output.Number = 52
Binding.Bind33.Output.Value1 = 0
Binding.Bind33.Output.Value2 = 0
Binding.Bind33.Output.UseInput = FALSE
Binding.Bind33.Output.CustomValueType = 0
Binding.Bind33.Id = 33
Binding.Bind34.Input.Device.Number = 9052406270241038766
Binding.Bind34.Input.Device.DeviceType = 3
Binding.Bind34.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind34.Input.Control = 2
Binding.Bind34.Input.Modifier = 35
Binding.Bind34.Input.Number = 50
Binding.Bind34.Input.UseInput = FALSE
Binding.Bind34.Input.CustomValueType = 0
Binding.Bind34.Output.Device.Number = 1
Binding.Bind34.Output.Device.DeviceType = 5
Binding.Bind34.Output.Device.Name = "vXbox 1"
Binding.Bind34.Output.Control = 2
Binding.Bind34.Output.Modifier = 21
Binding.Bind34.Output.Number = 53
Binding.Bind34.Output.Value1 = 1.2
Binding.Bind34.Output.Value2 = 0
Binding.Bind34.Output.UseInput = TRUE
Binding.Bind34.Output.CustomValueType = 0
Binding.Bind34.Id = 34
Binding.Bind35.Input.Device.Number = 9052406270241038766
Binding.Bind35.Input.Device.DeviceType = 3
Binding.Bind35.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind35.Input.Control = 2
Binding.Bind35.Input.Modifier = 252
Binding.Bind35.Input.Number = 50
Binding.Bind35.Input.UseInput = FALSE
Binding.Bind35.Input.CustomValueType = 0
Binding.Bind35.Output.Device.Number = 1
Binding.Bind35.Output.Device.DeviceType = 5
Binding.Bind35.Output.Device.Name = "vXbox 1"
Binding.Bind35.Output.Control = 2
Binding.Bind35.Output.Modifier = 252
Binding.Bind35.Output.Number = 53
Binding.Bind35.Output.Value1 = 0
Binding.Bind35.Output.Value2 = 0
Binding.Bind35.Output.UseInput = FALSE
Binding.Bind35.Output.CustomValueType = 0
Binding.Bind35.Id = 35
Binding.Bind36.Input.Device.Number = 9052406270241038766
Binding.Bind36.Input.Device.DeviceType = 3
Binding.Bind36.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind36.Input.Control = 3
Binding.Bind36.Input.Modifier = 2
Binding.Bind36.Input.Number = 1
Binding.Bind36.Input.UseInput = FALSE
Binding.Bind36.Input.CustomValueType = 0
Binding.Bind36.Output.Device.Number = 1
Binding.Bind36.Output.Device.DeviceType = 5
Binding.Bind36.Output.Device.Name = "vXbox 1"
Binding.Bind36.Output.Control = 3
Binding.Bind36.Output.Modifier = 2
Binding.Bind36.Output.Number = 1
Binding.Bind36.Output.Value1 = 0
Binding.Bind36.Output.Value2 = 0
Binding.Bind36.Output.UseInput = FALSE
Binding.Bind36.Output.CustomValueType = 0
Binding.Bind36.Id = 36
Binding.Bind37.Input.Device.Number = 9052406270241038766
Binding.Bind37.Input.Device.DeviceType = 3
Binding.Bind37.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind37.Input.Control = 3
Binding.Bind37.Input.Modifier = 3
Binding.Bind37.Input.Number = 1
Binding.Bind37.Input.UseInput = FALSE
Binding.Bind37.Input.CustomValueType = 0
Binding.Bind37.Output.Device.Number = 1
Binding.Bind37.Output.Device.DeviceType = 5
Binding.Bind37.Output.Device.Name = "vXbox 1"
Binding.Bind37.Output.Control = 3
Binding.Bind37.Output.Modifier = 3
Binding.Bind37.Output.Number = 1
Binding.Bind37.Output.Value1 = 0
Binding.Bind37.Output.Value2 = 0
Binding.Bind37.Output.UseInput = FALSE
Binding.Bind37.Output.CustomValueType = 0
Binding.Bind37.Id = 37
Binding.Bind38.Input.Device.Number = 9052406270241038766
Binding.Bind38.Input.Device.DeviceType = 3
Binding.Bind38.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind38.Input.Control = 3
Binding.Bind38.Input.Modifier = 4
Binding.Bind38.Input.Number = 1
Binding.Bind38.Input.UseInput = FALSE
Binding.Bind38.Input.CustomValueType = 0
Binding.Bind38.Output.Device.Number = 1
Binding.Bind38.Output.Device.DeviceType = 5
Binding.Bind38.Output.Device.Name = "vXbox 1"
Binding.Bind38.Output.Control = 3
Binding.Bind38.Output.Modifier = 4
Binding.Bind38.Output.Number = 1
Binding.Bind38.Output.Value1 = 0
Binding.Bind38.Output.Value2 = 0
Binding.Bind38.Output.UseInput = FALSE
Binding.Bind38.Output.CustomValueType = 0
Binding.Bind38.Id = 38
Binding.Bind39.Input.Device.Number = 9052406270241038766
Binding.Bind39.Input.Device.DeviceType = 3
Binding.Bind39.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind39.Input.Control = 3
Binding.Bind39.Input.Modifier = 5
Binding.Bind39.Input.Number = 1
Binding.Bind39.Input.UseInput = FALSE
Binding.Bind39.Input.CustomValueType = 0
Binding.Bind39.Output.Device.Number = 1
Binding.Bind39.Output.Device.DeviceType = 5
Binding.Bind39.Output.Device.Name = "vXbox 1"
Binding.Bind39.Output.Control = 3
Binding.Bind39.Output.Modifier = 5
Binding.Bind39.Output.Number = 1
Binding.Bind39.Output.Value1 = 0
Binding.Bind39.Output.Value2 = 0
Binding.Bind39.Output.UseInput = FALSE
Binding.Bind39.Output.CustomValueType = 0
Binding.Bind39.Id = 39
Binding.Bind40.Input.Device.Number = 9052406270241038766
Binding.Bind40.Input.Device.DeviceType = 3
Binding.Bind40.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind40.Input.Control = 3
Binding.Bind40.Input.Modifier = 244
Binding.Bind40.Input.Number = 1
Binding.Bind40.Input.UseInput = FALSE
Binding.Bind40.Input.CustomValueType = 0
Binding.Bind40.Output.Device.Number = 1
Binding.Bind40.Output.Device.DeviceType = 5
Binding.Bind40.Output.Device.Name = "vXbox 1"
Binding.Bind40.Output.Control = 3
Binding.Bind40.Output.Modifier = 244
Binding.Bind40.Output.Number = 1
Binding.Bind40.Output.Value1 = 0
Binding.Bind40.Output.Value2 = 0
Binding.Bind40.Output.UseInput = FALSE
Binding.Bind40.Output.CustomValueType = 0
Binding.Bind40.Id = 40
Binding.Bind41.Input.Device.Number = 9052406270241038766
Binding.Bind41.Input.Device.DeviceType = 3
Binding.Bind41.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind41.Input.Control = 3
Binding.Bind41.Input.Modifier = 245
Binding.Bind41.Input.Number = 1
Binding.Bind41.Input.UseInput = FALSE
Binding.Bind41.Input.CustomValueType = 0
Binding.Bind41.Output.Device.Number = 1
Binding.Bind41.Output.Device.DeviceType = 5
Binding.Bind41.Output.Device.Name = "vXbox 1"
Binding.Bind41.Output.Control = 3
Binding.Bind41.Output.Modifier = 245
Binding.Bind41.Output.Number = 1
Binding.Bind41.Output.Value1 = 0
Binding.Bind41.Output.Value2 = 0
Binding.Bind41.Output.UseInput = FALSE
Binding.Bind41.Output.CustomValueType = 0
Binding.Bind41.Id = 41
Binding.Bind42.Input.Device.Number = 9052406270241038766
Binding.Bind42.Input.Device.DeviceType = 3
Binding.Bind42.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind42.Input.Control = 3
Binding.Bind42.Input.Modifier = 246
Binding.Bind42.Input.Number = 1
Binding.Bind42.Input.UseInput = FALSE
Binding.Bind42.Input.CustomValueType = 0
Binding.Bind42.Output.Device.Number = 1
Binding.Bind42.Output.Device.DeviceType = 5
Binding.Bind42.Output.Device.Name = "vXbox 1"
Binding.Bind42.Output.Control = 3
Binding.Bind42.Output.Modifier = 246
Binding.Bind42.Output.Number = 1
Binding.Bind42.Output.Value1 = 0
Binding.Bind42.Output.Value2 = 0
Binding.Bind42.Output.UseInput = FALSE
Binding.Bind42.Output.CustomValueType = 0
Binding.Bind42.Id = 42
Binding.Bind43.Input.Device.Number = 9052406270241038766
Binding.Bind43.Input.Device.DeviceType = 3
Binding.Bind43.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind43.Input.Control = 3
Binding.Bind43.Input.Modifier = 247
Binding.Bind43.Input.Number = 1
Binding.Bind43.Input.UseInput = FALSE
Binding.Bind43.Input.CustomValueType = 0
Binding.Bind43.Output.Device.Number = 1
Binding.Bind43.Output.Device.DeviceType = 5
Binding.Bind43.Output.Device.Name = "vXbox 1"
Binding.Bind43.Output.Control = 3
Binding.Bind43.Output.Modifier = 247
Binding.Bind43.Output.Number = 1
Binding.Bind43.Output.Value1 = 0
Binding.Bind43.Output.Value2 = 0
Binding.Bind43.Output.UseInput = FALSE
Binding.Bind43.Output.CustomValueType = 0
Binding.Bind43.Id = 43
Binding.Bind44.Input.Device.Number = 9052406270241038766
Binding.Bind44.Input.Device.DeviceType = 3
Binding.Bind44.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind44.Input.Control = 2
Binding.Bind44.Input.Modifier = 34
Binding.Bind44.Input.Number = 51
Binding.Bind44.Input.UseInput = FALSE
Binding.Bind44.Input.CustomValueType = 0
Binding.Bind44.Output.Device.Number = 1
Binding.Bind44.Output.Device.DeviceType = 5
Binding.Bind44.Output.Device.Name = "vXbox 1"
Binding.Bind44.Output.Control = 2
Binding.Bind44.Output.Modifier = 21
Binding.Bind44.Output.Number = 51
Binding.Bind44.Output.Value1 = 1
Binding.Bind44.Output.Value2 = 0
Binding.Bind44.Output.UseInput = TRUE
Binding.Bind44.Output.CustomValueType = 0
Binding.Bind44.Id = 44
Binding.Bind45.Input.Device.Number = 9052406270241038766
Binding.Bind45.Input.Device.DeviceType = 3
Binding.Bind45.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind45.Input.Control = 2
Binding.Bind45.Input.Modifier = 35
Binding.Bind45.Input.Number = 51
Binding.Bind45.Input.UseInput = FALSE
Binding.Bind45.Input.CustomValueType = 0
Binding.Bind45.Output.Device.Number = 1
Binding.Bind45.Output.Device.DeviceType = 5
Binding.Bind45.Output.Device.Name = "vXbox 1"
Binding.Bind45.Output.Control = 2
Binding.Bind45.Output.Modifier = 21
Binding.Bind45.Output.Number = 51
Binding.Bind45.Output.Value1 = -1
Binding.Bind45.Output.Value2 = 0
Binding.Bind45.Output.UseInput = TRUE
Binding.Bind45.Output.CustomValueType = 0
Binding.Bind45.Id = 45
Binding.Bind46.Input.Device.Number = 9052406270241038766
Binding.Bind46.Input.Device.DeviceType = 3
Binding.Bind46.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind46.Input.Control = 2
Binding.Bind46.Input.Modifier = 34
Binding.Bind46.Input.Number = 52
Binding.Bind46.Input.UseInput = FALSE
Binding.Bind46.Input.CustomValueType = 0
Binding.Bind46.Output.Device.Number = 1
Binding.Bind46.Output.Device.DeviceType = 5
Binding.Bind46.Output.Device.Name = "vXbox 1"
Binding.Bind46.Output.Control = 2
Binding.Bind46.Output.Modifier = 21
Binding.Bind46.Output.Number = 52
Binding.Bind46.Output.Value1 = 1
Binding.Bind46.Output.Value2 = 0
Binding.Bind46.Output.UseInput = TRUE
Binding.Bind46.Output.CustomValueType = 0
Binding.Bind46.Id = 46
Binding.Bind47.Input.Device.Number = 9052406270241038766
Binding.Bind47.Input.Device.DeviceType = 3
Binding.Bind47.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind47.Input.Control = 2
Binding.Bind47.Input.Modifier = 35
Binding.Bind47.Input.Number = 52
Binding.Bind47.Input.UseInput = FALSE
Binding.Bind47.Input.CustomValueType = 0
Binding.Bind47.Output.Device.Number = 1
Binding.Bind47.Output.Device.DeviceType = 5
Binding.Bind47.Output.Device.Name = "vXbox 1"
Binding.Bind47.Output.Control = 2
Binding.Bind47.Output.Modifier = 21
Binding.Bind47.Output.Number = 52
Binding.Bind47.Output.Value1 = -1
Binding.Bind47.Output.Value2 = 0
Binding.Bind47.Output.UseInput = TRUE
Binding.Bind47.Output.CustomValueType = 0
Binding.Bind47.Id = 47
Binding.Bind48.Input.Device.Number = 9052406270241038766
Binding.Bind48.Input.Device.DeviceType = 3
Binding.Bind48.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind48.Input.Control = 2
Binding.Bind48.Input.Modifier = 252
Binding.Bind48.Input.Number = 51
Binding.Bind48.Input.UseInput = FALSE
Binding.Bind48.Input.CustomValueType = 0
Binding.Bind48.Output.Device.Number = 1
Binding.Bind48.Output.Device.DeviceType = 5
Binding.Bind48.Output.Device.Name = "vXbox 1"
Binding.Bind48.Output.Control = 2
Binding.Bind48.Output.Modifier = 252
Binding.Bind48.Output.Number = 51
Binding.Bind48.Output.Value1 = -1
Binding.Bind48.Output.Value2 = 0
Binding.Bind48.Output.UseInput = TRUE
Binding.Bind48.Output.CustomValueType = 0
Binding.Bind48.Id = 48
Binding.Bind49.Input.Device.Number = 9052406270241038766
Binding.Bind49.Input.Device.DeviceType = 3
Binding.Bind49.Input.Device.Name = "XBOX 360 For Windows (Controller) (7DA09B8A843C61AE)"
Binding.Bind49.Input.Control = 2
Binding.Bind49.Input.Modifier = 252
Binding.Bind49.Input.Number = 52
Binding.Bind49.Input.UseInput = FALSE
Binding.Bind49.Input.CustomValueType = 0
Binding.Bind49.Output.Device.Number = 1
Binding.Bind49.Output.Device.DeviceType = 5
Binding.Bind49.Output.Device.Name = "vXbox 1"
Binding.Bind49.Output.Control = 2
Binding.Bind49.Output.Modifier = 252
Binding.Bind49.Output.Number = 52
Binding.Bind49.Output.Value1 = -1
Binding.Bind49.Output.Value2 = 0
Binding.Bind49.Output.UseInput = TRUE
Binding.Bind49.Output.CustomValueType = 0
Binding.Bind49.Id = 49
DeviceCapabilities.InputCount = 2
DeviceCapabilities.OutputCount = 1
DeviceCapabilities.InputData0.DeviceNumber = 9052406270241038766
DeviceCapabilities.InputData0.Value.ButtonCount = 10
DeviceCapabilities.InputData0.Value.PovCount = 1
DeviceCapabilities.InputData0.Value.Axes.Count = 5
DeviceCapabilities.InputData0.Value.Axes.Axis0 = 49
DeviceCapabilities.InputData0.Value.Axes.Axis1 = 48
DeviceCapabilities.InputData0.Value.Axes.Axis2 = 52
DeviceCapabilities.InputData0.Value.Axes.Axis3 = 51
DeviceCapabilities.InputData0.Value.Axes.Axis4 = 50
DeviceCapabilities.InputData0.Value.ForceFeedback = FALSE
DeviceCapabilities.InputData0.Value.API = 3
DeviceCapabilities.InputData0.Value.DirectInputCapabilities.ForceFeedbackEffects.Count = 0
DeviceCapabilities.InputData0.Value.DirectInputCapabilities.ForceFeedbackAxes.Count = 0
DeviceCapabilities.InputData0.Value.DirectInputCapabilities.InterfacePath = "\?\hid#vid_045e&pid_028e&ig_00#8&310b698f&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"
DeviceCapabilities.InputData0.Value.DirectInputCapabilities.InstanceGuid = "972e2210-b6bc-11e8-8001-444553540000"
DeviceCapabilities.InputData0.Value.DirectInputCapabilities.ProductGuid = "028e045e-0000-0000-0000-504944564944"
DeviceCapabilities.InputData1.DeviceNumber = 0
DeviceCapabilities.InputData1.Value.ButtonCount = 5
DeviceCapabilities.InputData1.Value.PovCount = 0
DeviceCapabilities.InputData1.Value.Axes.Count = 5
DeviceCapabilities.InputData1.Value.Axes.Axis0 = 48
DeviceCapabilities.InputData1.Value.Axes.Axis1 = 49
DeviceCapabilities.InputData1.Value.Axes.Axis2 = 51
DeviceCapabilities.InputData1.Value.Axes.Axis3 = 52
DeviceCapabilities.InputData1.Value.Axes.Axis4 = 56
DeviceCapabilities.InputData1.Value.ForceFeedback = FALSE
DeviceCapabilities.InputData1.Value.API = 1
DeviceCapabilities.OutputData0.DeviceNumber = 1
DeviceCapabilities.OutputData0.Value.ButtonCount = 10
DeviceCapabilities.OutputData0.Value.PovCount = 1
DeviceCapabilities.OutputData0.Value.Axes.Count = 6
DeviceCapabilities.OutputData0.Value.Axes.Axis0 = 48
DeviceCapabilities.OutputData0.Value.Axes.Axis1 = 49
DeviceCapabilities.OutputData0.Value.Axes.Axis2 = 50
DeviceCapabilities.OutputData0.Value.Axes.Settings2.Sensitivity = 1
DeviceCapabilities.OutputData0.Value.Axes.Settings2.DeadZone = 0
DeviceCapabilities.OutputData0.Value.Axes.Settings2.AntiDeadZone = 0
DeviceCapabilities.OutputData0.Value.Axes.Settings2.NeutralPosition = 0
DeviceCapabilities.OutputData0.Value.Axes.Settings2.MaxSpeed = -0.01
DeviceCapabilities.OutputData0.Value.Axes.Axis3 = 51
DeviceCapabilities.OutputData0.Value.Axes.Axis4 = 52
DeviceCapabilities.OutputData0.Value.Axes.Axis5 = 53
DeviceCapabilities.OutputData0.Value.Axes.Settings5.Sensitivity = 1
DeviceCapabilities.OutputData0.Value.Axes.Settings5.DeadZone = 0
DeviceCapabilities.OutputData0.Value.Axes.Settings5.AntiDeadZone = 0
DeviceCapabilities.OutputData0.Value.Axes.Settings5.NeutralPosition = 0
DeviceCapabilities.OutputData0.Value.Axes.Settings5.MaxSpeed = -0.01
DeviceCapabilities.OutputData0.Value.ForceFeedback = FALSE
DeviceCapabilities.OutputData0.Value.API = 4
DeviceCapabilities.OutputData0.Value.XInputDeviceCapabilities.Subtype = 1
I recommend attaching a file to reduce the content of the message.
I recommend using RAW Input for the mouse.
I recommend using XInput for the gamepad.
I recommend that you first configure the mouse separately, and then the mouse + gamepad. Reduced time for testing.
Customizing mouse controls for a stick is a pretty slippery theme. Devices are different in physical implementation. There are several control setup approaches, here is an example:
https://sourceforge.net/p/vjoy-controller/discussion/general/thread/87ce7030/
Hello! thanks for youк quck answer!
I quit trying to solve the problem with a mouse. I export the Rx and Ry coordinates from Opentrack as Joystick Emulation for vJoy. In Virtual Controller I try to combine two right sticks - from the vJoy and from the physical controller. But vJoy does not return the stick to the neutral position as a physical controller. The camera rotates constantly. There may be a solution with settings in which the virtual stick will behave as a physical, acting only during deflection, rather than holding the deflection, creating a constant movement. Sorry for my english, i hope you will understand my question.
I mean that it should work like usual mouse camera control in games. When you move mouse camera moves, when you stop moving camera stops to. But here i can not manege this. My virtual stick does not reset in zero position when moving stops. Axis [RX] Release didn't helps
Last edit: Anton 2019-11-08
vJoy by default has its "neutral" axis values. They are stored in the register (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\vjoy\Parameters\Device01). Function "Release" sets them (or 50% if they not exist). You can try to set 50% - the usual neutral value:
Axis [RX] = 50%
My English is a mixture of "I think it should be" + google translate. I write well (more or less) in Russian.
Сейчас попробую. спасибо! Где именно нужно прописать Axis [RX] = 50%?
В реестре по этому адресу только два параметра:
HideReportDescriptor и HideReportDescriptorSize
По логике получается, что сброс в нейтральное положение должен происходить при остановке движения, а потом из нейтрального положения снова смещаться до следущей остановки мыши или трэкера. Но как этого достичь? Каким образом обычное управление обзором мышью в играх этого достигает? Почему камера не продолжает вращаться в том же направлении при остановке мыши?
Last edit: Anton 2019-11-08
Если в реестре нет этих значений, тогда vJoy (не Virtual Controller) использует "зашитие" значения (X,Y,Z = 50%, остальные = 0%). http://vjoystick.sourceforge.net/site/index.php/download-a-install/deployment216/initial-values
Думаю проблема в том, что программа Opentrack "захватила" контроль над vJoy Device 1, и как результат программа Virtual Controller не может получить доступ к контролю vJoy Device 1. Насколько я знаю только одна программа может иметь контроль над устройством, а вот получать данные с него могут несколько программ.
Таким образом, невозможно одновременно использовать две программы для управления vJoy Device 1. Можешь попытаться использовать встроенный vJoy Feeder Demo для тестов.
Мышь при движение генерирует, как правило, "смещение" от текущего положения. Например слабое движение влево dX: -5 -5 -4 -5 -3 -4 -2 -1 0. Вот и получается, что в конце движения всегда 0 - нейтральное положение. "смещение" аналог скорости. При попытки это перекинуть на стик возникает проблема размерности: значения смещения не соответствуют значениям стика (например dX -5 это сколько для стика? -10% или -50%).

Пример настройки для мыши:
100% - относительная величина, подбирай под себя.
Я почему-то думал, что Virtual Controller просто берёт данные из Vjoy Device, в который их отдёт Opentrack, и затем уже с помощью функций можно ими управлять при компоновке. Я думал, что их конечное использование( трансляция, обнуление и т.д.) за Virtal Controller)
Я снова попытал удачу с прикручиванием мыши к правому стику, и вот что заметил.
Если задать не
Axis Speed [X] Positive. а просто Axis [X] Positive,
но при этом оставить
Axis Speed [X] Release
то мышь в правом стике отрабатывает почти один-в-один как сам стик, кроме одного момента.
Я проверяю по свойствам игрового устройства в Панель управления-> Устройства и принтеры->Игровые устройства. Там где индикаторы нажатий в виде полосок.
Если быстро вести мышку, то значение достигает 100% и при остановки мышки возвращается в среднее положение. Но! При следующем перемещении ползунок на долю секунды возвращается на значение 100%, а потом уже на значение, соответствующее скорости движения мышки. Пока не понимаю. как сделать так, чтобы после остановки, новое движение начиналось с нуля. Если это получится, то дело сделано. По крайней мере уже отклонение мыше-стика зависит от скорости перемещения мыши и при остановке возвращается в нейтраль. Но нужно как -то эту нейтраль записать в переменную. которая служит точкой отсчёта при следующем движении. Я не программист и даже не математик, я пытаюсь логикой побороть проблему, но это провал) Есть идеи, может? Осталось чуть-чуть.И я не понимаю, неужели никто из интернет-сообщества не пытался прикрутить трекинг головы к стику джойстика? Я не нашёл ничего вообще. Все как будто на клавиатурах и мышках сидят...
Вместо Axis [X] Positive попробуй использовать Axis [X] Increase:

Работает! Возвращается в среднее положение и с него начинает при следующем перемещении. Теперь проблема в том, что когда курсор упирается в край экрана, случается остановка и сброс значений. То есть нужно, чтобы именно курсор перемещался, а не только сама мышь. И из-за зависимости "отклонения стика" от скорости перемеения мыши, присутсвует инерция и несоответствие между перемещением мыши и поворотом камеры. Есть ли способ задать прямое соответствие, как при управлении обзором непосредственно мышью? Без зависимости от скорости?
Если включить режим RawInput, то всё работает как надо, при упирании в край экрана ложение "стика" сохраняется, но почему-то Opentrack перестаёт управлять этим процессом. Курсором по-прежнему управляет, а виртуальным стиком нет. Обычная проводная мышка управляет и курсором и положением "стика". Не одно, так другое(
Нужно полное описание того чего ты хочешь. Просто в первом сообщение было сказано только про (мышь+гейпад xbox360) => (виртуальный геймпад xbox360). А потом появились всякие Opentrack, vJoy. Напиши какие у тебя физические (которые можно в руки взять) устройства. Программа VR читает данные только с одного устройства (виртуальный геймпад xbox360) или нет (виртуальный геймпад xbox360, клавиатура, мышь, vJoy)?
Задача реализовать управление камерой в играх с помощью трекинга головы, но при этом, чтобы геймпад сохранял свой полный функционал. Большинство игр переключают управление: либо геймпад, либо клава и мышь. Большинство пользователей, как я понимаю, использует Mouse Mode в выходе програм для трансляции трекинга. (OpenTtack, FreePie, Trinus и т.д.) Но это всё переключает на управление клавиатурой и мышью( нельзя одновременно бежать левым стиком геймпада и крутить головой, к примеру). Я искал готовые решения в интернете (Oculus не предлагать! :)) , но ничего не нашёл. Очень долго искал и выкурил тонны форумов. Подумал, что должно получиться, если прикрутить к правому стику геймпада ещё и зависимость от положения головы, то должно получиться.
И вот я ищу решение.
Для трансляции координат использую FreePie для Android 9 (в последних андроидах какая-то функция, которая отрубает датчики положения в фоновом режиме, поэтому Trinus например перестал работать в этом смысле)
Для приёма координат использую OpenTrack.
Пробовал в режиме vJoy, тогда он передаёт данные наклона в оси Rx и Ry, я пытался мэпить их на правый стик виртуального геймпада в Virtual Controller наравне со стиком физического контроллера. Но как я писал ранее, я не смог добиться сброса в нейтральное положение после остановки поворота головы ( чтобы камера переставала вращаться).
Теперь пробую в режиме MouseMode. Пытаюсь замэпить координаты мыши, которые выдаёт Opentrack на правый стик виртуального геймпада в Virtual Controller наравне со стиком физического контроллера, о чём я и пишу выше.
Задача иметь жёсткую связку положения головы и положения камеры так же, как при управлении камерой физической мышью. Без инерции и прочего. Я не знаю, как это реализуется в играх, увы. Пытаюсь с помощью твоей программы.
У меня геймпад по типу xBox360, Honor 8 pro с андроид 9 и windows 10.
RawInput связан с определенным устройством. Твоя физ. мышь не связана с OpenTrack. Чтобы работало попробуй определить устройство – например через режим «быстрой привязки» или перебором. Рекомендую попробовать устройство Simulated Mouse. Если не помогло, тогда надо пробовать использовать LLHook + Lock Feature.
Нужно уточнить детали про трекинг.
Ограничен или нет поворот головы влево и вправо (думаю ограничен если не крутишься на кресле)? В играх где есть управление обзором мышкой ограничения нет. Это особенность мыши, например у стика есть ограничение диапазона значений. Из-за ограничения чтобы иметь возможность (если надо) поворота на неограниченный угол, контроль осуществляется не самим углом поворота, а скоростью поворота. То есть максимальный наклон стика влево = поворот влево на макс. скорости.
Если у тебя ограничен поворот (не крутишься) головы влево и вправо, то тогда устроит ли тебя то что например ты в шутере не сможешь посмотреть за спину?
Если у тебя неограничен поворот (крутишься) головы влево и вправо, то тогда нужно уточнить как именно поворот передается в vJoy. Как меняются значения RX если ты будешь крутится? Не будет ли в какой-то момент всегда постоянное значение или значения меняются как-то циклично.
В режиме RawInput и режиме быстрой привязки Virtual Controller не считывает Mouse Emulation выход из Opentrack ( ни в Direct input, ни в Legacy Input). Курсор бегает под управленем наклонов телефона, но не цепляется в VC. Не получается их связать режиме Raw Input.
LLHook, как я писал выше, почти работает, но когда курсор упирается в край экрана, виртуальный стик возвращается в нейтральное положение, то есть вращение прекращается.
При активации Lock Feature всё вообще странно, при любых перемещениях ось X выходит на 100, а ось Y на 0 %. Это видно по окну настройки геймпада в виндоус.
Что касается потребностей в трекинге, то меня действительно полностью бы устроил аналог mouse view. Игры от первого лица почти не используются, в основном от третьего. На кресле я не кручусь, достаточно поворотов в пределах 180 градусов, чтобы можно было смотреть по бокам.
Вот в этой дискуссии ребята обсуждают как раз схожий вопрос, но конуретных решений, кроме аппаратных не озвучивают, хотя пишут, что всё просто. В видео-примере там как раз то, что я пытаюсь реализовать, но так, чтобы и геймпад работал тоже.
https://www.reddit.com/r/OculusQuest/comments/bydxfm/cinemizer_headtracking_ble_to_add_headtracking_to/?sort=old
Вот набор (прикрепленные файлы) для режима vJoy.
Ваууу! Спасибо огромное! Я сам никогда бы не додумался до всего этого, совершенно иной уровень знаний нужен. Доберусь до подопытного компьютера и отпишусь! Спасибо!
У меня параметры таймера не подцепились во всех случаях. Что там нужно указать?
В "IO Devices" нужно включить таймеры:

Интервал таймера должен быть больше чем интервал обновления DirectInput.
Не забудь скачать последную версию программы для устранения бага в UI.
Last edit: VIRTUAL 2019-11-16
Привет! Я всё протестировал! Основная проблема в том, что виртуальный стик залипает в крайних положениях, но не всегда их доситигает. Как следствие камера реагирует непредсказуемо и не синхронно? жёсткой связи не получается( Я пробовал разные настройки таймера >50ms, но при маленьких значениях "стик" не достигает крайних положений, при слишком больших залипает в крайних положениях. Режим экспорта датчиков Mouse Mode в OpenTrack или Trinus, к примеру работает абсолютно синхронно, как-то же там пересчитываются координаты датчиков в координаты положения камеры ? Насколько я понимаю, при управлении стиком вообще заложена инерция камеры за счёт разных степеней наклона. Если стик отклонён НЕ в крайнее положение, то камера реагирует медленно и т.д. Градация. Как соотнести скорость поворота головы с углом наклона стика не понятно. В этом плане мышь абсолютно адекватно связывает перемещение головы и камеры. Нельзя как-то использовать мышиный алгоритм и реализовать его одновременно с геймпадом? Может, не через стик, а как-то ещё? Прошу прощения за бред, если что)
Попробуй уменьшить чувствительность осей DirectInput (например 50% или 10%).
Прикрепи свой файл-конфигурации для анализа.