1
0
Fork 0
Commit graph

441 commits

Author SHA1 Message Date
James Turner
955138d06e Avoid a crash on HID devices with no name. 2019-05-16 11:11:19 +02:00
Florent Rougon
9b019f6b72 FGJoystickInput: increase MAX_JOYSTICKS from 10 to 16
Since PLIBjs uses joyGetDevCaps()[1] on Windows and this function
accepts joystick ids from 0 to 15 (-1 being special), setting
MAX_JOYSTICKS to 16 ensures that FGJoystickInput::init() can scan all
joysticks that joyGetDevCaps() is able to report about.

[1] https://docs.microsoft.com/en-us/previous-versions/dd757105(v%3Dvs.85)
2019-04-29 12:54:03 +02:00
James Turner
9d71d09072 Enable HID-input on Windows 2019-04-27 18:54:13 +01:00
Richard Harrison
5253215065 Improvements to performance monitoring.
* Ensure that subsystems are named.
* Nasal timers are named appropriately
2019-02-10 18:07:07 +01:00
James Turner
07cb303e8c Fix for jumping view when right-dragging
This happens because we were not storing the new position when the
OSG event-adapter handled the event, which includes PUI

https://sourceforge.net/p/flightgear/codetickets/2073/
2018-10-24 22:16:51 +01:00
James Turner
951a3ea6ad Fix Windows build, missined windows.h 2018-10-24 14:28:58 +01:00
James Turner
00eec40d51 Fix JS header include path 2018-10-23 11:00:59 +01:00
James Turner
73be50b308 Event-input: axis interpolater support
Expand the range of filtering options on axis values to include the
optional use of an interpolation table, which gives many more options
when dealing with some devices.
2018-10-13 00:03:30 +01:00
James Turner
6589c71f62 Tweaks to HID local descriptors 2018-10-04 23:21:05 +01:00
James Turner
abbaf8f640 HID input: allow descriptors from XML
This allows ignoring the USB-supplied descriptor in favour of our
own, which might considerably better or less broken at least.
2018-10-04 17:43:36 +01:00
James Turner
6366dea197 HID event-input debugging
Adding more debugEvents-enabled log output to HDI input
2018-10-04 12:17:01 +01:00
James Turner
96cce67040 HID input: fix multi-device Nasal support
Ensure each laoded device gets a unique Nasal module name,
otherwise they combine with each other and Stuff Breaks(TM)
2018-10-04 12:17:01 +01:00
James Turner
8b72229ffd C++11 improvements in Mac event-input code 2018-08-19 12:34:47 +01:00
James Turner
e24134f34a HID-input: fix crash with null manufacturer name
https://sourceforge.net/p/flightgear/codetickets/2041/
2018-08-10 15:11:32 +01:00
Edward d'Auvergne
fff923d2f4 TestSuite: Migration of the HIDInput tests to the CppUnit framework.
The extractBits(), signExtend(), and writeBits() functions of the anonymous
namespace in Input/FGHIDEventInput.cxx have been shifted out of the namespace
and are now exposed via the header.  This is needed as
<Input/FGHIDEventInput.cxx> cannot be imported within the CppUnit
infrastructure, as it is already built into the run_test_suite binary.
2018-07-26 15:52:07 +02:00
James Turner
b690be1206 Fix HID input init 2018-06-25 23:39:22 +01:00
James Turner
5741cad568 HID tweaks 2018-06-25 23:39:22 +01:00
James Turner
054c4bec0f Bug-fix: for RMB-look / PUI interaction issue
When releasing the RMB over a PUI dialog, we no longer get stuck in
drag mode due to the buttons map getting out of state. This is slightly
ugly work-around, better fix to follow hopefully (needs better OSG
integration)
2018-05-23 14:16:48 +01:00
James Turner
8986abeb52 Fix PUI mouse for non-pass-through mouse modes
As reported by Michael Danilov, ensure sticky mouse modes for view and
flight controls don’t send button events to PUI
2018-05-14 14:41:06 +01:00
James Turner
102fe04e91 Import PLIB JS code into FlightGear
- will permit bug-fixing which cannot occur for
  official PLIB.
