//
// $Id$
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "FGJoystickInput.hxx"
+
+#include <simgear/props/props_io.hxx>
#include "FGDeviceConfigurationMap.hxx"
#include <Main/fg_props.hxx>
#include <Scripting/NasalSys.hxx>
//
// Initialize nasal groups.
//
- ostringstream str;
+ std::ostringstream str;
str << "__js" << i;
string module = str.str();
nasalsys->createModule(module.c_str(), module.c_str(), "", 0);
if (num_node != 0) {
n_axis = num_node->getIntValue(TGT_PLATFORM, -1);
+ #ifdef SG_MAC
+ // Mac falls back to Unix by default - avoids specifying many
+ // duplicate <mac> entries in joystick config files
+ if (n_axis < 0) {
+ n_axis = num_node->getIntValue("unix", -1);
+ }
+ #endif
+
// Silently ignore platforms that are not specified within the
// <number></number> section
- if (n_axis < 0)
- continue;
+ if (n_axis < 0) {
+ continue;
+ }
}
if (n_axis >= naxes) {
// Do nothing if the axis position
// is unchanged; only a change in
// position fires the bindings.
- if (fabs(axis_values[j] - a.last_value) > a.tolerance) {
+ // But only if there are bindings
+ if (fabs(axis_values[j] - a.last_value) > a.tolerance
+ && a.bindings[KEYMOD_NONE].size() > 0 ) {
a.last_value = axis_values[j];
for (unsigned int k = 0; k < a.bindings[KEYMOD_NONE].size(); k++)
a.bindings[KEYMOD_NONE][k]->fire(axis_values[j]);