X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInput%2FFGKeyboardInput.cxx;h=3f5bdfcb2cfacb12b66094b545ab3e404b8bbf11;hb=e59fabaf8276a0f49266e47ff2f59a93b0c7700c;hp=94c485c6a184d0402eef6313f9e9834339947173;hpb=dee0b6459e41f7c08e74321c51f3149f955262a0;p=flightgear.git diff --git a/src/Input/FGKeyboardInput.cxx b/src/Input/FGKeyboardInput.cxx index 94c485c6a..3f5bdfcb2 100644 --- a/src/Input/FGKeyboardInput.cxx +++ b/src/Input/FGKeyboardInput.cxx @@ -22,6 +22,10 @@ // // $Id$ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include "FGKeyboardInput.hxx" #include
#include @@ -67,7 +71,16 @@ static bool getModHyper () FGKeyboardInput * FGKeyboardInput::keyboardInput = NULL; FGKeyboardInput::FGKeyboardInput() : - _key_event(fgGetNode("/devices/status/keyboard/event", true)) + _key_event(fgGetNode("/devices/status/keyboard/event", true)), + _key_code(0), + _key_modifiers(0), + _key_pressed(0), + _key_shift(0), + _key_ctrl(0), + _key_alt(0), + _key_meta(0), + _key_super(0), + _key_hyper(0) { if( keyboardInput == NULL ) keyboardInput = this; @@ -120,44 +133,29 @@ void FGKeyboardInput::postinit() void FGKeyboardInput::bind() { - fgTie("/devices/status/keyboard", getModifiers); - fgTie("/devices/status/keyboard/shift", getModShift); - fgTie("/devices/status/keyboard/ctrl", getModCtrl); - fgTie("/devices/status/keyboard/alt", getModAlt); - fgTie("/devices/status/keyboard/meta", getModMeta); - fgTie("/devices/status/keyboard/super", getModSuper); - fgTie("/devices/status/keyboard/hyper", getModHyper); - - _key_event->tie("key", SGRawValuePointer(&_key_code)); - _key_event->tie("pressed", SGRawValuePointer(&_key_pressed)); - _key_event->tie("modifier", SGRawValuePointer(&_key_modifiers)); - _key_event->tie("modifier/shift", SGRawValuePointer(&_key_shift)); - _key_event->tie("modifier/ctrl", SGRawValuePointer(&_key_ctrl)); - _key_event->tie("modifier/alt", SGRawValuePointer(&_key_alt)); - _key_event->tie("modifier/meta", SGRawValuePointer(&_key_meta)); - _key_event->tie("modifier/super", SGRawValuePointer(&_key_super)); - _key_event->tie("modifier/hyper", SGRawValuePointer(&_key_hyper)); + _tiedProperties.setRoot(fgGetNode("/devices/status", true)); + _tiedProperties.Tie("keyboard", getModifiers); + _tiedProperties.Tie("keyboard/shift", getModShift); + _tiedProperties.Tie("keyboard/ctrl", getModCtrl); + _tiedProperties.Tie("keyboard/alt", getModAlt); + _tiedProperties.Tie("keyboard/meta", getModMeta); + _tiedProperties.Tie("keyboard/super", getModSuper); + _tiedProperties.Tie("keyboard/hyper", getModHyper); + + _tiedProperties.Tie(_key_event->getNode("key", true), SGRawValuePointer(&_key_code)); + _tiedProperties.Tie(_key_event->getNode("pressed", true), SGRawValuePointer(&_key_pressed)); + _tiedProperties.Tie(_key_event->getNode("modifier", true), SGRawValuePointer(&_key_modifiers)); + _tiedProperties.Tie(_key_event->getNode("modifier/shift", true), SGRawValuePointer(&_key_shift)); + _tiedProperties.Tie(_key_event->getNode("modifier/ctrl", true), SGRawValuePointer(&_key_ctrl)); + _tiedProperties.Tie(_key_event->getNode("modifier/alt", true), SGRawValuePointer(&_key_alt)); + _tiedProperties.Tie(_key_event->getNode("modifier/meta", true), SGRawValuePointer(&_key_meta)); + _tiedProperties.Tie(_key_event->getNode("modifier/super", true), SGRawValuePointer(&_key_super)); + _tiedProperties.Tie(_key_event->getNode("modifier/hyper", true), SGRawValuePointer(&_key_hyper)); } void FGKeyboardInput::unbind() { - fgUntie("/devices/status/keyboard"); - fgUntie("/devices/status/keyboard/shift"); - fgUntie("/devices/status/keyboard/ctrl"); - fgUntie("/devices/status/keyboard/alt"); - fgUntie("/devices/status/keyboard/meta"); - fgUntie("/devices/status/keyboard/super"); - fgUntie("/devices/status/keyboard/hyper"); - - _key_event->untie("key"); - _key_event->untie("pressed"); - _key_event->untie("modifier"); - _key_event->untie("modifier/shift"); - _key_event->untie("modifier/ctrl"); - _key_event->untie("modifier/alt"); - _key_event->untie("modifier/meta"); - _key_event->untie("modifier/super"); - _key_event->untie("modifier/hyper"); + _tiedProperties.Untie(); } void FGKeyboardInput::update( double dt ) @@ -204,7 +202,8 @@ void FGKeyboardInput::doKey (int k, int modifiers, int x, int y) { // Sanity check. if (k < 0 || k >= MAX_KEYS) { - SG_LOG(SG_INPUT, SG_WARN, "Key value " << k << " out of range"); + // normal for unsupported keys (i.e. left/right shift key press events) + SG_LOG(SG_INPUT, SG_DEBUG, "Key value " << k << " out of range"); return; }