2018-05-03 00:02:09 +01:00
James Turner
0762af76c2 Indexed-device config files for event-input layer
This allows multiple identical devices with event-input, using the
same syntax as for PLIB JS
2018-04-29 21:52:56 +01:00
James Turner
2ce4bcb666 Allow distinguishing PLIB joysticks by index (count)
This gives a simple way to have different config files for multiple
identical devices, such as the Saitek/Logitech throttle-quadrant
2018-04-29 19:56:01 +01:00
James Turner
0cdd6c4e70 Re-init support on HID-event-input
To ensure the device-configuration-map is re-read, added a default
ctor and moved the config-map creation to init()
2018-04-29 11:25:51 +01:00
James Turner
921f29fbfe HID-Input disambiguation tweaks 2018-04-09 22:03:49 +01:00
Edward d'Auvergne
0f96032487 TestSuite: Shift of the globals unit test helper functions into the test suite.
The setting of the SG log levels and developer mode has been removed as this
clashes with the output control set by the test suite main() function.
2018-03-23 17:26:05 +01:00
Florent Rougon
21b8c7719e FGMouseInput: fix two uses of std::ostringstream
Seeking to the beginning doesn't clear the contents. Note that we don't
use std::ostringstream::str() either, because apparently
std::ostringstream is too complex to be easily reset to a clean state,
so we just recreate an instance every time we need.

cf. https://stackoverflow.com/a/12112642/4756009 and
    https://stackoverflow.com/questions/624260/how-to-reuse-an-ostringstream/624291#comment437178_624276
2018-01-27 11:25:48 +01:00
Florent Rougon
99c809dda0 FGMouseInput: add shutdown() and reinit() overrides
- Modify global_mouseInput in init() and in shutdown(), because *these*
  are the places where FGMouseInput is enabled or disabled.

- reinit() does shutdown() followed by init().

Note: the commented-out block starting with "FIXME: memory leak" that is
      removed here was just an outdated comment, because SGBindingList
      is an std::vector<SGBinding_ptr>, where SGBinding_ptr is a smart
      pointer type (SGSharedPtr<SGBinding>). In other words, there was
      no leak in this place---at least, not recently.
2018-01-27 11:25:10 +01:00
Florent Rougon
2eb583e9e1 FGMouseInput: improve initialization sequence
Create the FGMouseInputPrivate instance in FGMouseInput::init() instead
of in FGMouseInput's constructor. This will allow straightforward
implementation of reinit() via shutdown() and init().

Also get rid of the 'initialized' bool, since bool(d) is now equivalent
(d being the std::unique_ptr<FGMouseInputPrivate> data member of
FGMouseInput).
2018-01-27 11:25:10 +01:00
Florent Rougon
e60e519f7e FGMouseInput: refactoring: use a smart pointer for mouse_mode::buttons 2018-01-27 11:25:10 +01:00
Florent Rougon
1832ade5f2 FGMouseInput: refactoring: use a smart pointer for mouse::modes
Using std::vector<mouse_mode> instead of std::unique_ptr<mouse_mode[]>
would have been possible of course, but a bit more awkward as
vector<>::size() returns an std::size_t but all the "adjacent" code is
based on the 'int' type.
2018-01-27 11:25:10 +01:00
James Turner
aa9ad6a780 Fix view right-drag interaction with PUI
When PUI doesn’t handle the right-mouse down, ensure it ignores the
mouse-up event.
2018-01-14 13:17:59 +00:00
James Turner
01f0f27c84 HID-input: don’t crash when open fails
Important since hidraw devices need special permissions on Linux.
2017-12-25 18:13:03 +00:00
Florent Rougon
c325a8d2cd Fix typos in src/Input/FGLinuxEventInput.cxx 2017-12-23 00:04:21 +01:00
James Turner
216d2328a3 Linux fixes 2017-12-22 14:44:29 -08:00
James Turner
fed8ce623b Fix Windows compilation. 2017-12-22 15:48:52 +00:00
James Turner
407a6d4b3e Linux fixes for HID-input 2017-12-20 04:04:17 -08:00
James Turner
e630bc4be7 Make HID-Input test also conditional
Forgot to wrap this in the relevant CMake test, causing non-HID-input
builds to erroneously fail.
2017-12-18 18:22:44 +00:00
James Turner
e920dc7509 Event input layer based on HID-Api
Thus runs in parallel to the existing implementation on Linux and Mac,
but can (soon) replace the Mac code and will run on Windows eventually.
2017-12-18 17:15:55 +00:00
James Turner
804dc4e74a Steps to make PUI optional, HiDPI tolerant.
Move all PUI event and rendering into a custom camera, which can be
rendered via an FBO to account for display-resolution scaling (HiDPI).

