A mouse-as-throttle (HOJAM) experiment for Falcon BMS
-
DragWheel
A mouse-as-throttle (HOJAM) experiment for Falcon BMS
Mouselook Gang!
Are you tired of struggling with the dodgy 8-bit slider on your cheapo-joystick, while reaching back and forth to your mouse? Me too.
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.
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.)
Currently this is just a crude prototype – SEE CAVEATS AND WARNINGS, BELOW – but I’d like to get feedback and hear ideas before developing it further. (Is this useful for anyone but me?)
https://github.com/arithex/DragWheel/releases
- Simply download and unzip, anywhere you like. No installer, no dependencies, and no special permissions required.
- Should run ok on Windows 10 version 1903 and later (requires .NET Framework 4.8).
More here: https://github.com/arithex/DragWheel/blob/main/README.md
Benefits
- HOTAS flying sensation, on a shoestring budget – experience the ability to look around while keeping hands on stick and “throttle”!
- Vastly increased throttle sensitivity, compared to most cheap 8-bit consumer joystick sliders (eg. Thrustmaster T.16000M, or Logitech Extreme 3D Pro) … makes easier landing, taxiing, holding formation, etc.
Caveats
-
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.
-
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.
-
If your stick has a throttle-slider, consider assigning that to control FOV.
-
-
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 – gotta be ready on the wheelbrakes – you will spawn in with throttle immediately set to 50%!
-
Sometimes the throttle in BMS will stop responding to mousewheel entirely … when that happens, clicking the wheel (middle) button usually re-engages it… usually.
Future
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.That should be more stable, supportable, and allow the mousewheel to return to its rightful role controlling FOV.
With full control of a virtual-axis, we can also add the possibility of configurable detents (eg. stop the throttle at MIL power; requiring a second drag to go into AB). Or perhaps add a 2nd axis to control two engines independently. Or … whatever other crazy ideas we come up with.
-
Dera airtex,
here you are once again! They can say you’re full of surprises… let’s say, almost like an Easter egg
With best compliments and regards.
-
Updated!
https://github.com/arithex/DragWheel/releases/tag/v1.1.2021.418Still a dodgy experimental prototype, but a lot more flyable.
Change Log
v1.1-
Implemented rudimentary tracking of throttle-lever position, and audible feedback when your throttle hits the minimum/maximum extent (and push-through afterburner detent).
-
This greatly enhances the HOTAS feel and improves confidence – you can now push throttle all the way up (or pull all the way back) without looking at your RPM gauge, or even waiting for the RPM to respond.
-
NOTE: for this to work, you must have mousewheel-sensitivity (in Falcon settings) set all the way to minimum.
-
-
Bonus feature: for those with a 5-button mouse… you can map the two x-buttons to keyboard scancodes. Some fun ideas:
-
PTT for UHF/VHS comms
-
Look-ahead / Check-six
-
Look-closer / Reset-FOV
-
Speedbrake in/out
-
Chaff/Flare programs (eg. slap switch / pgm #6)
-
-
-
Updated!
https://github.com/arithex/DragWheel/releases/tag/v1.1.2021.418Still a dodgy experimental prototype, but a lot more flyable.
Change Log
v1.1-
Implemented rudimentary tracking of throttle-lever position, and audible feedback when your throttle hits the minimum/maximum extent (and push-through afterburner detent).
-
This greatly enhances the HOTAS feel and improves confidence – you can now push throttle all the way up (or pull all the way back) without looking at your RPM gauge, or even waiting for the RPM to respond.
-
NOTE: for this to work, you must have mousewheel-sensitivity (in Falcon settings) set all the way to minimum.
-
-
Bonus feature: for those with a 5-button mouse… you can map the two x-buttons to keyboard scancodes. Some fun ideas:
-
PTT for UHF/VHS comms
-
Look-ahead / Check-six
-
Look-closer / Reset-FOV
-
Speedbrake in/out
-
Chaff/Flare programs (eg. slap switch / pgm #6)
-
so many years and BMS doesn’t cease to surprise.
by far this is the most amazing mod specially for mouse user.
but over the years flying with stick in left hand and mouse in right. I have to train my right hand to use the stick. hehehe. can’t do a level flight with right hand… but it’s totally worth it. can’t wait for the day to be able to use HOJAM flawlessly. -
-
but over the years flying with stick in left hand and mouse in right.
Well don’t change on my account! Nothing about this mod cares where you actually place your mouse or stick.
It does support the Windows setting for swap-left/right-mouse-buttons, if you’re a leftie and use that… BMS seems to honor that, too.
-
dear airtex.
thanks for this amazing HOJAM. I wanted to learn if we can program 10 or 12 buttons mouse with this.
after this amazing concept I’m thinking to buy 12 buttons mouse… if we can program that too -
The Windows API that I’m using only goes up to 5 buttons…
I’ve never used a 12-button gaming mouse … I assume they must come with custom software that allows you to map the extra buttons to keyboard codes, already? Or maybe they register as a HID button device (ie. like a joystick but with buttons only, no axes)?
I may try to buy one too… could be useful for BMS!
-
The Windows API that I’m using only goes up to 5 buttons…
I’ve never used a 12-button gaming mouse … I assume they must come with custom software that allows you to map the extra buttons to keyboard codes, already? Or maybe they register as a HID button device (ie. like a joystick but with buttons only, no axes)?
I may try to buy one too… could be useful for BMS!
no they dont come with a software. I tried using 10 mouse buttons once long time ago. but unfortunately BMS doesn’t help remapping them. many suggested different softwares to remap but I am too dumb to understand that. yours is the easiest and most effective mouse remapping mod. thumbs up for making my life easier. I can never be more thankful
-
What model do you have (or thinking of buying)? If not crazy expensive I’ll buy one and see if I can find a way to make it work. They must send input to the OS somehow…
-
What model do you have (or thinking of buying)? If not crazy expensive I’ll buy one and see if I can find a way to make it work. They must send input to the OS somehow…
I have to search the store. may have to resort on available gaming mouse. most probably Chinese brands… due to availability. my part of the globe is not very rich in gaming devices sadly. once I wish for tm cougar and couldn’t find in the whole country. hahaha
-
currently using aigo q68. if at all I find any gaming device in my region it is crazy expensive. if you recommend any gaming mouse (prospective) that you would want to work on I will try to import it if not available in local market. I am praying that you may find one. it will be a cheaper dream come true for me
-
The world is so weird … in this age of globalization, you wouldn’t think there would be much difference in selection of computer mice, from country to country. Keyboards, ok yes maybe… but mice? should be pretty universal!
I suppose different retail companies want to do marking and tech support in different languages… but still. I’m sure 99% of these are made in china!
Anyway… I think your best bet is to find one with good software that allows defining custom keyboard-macros, to program the extended buttons. Here is US market, Razer seems to be dominant provider for this.
-
thanks airtex. I shall try to find a software supported mouse… I know 99% is Chinese made. but quality is extremely different. a Logitech (Chinese) is different but what about a mouse named Chung chu xyz???:p:D:p
-
hello airtex.
are you planning to upgrade HOJAM for more than 5 buttons mouse. it has made life so easier specially using mouse button for DX shift it has saved me a critical button on joystick. -
No, I’m just using the standard Windows API for input handling … it only goes up to 5 buttons for mouse.
I’m a little curious about these eg. 12-button gaming mice … but, not curious enough to pay $100+ for one.
(Did you get one? Does it show up in BMS as a button-device… or does it come with some custom software to generate keypresses for each of the extended buttons? Take a look inside your DeviceSorting.txt file to see if it shows up there.)
But for an ordinary 5-button mouse … one direction I’m thinking about trying, is mapping the two x-buttons to [shift] and [ctrl] keys.
Then, intercepting the primary joystick hat-button presses, and generating keypresses for those – which would then be modified by [shift], [ctrl], or neither or both. This would allow a stick with 1 hat to be multiplexed to up to 4 different hat-like functions… eg:
- fcr/tgp cursor slew
- tms
- dms
- cms
(or… trim, comms switch, or controlling fov/padlock or whatever else you can imagine)
Without relying on the BMS dx-shifting feature, at all.
If there is interest in this (indeed if anyone but you and me is reading this click the ‘Thanks’ button and I’ll use that to measure the level of interest.
-
(indeed if anyone but you and me is reading this click the ‘Thanks’ button and I’ll use that to measure the level of interest.
I wish I could DX thanks button and press it thousand times -
I am also a little bit reluctant to spend 100$ on a mouse. thinking what if it doesn’t work… though I have searched local market for 12 button mouse but they don’t come with software etc. just plug and play and pray
-
thanks for the new direction. I shall try to bind ctrl and shift with x keys
-
https://github.com/arithex/DragWheel/releases/tag/v1.1.2021.522
Just a couple minor updates… thanks to @victor031 for the idea to map a mouse button to the dx-shift callback. I discovered I really like using the wheelbutton for that.
#### v1.1.2021.522: - Allow sound effects to be overridden with custom wav files. - Also allow mouse wheelbutton to mapped to a keyboard scancode -- - only suitable for press-and-hold keys (because a short-tap will always set throttle to 50% and reset fov). - but works great for the `SimHotasShift` callback, to take advantage of secondary stick buttons without sacrificing one of them. - eg: `<add key="ScancodeForMouseWheelButton" value="0x39">`</add>
-
https://github.com/arithex/DragWheel/releases/tag/v1.1.2021.522
Just a couple minor updates… thanks to @victor031 for the idea to map a mouse button to the dx-shift callback. I discovered I really like using the wheelbutton for that.
v1.1.2021.522:
- Allow sound effects to be overridden with custom wav files.
- Also allow mouse wheelbutton to mapped to a keyboard scancode –
- only suitable for press-and-hold keys (because a short-tap will always set throttle to 50% and reset fov).
- but works great for the
SimHotasShift
callback, to take advantage of secondary stick buttons without sacrificing one of them. - eg: `<add key=“ScancodeForMouseWheelButton” value=“0x39”></add>