static bool
getModShift ()
{
- return bool(fgGetKeyModifiers() & KEYMOD_SHIFT);
+ return (fgGetKeyModifiers() & KEYMOD_SHIFT) != 0;
}
static bool
getModCtrl ()
{
- return bool(fgGetKeyModifiers() & KEYMOD_CTRL);
+ return (fgGetKeyModifiers() & KEYMOD_CTRL) != 0;
}
static bool
getModAlt ()
{
- return bool(fgGetKeyModifiers() & KEYMOD_ALT);
+ return (fgGetKeyModifiers() & KEYMOD_ALT) != 0;
}
static bool
getModMeta ()
{
- return bool(fgGetKeyModifiers() & KEYMOD_META);
+ return (fgGetKeyModifiers() & KEYMOD_META) != 0;
}
static bool
getModSuper ()
{
- return bool(fgGetKeyModifiers() & KEYMOD_SUPER);
+ return (fgGetKeyModifiers() & KEYMOD_SUPER) != 0;
}
static bool
getModHyper ()
{
- return bool(fgGetKeyModifiers() & KEYMOD_HYPER);
+ return (fgGetKeyModifiers() & KEYMOD_HYPER) != 0;
}
\f
_key_code = k;
_key_modifiers = modifiers >> 1;
- _key_pressed = !bool(modifiers & KEYMOD_RELEASED);
- _key_shift = bool(modifiers & KEYMOD_SHIFT);
- _key_ctrl = bool(modifiers & KEYMOD_CTRL);
- _key_alt = bool(modifiers & KEYMOD_ALT);
- _key_meta = bool(modifiers & KEYMOD_META);
- _key_super = bool(modifiers & KEYMOD_SUPER);
- _key_hyper = bool(modifiers & KEYMOD_HYPER);
+ _key_pressed = (modifiers & KEYMOD_RELEASED) == 0;
+ _key_shift = (modifiers & KEYMOD_SHIFT) != 0;
+ _key_ctrl = (modifiers & KEYMOD_CTRL) != 0;
+ _key_alt = (modifiers & KEYMOD_ALT) != 0;
+ _key_meta = (modifiers & KEYMOD_META) != 0;
+ _key_super = (modifiers & KEYMOD_SUPER) != 0;
+ _key_hyper = (modifiers & KEYMOD_HYPER) != 0;
_key_event->fireValueChanged();
if (_key_code < 0)
return;
<< "\"\nUsing default: \"" << source << '"');
} else {
- throw sg_throwable(string("No joystick configuration file with "
- "<name>default</name> entry found!"));
+ throw sg_exception(string("No joystick configuration file with <name>")
+ + name + "</name> entry found!");
}
js_node = js_nodes->getChild("js", i, true);
void
FGInput::_update_joystick (double dt)
{
+ float axis_values[MAX_JOYSTICK_AXES];
int modifiers = fgGetKeyModifiers();
int buttons;
- float axis_values[MAX_JOYSTICK_AXES];
-
- int i;
- int j;
- for ( i = 0; i < MAX_JOYSTICKS; i++) {
+ for (int i = 0; i < MAX_JOYSTICKS; i++) {
jsJoystick * js = _joystick_bindings[i].js;
if (js == 0 || js->notWorking())
js->read(&buttons, axis_values);
// Fire bindings for the axes.
- for ( j = 0; j < _joystick_bindings[i].naxes; j++) {
+ for (int j = 0; j < _joystick_bindings[i].naxes; j++) {
axis &a = _joystick_bindings[i].axes[j];
-
+
// 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) {
-// SG_LOG(SG_INPUT, SG_DEBUG, "Axis " << j << " has moved");
a.last_value = axis_values[j];
-// SG_LOG(SG_INPUT, SG_DEBUG, "There are "
-// << a.bindings[modifiers].size() << " bindings");
- for (unsigned int k = 0; k < a.bindings[modifiers].size(); k++)
- a.bindings[modifiers][k]->fire(axis_values[j]);
+ for (unsigned int k = 0; k < a.bindings[KEYMOD_NONE].size(); k++)
+ a.bindings[KEYMOD_NONE][k]->fire(axis_values[j]);
}
-
+
// do we have to emulate axis buttons?
a.last_dt += dt;
if(a.last_dt >= a.interval_sec) {
modifiers,
axis_values[j] < a.low_threshold,
-1, -1);
-
+
if (a.high.bindings[modifiers].size())
_update_button(_joystick_bindings[i].axes[j].high,
modifiers,
}
// Fire bindings for the buttons.
- for (j = 0; j < _joystick_bindings[i].nbuttons; j++) {
+ for (int j = 0; j < _joystick_bindings[i].nbuttons; j++) {
button &b = _joystick_bindings[i].buttons[j];
b.last_dt += dt;
if(b.last_dt >= b.interval_sec) {
if ( fgGetBool( "/sim/mouse/hide-cursor", true ) ) {
if ( m.x != m.save_x || m.y != m.save_y ) {
m.timeout = fgGetDouble( "/sim/mouse/cursor-timeout-sec", 10.0 );
- fgSetMouseCursor(m.modes[mode].cursor);
+ if (fgGetMouseCursor() == MOUSE_CURSOR_NONE)
+ fgSetMouseCursor(m.modes[mode].cursor);
} else {
m.timeout -= dt;
if ( m.timeout <= 0.0 ) {