Start wrapping PUI calls in #ifdefs so PUI can be disabled at compile
time; a run-time switch is trivial now but not implemented yet.
2017-10-20 12:10:51 +01:00
Richard Harrison
2c8aad12ba Model relative property tree root binding.
Change fgcommand to take an optional property tree root element.

This fixes the animation bindings to use the defined property tree root - to support multiplayer (or other) model that can bind to the correct part of the property tree.

Requires a corresponding fix in sg to allow the command methods to take an optional root parameter.

What this means is that when inside someone else's multiplayer model (e.g. backseat, or co-pilot), the multipalyer (AI) model will correctly modify properties inside the correct part of the property tree inside (/ai), rather than modifying the properties inside the same part of the tree as the non-ai model.

This means that a properly setup model will operate within it's own space in the property tree; and permit more generic multiplayer code to be written.

This is probably responsible for some of the pollution of the root property tree with MP aircraft properties.
2017-07-05 11:37:17 +02:00
Szymon Acedański
d401a50e0a Fix crash on Mac OS X when FG does not finish input init 2017-02-25 15:05:09 +01:00
Szymon Acedański
4fd89b0b8f Fixed compilation warning on Mac
IOHIDManagerRegisterDeviceMatchingCallback must not be called with
nullptr as the second argument.
2017-02-25 15:05:09 +01:00
Florent Rougon
8f24de831d Adapt includes according to relocation of SimGear's iostreams-related files
This change is the logical counterpart of SimGear's change from commit
79f869a7f32910197be72b21f6489fbbba02c836 that moved the following files
from simgear/misc to simgear/io/iostreams:

  gzcontainerfile.cxx
  gzcontainerfile.hxx
  gzfstream.cxx (formerly zfstream.cxx)
  gzfstream.hxx (formerly zfstream.hxx)
  sgstream.cxx
  sgstream.hxx
  sgstream_test.cxx
2017-02-12 21:30:51 +01:00
Erik Hofman
1a0537e493 Silence a few compiler warnings 2017-01-26 15:37:43 +01:00
James Turner
9441f0d656 Work-around OS-X event-input shutdown crashes. 2017-01-09 16:54:15 +00:00
James Turner
4db129cb01 Guard against a null result from HID code.
It seems strange that CFGetTypeID on null would crash, but the reports
from users suggest this might be the case.
2016-11-20 22:42:48 +00:00
Torsten Dreyer
994ea1674b replace many auto_ptr by unique_ptr 2016-11-14 22:20:46 +01:00
James Turner
e2f7585d9c Use a Cmake imported target for SimGear 2016-10-30 22:15:54 +00:00
James Turner
c4f584dadf Rewrite Mac Event-Input code 2016-09-28 21:16:24 -05:00
James Turner
347a89c1f2 Extend event-input with report-setting.
Can generate feature report data via Nasal callbacks. This is used to
drive the GoFlight LCD / LEDs.
2016-09-28 21:16:24 -05:00
James Turner
b06f4208e4 Adjustments to mouse picking API 2016-07-31 22:44:03 +01:00
Jeremy Bicha
25928bf614 Use CMAKE_INSTALL_BINDIR
Allow /bin install directory to be overriden. Debian for example uses this
to install FlightGear to /usr/games/ instead of /usr/bin/

