You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+28-10Lines changed: 28 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,28 @@
1
1
# DragWheel #
2
2
3
-
### *A mouse-as-throttle (HOJAM) experiment for [Falcon BMS](https://www.benchmarksims.org/)* ###
4
-
5
-
Mouselook Gang!
3
+
### *Hands-on-joystick-and-mouse (HOJAM) experiment for [Falcon BMS](https://www.benchmarksims.org/)* ###
4
+
### *(Use your mouse as a throttle!)* ###
6
5
7
6
Are you tired of reaching back and forth, from your mouse to the dodgy 8-bit slider on your cheapo-joystick? Me too.
8
7
9
-
I wondered, what if we could control the throttle by simply *dragging* the mouse forward and back? There isn't any other interaction in the 3D cockpit controlled by drag/drop which should conflict with that.
8
+
What if you could control the throttle by simply *dragging* the mouse forward and back? There isn't any other interaction in the 3D cockpit controlled by drag/drop which should conflict with that.
9
+
10
+
This simple prototype is a proof-of-concept, to try that out -- it works by hooking mouse input in the background, watching for (by default) left-button-drag movements, and generating mousewheel-rotation input events in response. If you assign throttle-axis to the mousewheel in BMS, voila -- your mouse is now a HOTAS throttle! (With far fewer knobs and buttons.. but hey, you can use it to look around.)
11
+
12
+
This is still just a crude prototype -- but I'd like to get feedback and hear ideas before developing it further. (Is this useful for anyone but me?)
13
+
14
+
## Change Log ##
10
15
11
-
So I built this simple prototype as a proof-of-concept, to try it out -- it works by hooking mouse input in the background, watching for left-button-drag movement, and generating mousewheel-rotation input events in response. If you assign throttle-axis to the mousewheel in BMS, voila -- your mouse is now a HOTAS throttle! (With far fewer knobs and buttons.. but hey you can use it to look around.)
16
+
#### v1.1:
12
17
13
-
Currently this is just a crude prototype -- but I'd like to get feedback and hear ideas before developing it further. (Is this useful for anyone but me?) Here are the details for installation and tips for configuration:
18
+
- Implemented rudimentary tracking of throttle-lever position, and audible feedback when your throttle hits the minimum/maximum extent (and push-through afterburner detent).
19
+
- NOTE: for this to work, you must have mousewheel-sensitivity (in Falcon settings) set all the way to minimum.
20
+
- Bonus feature: for those with a 5-button mouse.. you can map the two x-buttons to keyboard scancodes. Some fun ideas:
21
+
- PTT for UHF/VHS comms
22
+
- Look-ahead / Check-six
23
+
- Look-closer / Reset-FOV
24
+
- Speedbrake in/out
25
+
- Chaff/Flare programs (eg. slap switch / pgm #6)
14
26
15
27
## Instructions ##
16
28
@@ -33,11 +45,14 @@ Currently this is just a crude prototype -- but I'd like to get feedback and hea
33
45
`set g_bMouseWheelKnobs 0`
34
46
- (recommended) Disable clickable-hotspot anchoring, to clear the way for smooth uniform, mouse dragging:
35
47
`set g_b3DClickableCursorAnchored 0`
48
+
- (recommended) Disable 4th-button clickable-pit toggle, if you want to utilize the new x-button remapping:
49
+
`set g_bMouseButton4TogglesClickablePit 0`
36
50
37
51
#### *Pre-flight:*
38
52
39
53
- Simply launch `DragWheel.exe` before launching BMS .. it will open in a console window. Left-click and drag the window up and down, by its titlebar, and observe the stream of console output to verify it's working.
40
-
- Relocate your mouse to the left side of your keyboard .. wherever you'd place your hotas throttle if you had one.
54
+
- NOTE: to avoid messing up interaction in the 2D environment, wait to launch DragWheel.exe until after you enter 3D.
55
+
- (optional) Relocate your mouse to the left side of your keyboard .. wherever you'd place your hotas throttle if you had one.
41
56
42
57
#### *In BMS:*
43
58
@@ -51,6 +66,7 @@ Currently this is just a crude prototype -- but I'd like to get feedback and hea
51
66
- Use right-button-drag to look around, as you normally do.
52
67
-***Use left-button-drag (up and down) to control the throttle (forward and back, respectively).***
53
68
- (protip) If you prefer to fly with mouselook engaged, you can press and hold both left+right buttons simultaneously to move the throttle without panning the view up or down. (Reminder: [alt+3] is the default key binding to toggle between mouselook and clickable-cockpit modes.)
69
+
- (protip) If you have a dx-shift button defined, and it's convenient to press-and-hold on the stick, you can configure that as the button to engage the throttle.
54
70
55
71
#### *Debrief:*
56
72
@@ -68,14 +84,16 @@ Currently this is just a crude prototype -- but I'd like to get feedback and hea
68
84
- This is just a prototype / proof of concept. The most obvious downside to this approach is, you lose ability to control FOV with the mousewheel.
69
85
- Setting `g_fNarrowFOV 40` in bms.cfg can help mitigate that, if you assign `FOVToggle` "Look Closer" to a stick button you can make regular use of that while keeping hotas.
70
86
- If your stick has a throttle-slider, consider assigning that to control FOV.
71
-
- Mapping mousewheel-to-throttle isn't well supported or documented by BMS. There are many quirks.. eg. if you click the middle-button it will still reset fov, like normal, but also it will snap your throttle to the 50% point. And beware taxiway-starts -- be ready on the wheelbrakes -- you will spawn in with throttle immediately set to 50%!
87
+
- Mapping mousewheel-to-throttle isn't well supported or documented by BMS. There are many quirks.. eg. if you click the middle-button it will still reset fov, like normal, but also it will snap your throttle to the 50% point. And beware taxiway-starts -- be ready on the wheelbrakes! -- you will spawn in with throttle immediately set to 50% (ie. about 75% MIL-power).
72
88
- Sometimes the throttle in BMS will stop responding to mousewheel entirely .. when that happens, clicking the wheel (middle) button usually re-engages it.. usually.
73
89
74
90
## Future
75
91
76
-
If this idea generates enough interest, I plan to pursue a different approach based on vJoy (or similar framework) to drive a virtual-axis for the throttle instead of relying on mousewheel.
92
+
To avoid all the quirks and conflicts with hardcoded mousewheel behaviors, and to provide more reliable behavior based on knowing the absolute throttle-axis position -- this app needs to be rebuilt as a vJoy "feeder" application.
77
93
78
94
That should be more stable, supportable, and allow the mousewheel to return to its rightful role controlling FOV.
79
95
80
-
With full control of a virtual-axis, we can also add the possibility of configurable detents (eg. stop the throttle at MIL power; require a second drag to go into AB). Or perhaps add a 2nd axis to control two engines independently -- perhaps by dragging with buttons 4 & 5 held (for 5-button mice) or dragging with a modifier key held. Or .. whatever other crazy ideas we come up with.
96
+
Other changes in progress:
81
97
98
+
- use BMS shared memory interface to only hook the mouse while in 3D pit
99
+
- optional overlay to display throttle position, rpm, ftit, brake
0 commit comments