https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html
2016-07-09 18:52:58 -04:00
James Turner
9cffcf63ae Further SGPath encoding fixes. 2016-07-01 04:54:29 -05:00
James Turner
6d0c2070fd Use future-proof SGPath APIs.
Remove uses of .str(), .c_str() and some other methods of SGPath.
Pass SGPath directly where possible, or explicitly convert to the
appropriate 8-bit encoding.
2016-06-28 10:08:38 +01:00
James Turner
03ecac9dbc Work with new SGPath API. 2016-06-22 17:36:05 +01:00
James Turner
861b682acf VS2015 fixes
Explicitly specialize these templates.
2016-06-01 22:57:11 +01:00
Torsten Dreyer
62d0d2ab06 event input system: be a little more helpful on errors 2015-11-02 11:42:30 +01:00
James Turner
70c4972f48 Fix a clang warning. 2015-04-11 21:59:37 +01:00
James Turner
f2d6b76b13 Portability: Fix compile errors on MSVC (cmath)
From Scott (xDraconian)
2015-03-24 11:11:42 -05:00
Torsten Dreyer
bca8b75a81 Allow input systems to be disabled
To avoid trouble when running multiple instances on one machine, disable
e.g. joystick input for second instance by
--prop:bool:/sim/input/no-joystick-input=true

Also allowed:
--prop:bool:/sim/input/no-event-input=true
--prop:bool:/sim/input/no-mouse-input=true
--prop:bool:/sim/input/no-keyboard-input=true
2014-11-06 22:27:59 +01:00
Thomas Geymayer
90f197fbc4 Do not assume there is a mouse mode with index 3. 2014-07-30 23:54:04 +02:00
Thomas Geymayer
88b7d4f530 Update for SGPropertyNode changes. 2014-03-06 00:41:41 +01:00
Philosopher
6870a88696 Fix for issue #999
Introduces delay-sec and release-delay-sec properties. The former is how
long to wait to run the binding(s) after pressing the button, the latter
is how long to wait after releasing the button. interval-sec now
specifies the delay before a repeat event occurs.
2014-03-05 00:33:45 +01:00
James Turner
f07042f7d7 Use binding-list fire helper. 2013-12-15 20:43:27 +00:00
Thomas Geymayer
39c41eaab9 FGLinuxEventInput: check return value of write. 2013-12-07 13:48:04 +01:00
James Turner
88aef8caf8 Reset: guard against picks during re-init 2013-11-16 12:28:56 +00:00
James Turner
5c97b7e713 Change tooltips to enable explicit.
Instead of using a negative delay to disable, make the setting
operate directly. This simplifies UI on top.
2013-10-25 09:18:59 +01:00
James Turner
52e5a9abe8 Reduce amount of log output at level=debug. 2013-09-28 14:47:20 +01:00
Tom Paoletti
81cd33e2fa Performance optimization: empty() instead of size()>0
empty() is guaranteed to be constant complexity for both vectors and lists, while size() has linear complexity for lists.
2013-08-19 09:01:59 +01:00
James Turner
6acf1c12fc Fix unused private vars.
Xcode is warning about these, they're a mixture of
copy-pasted code, evolved use (e.g. using a property
node to store state), and so on.
2013-07-04 20:24:56 +01:00
James Turner
b1b6d2f6e2 Namespace fixes for std::string 2013-06-27 09:53:12 +01:00
Thomas Geymayer
0239e9c8c8 Fix cursor hide timeout if hovering on canvas windows 2013-06-21 22:00:09 +02:00
Thomas Geymayer
d9881aecf8 Allow Canvas placed on 3D objects receiving mouse events.
- Add option 'capture-events' to canvas aircraft and scenery
   placements to allow events being forwarded to the respective
   canvas.
 - Clean up and restructure parts of the mouse event/picking
   handling to support forwarding events to canvasses.
2013-05-09 21:38:40 +02:00
James Turner
6bd8bbc25e Limit hover-picks to once per frame.
Hopefully fixes the observed issues on Linux when spamming
mouse-moves over a large pickable, but only testing will say for sure.
2013-03-28 17:52:08 +00:00
Anders Gidenstam
46eadabf3a Added support for tracking mouse movements with shift and control+shift pressed. 2013-03-13 21:20:17 +01:00
James Turner
4786923838 Tweak hover logic.
Fixes tooltips vanishing on mouse-move.
2013-03-11 17:13:03 +00:00
James Turner
67a0acb64a Live cursor updating during pick-drags.
This gives nice cursors when hovering and dragging slider and knob-animations, and the cursor is set correctly on mouse-up after the drag too. Makes directional knobs/sliders much easier to understand.
2013-03-10 12:06:20 +00:00
James Turner
0971ed1f2c Make tooltips independent of cursor auto-hide. 2013-03-10 10:17:27 +00:00
James Turner
b5a6812c95 Clean up mouse-input property handling.
Use a listener to avoid reading state each event/update. Support setting some values on the SGKnobAnimation configure global behaviour.
2013-03-08 16:34:21 +00:00
James Turner
30fcfd219e Pass key-mod state into pick-callbacks.
Allow pick-callbacks to get the current mod-state at all times. (Required for matching SG change)
2013-03-07 18:41:38 +00:00
James Turner
12bcea2861 Make Ctrl+axis bindings explicit (and work).
Thanks to Clement/F-JJTH for the fix.
2013-03-06 14:24:29 +00:00
James Turner
d5c382a780 Fix updating of mouse position props.
Some cockpits rely on mouse position props being updated even when using a dragged pick-callback. Thanks to Clement for noticing. Re-structured so however we process the mouse (PUI, pick-callback, normal motion), we always update the props.
2013-03-05 14:31:58 +00:00
James Turner
50c70035b3 More explicit check for cursor feedback. 2013-03-05 08:40:17 +00:00
James Turner
f2c267f5d7 MouseInput changes to support hover.
This adds the framework for platform cursor implementations; Windows and X11 to be done.
It also extend the mouse-input code to generate hover events suitable for driving tooltips.

Note there should be no visible functionality change from this commit, since everything
is inactive until fgdata changes are made.
2013-03-04 23:35:30 +00:00
Thomas Geymayer
6c10f99573 Make compiling of all utils/tools optional 2013-02-12 17:38:46 +01:00
James Turner
7b663cd7f7 Split huge NasalSys header apart. 2013-02-09 15:33:05 +00:00
Christian Schmitt
2013f7149d Some headers missing... ;) 2013-02-07 19:00:54 +01:00
James Turner
1a5b968d7e Update for tweaked SGPickCallback API.
(Requires corresponding SimGear commit)
2013-02-03 16:34:36 +00:00
James Turner
31995420d3 Guard libudev include with extern "C". 2013-01-30 20:49:50 +00:00
James Turner
11f15a9b36 Joystick/dialog caches, commit the transactions. 2013-01-25 09:30:31 +01:00
James Turner
37900e22a8 Wrap dialog and joystick stat-cache in a transaction.
Should improve startup times when the cache is rebuilt.
2013-01-24 09:27:09 +01:00
James Turner
e9ecf4eb52 Bug #923 : repeatable flag set on input reload.
Clean-up how axes and button bindings are destroyed are re-built on reinit of the FGJoystickInput subsystem, so we get new, cleanly initialised items each time.
2012-12-29 12:16:51 +00:00
ThorstenB
076bbb8487 Fix some compiler warnings.
Unused vars, loss of precision, bool type conversions.
2012-10-13 17:59:47 +02:00
James Turner
ae6218ff10 Restore named JS/input configs (overrides)
Thanks to jano for pointing out I'd broken this feature!
2012-09-25 14:20:18 +01:00
ThorstenB
293d6b3565 Fix compilation with enabled EVENT_INPUT
Need to move the definition to the toplevel cmake file, since sources
are no longer compiled on directory level (individual libs per dir).
2012-09-22 14:23:15 +02:00
James Turner
6e7ac46751 Cached joystick config loading.
Avoid parsing all the joystick configs every launch.
2012-09-21 10:17:16 +01:00
Stuart Buchanan
5c78970663 Stop the property tree from keeping a shadow of the deleted input properties, as it can mean that the array of bindings ends up with some incorrect name tags if the set of joystick config files changes and a given js-named entry shifts in the array. This can then result in incorrect bindings being selected. 2012-08-25 22:23:55 +01:00
Stuart Buchanan
cce186a57c Add properties for raw axis and button values, for use
in joystick configuration function.  Also rationalize references to
/sim/fg-home into a global property.
2012-08-23 21:52:30 +01:00
ThorstenB
e794bb8e25 Fix Linux compile / math dependency
wasn't redundant in one place
2012-05-05 12:16:20 +02:00
Frederic Bouvier
75fc136931 Remove redundant inclusion of math/SGMath.hxx 2012-05-05 11:20:04 +02:00