32 #include "cmd/ai/flykeyboard.h"
33 #include "cmd/ai/firekeyboard.h"
34 #include "cmd/music.h"
35 #include "gfx/loc_select.h"
39 #include "gfx/cockpit.h"
41 #include "python/python_compile.h"
42 #include "gfx/screenshot.h"
131 void GameVegaConfig::initKeyMap()
134 key_map[
"space"] =
' ';
135 key_map[
"return"] = WSK_RETURN;
136 key_map[
"enter"] = WSK_KP_ENTER;
137 key_map[
"function-1"] = WSK_F1;
138 key_map[
"function-2"] = WSK_F2;
139 key_map[
"function-3"] = WSK_F3;
140 key_map[
"function-4"] = WSK_F4;
141 key_map[
"function-5"] = WSK_F5;
142 key_map[
"function-6"] = WSK_F6;
143 key_map[
"function-7"] = WSK_F7;
144 key_map[
"function-8"] = WSK_F8;
145 key_map[
"function-9"] = WSK_F9;
146 key_map[
"function-10"] = WSK_F10;
147 key_map[
"function-11"] = WSK_F11;
148 key_map[
"function-12"] = WSK_F12;
149 key_map[
"function-13"] = WSK_F13;
150 key_map[
"function-14"] = WSK_F14;
151 key_map[
"function-15"] = WSK_F15;
152 key_map[
"keypad-insert"] = WSK_KP0;
153 key_map[
"keypad-0"] = WSK_KP0;
154 key_map[
"keypad-1"] = WSK_KP1;
155 key_map[
"keypad-2"] = WSK_KP2;
156 key_map[
"keypad-3"] = WSK_KP3;
157 key_map[
"keypad-4"] = WSK_KP4;
158 key_map[
"keypad-5"] = WSK_KP5;
159 key_map[
"keypad-6"] = WSK_KP6;
160 key_map[
"keypad-7"] = WSK_KP7;
161 key_map[
"keypad-8"] = WSK_KP8;
162 key_map[
"keypad-9"] = WSK_KP9;
163 key_map[
"less-than"] =
'<';
164 key_map[
"greater-than"] =
'>';
165 key_map[
"keypad-numlock"] = WSK_NUMLOCK;
166 key_map[
"keypad-period"] = WSK_KP_PERIOD;
167 key_map[
"keypad-delete"] = WSK_KP_PERIOD;
168 key_map[
"keypad-divide"] = WSK_KP_DIVIDE;
169 key_map[
"keypad-multiply"] = WSK_KP_MULTIPLY;
170 key_map[
"keypad-minus"] = WSK_KP_MINUS;
171 key_map[
"keypad-plus"] = WSK_KP_PLUS;
172 key_map[
"keypad-enter"] = WSK_KP_ENTER;
173 key_map[
"keypad-equals"] = WSK_KP_EQUALS;
174 key_map[
"scrollock"] = WSK_SCROLLOCK;
175 key_map[
"right-ctrl"] = WSK_RCTRL;
176 key_map[
"left-ctrl"] = WSK_LCTRL;
177 key_map[
"right-alt"] = WSK_RALT;
178 key_map[
"left-alt"] = WSK_LALT;
179 key_map[
"right-meta"] = WSK_RMETA;
180 key_map[
"left-meta"] = WSK_LMETA;
181 key_map[
"cursor-left"] = WSK_LEFT;
182 key_map[
"cursor-up"] = WSK_UP;
183 key_map[
"cursor-right"] = WSK_RIGHT;
184 key_map[
"cursor-down"] = WSK_DOWN;
185 key_map[
"cursor-pageup"] = WSK_PAGEUP;
186 key_map[
"cursor-pagedown"] = WSK_PAGEDOWN;
187 key_map[
"cursor-home"] = WSK_HOME;
188 key_map[
"cursor-end"] = WSK_END;
189 key_map[
"cursor-insert"] = WSK_INSERT;
190 key_map[
"backspace"] = WSK_BACKSPACE;
191 key_map[
"capslock"] = WSK_CAPSLOCK;
192 key_map[
"cursor-delete"] = WSK_DELETE;
193 key_map[
"tab"] = WSK_TAB;
194 key_map[
"esc"] = WSK_ESCAPE;
195 key_map[
"break"] = WSK_BREAK;
196 key_map[
"pause"] = WSK_PAUSE;
209 using namespace CockpitKeys;
213 static void ComposeFunctions(
const KBData &composition,
KBSTATE k )
215 std::string s = composition.
data;
216 while ( s.length() ) {
217 std::string::size_type where = s.find(
" " );
218 std::string t = s.substr( 0, where );
219 if (where != std::string::npos)
220 s = s.substr( where+1 );
223 where = t.find(
"(" );
225 if (where != string::npos) {
226 args = t.substr( where+1 );
227 std::string::size_type paren = args.find(
")" );
228 if (paren != string::npos)
229 args = args.substr( 0, paren );
230 t = t.substr( 0, where );
232 CommandMap::iterator i = commandMap.find( t );
233 if ( i != commandMap.end() )
234 (*i).second( args, k );
238 static void ComposeFunctionsToggle(
const KBData &composition,
KBSTATE k )
241 ComposeFunctions( composition, k );
244 void GameVegaConfig::initCommandMap()
250 void GameVegaConfig::doBindings(
configNode *node )
252 vector< easyDomNode* >::const_iterator siter;
253 for (siter = node->
subnodes.begin(); siter != node->
subnodes.end(); siter++) {
255 if ( (cnode)->Name() ==
"bind" )
257 else if ( ( (cnode)->Name() ==
"axis" ) )
260 cout<<
"Unknown tag: "<<(cnode)->Name()<<endl;
266 void GameVegaConfig::doAxis(
configNode *node )
269 string myjoystick = node->
attr_value(
"joystick" );
271 string invertstr = node->
attr_value(
"inverse" );
272 string mouse_str = node->
attr_value(
"mouse" );
273 if ( name.empty() || ( mouse_str.empty() && myjoystick.empty() ) || axis.empty() ) {
274 cout<<
"no correct axis desription given "<<endl;
277 int joy_nr = atoi( myjoystick.c_str() );
278 if ( !mouse_str.empty() )
280 int axis_nr = atoi( axis.c_str() );
284 bool inverse =
false;
285 if ( !invertstr.empty() )
288 axis_joy[0] = joy_nr;
291 }
else if (name ==
"y") {
292 axis_joy[1] = joy_nr;
295 }
else if (name ==
"z") {
296 axis_joy[2] = joy_nr;
299 }
else if (name ==
"throttle") {
300 axis_joy[3] = joy_nr;
303 }
else if (name ==
"hatswitch") {
305 string margin_str = node->
attr_value(
"margin" );
306 if ( nr_str.empty() || margin_str.empty() ) {
307 cout<<
"you have to assign a number and a margin to the hatswitch"<<endl;
310 int nr = atoi( nr_str.c_str() );
312 float margin = atof( margin_str.c_str() );
313 hatswitch_margin[nr] = margin;
315 hatswitch_axis[nr] = axis_nr;
316 hatswitch_joystick[nr] = joy_nr;
318 vector< easyDomNode* >::const_iterator siter;
321 for (siter = node->
subnodes.begin(); siter != node->
subnodes.end(); siter++) {
323 checkHatswitch( nr, cnode );
326 cout<<
"unknown axis "<<name<<endl;
333 void GameVegaConfig::checkHatswitch(
int nr,
configNode *node )
335 if (node->
Name() !=
"hatswitch") {
336 cout<<
"not a hatswitch node "<<endl;
340 float val = atof( strval.c_str() );
341 if (val > 1.0 || val < -1.0) {
342 cout<<
"only hatswitch values from -1.0 to 1.0 allowed"<<endl;
345 hatswitch[nr][hs_value_index] = val;
346 cout<<
"setting hatswitch nr "<<nr<<
" "<<hs_value_index<<
" = "<<val<<endl;
352 void GameVegaConfig::checkBind(
configNode *node )
354 if (node->
Name() !=
"bind") {
355 cout<<
"not a bind node "<<endl;
358 std::string tmp = node->
attr_value(
"modifier" );
361 string cmdstr = node->
attr_value(
"command" );
362 string player_bound = node->
attr_value(
"player" );
363 if ( player_bound.empty() )
366 if (handler == NULL) {
367 cout<<
"No such command: "<<cmdstr<<endl;
370 string player_str = node->
attr_value(
"player" );
371 string joy_str = node->
attr_value(
"joystick" );
372 string mouse_str = node->
attr_value(
"mouse" );
374 string additional_data = node->
attr_value(
"data" );
375 string buttonstr = node->
attr_value(
"button" );
376 string hat_str = node->
attr_value(
"hatswitch" );
377 string dighswitch = node->
attr_value(
"digital-hatswitch" );
378 string direction = node->
attr_value(
"direction" );
379 if ( !player_str.empty() ) {
380 if ( !joy_str.empty() ) {
381 int jn = atoi( joy_str.c_str() );
384 }
else if ( !mouse_str.empty() ) {
388 if ( !keystr.empty() ) {
391 if (keystr.length() == 1) {
394 int glut_key = key_map[keystr];
396 cout<<
"No such special key: "<<keystr<<endl;
401 }
else if ( !buttonstr.empty() ) {
403 int button_nr = atoi( buttonstr.c_str() );
404 if ( joy_str.empty() && mouse_str.empty() ) {
406 if ( hat_str.empty() ) {
407 cout<<
"you got to give a analogue hatswitch number"<<endl;
410 int hatswitch_nr = atoi( hat_str.c_str() );
417 if ( mouse_str.empty() )
418 joystick_nr = atoi( joy_str.c_str() );
421 if (
joystick[joystick_nr]->isAvailable() ) {
429 static bool first =
true;
431 cout<<
"\nrefusing to bind command to joystick (joy-nr too high)"<<endl;
436 }
else if ( !( dighswitch.empty() || direction.empty() || ( mouse_str.empty() && joy_str.empty() ) ) ) {
438 if ( dighswitch.empty() || direction.empty() || ( mouse_str.empty() && joy_str.empty() ) ) {
439 cout<<
"you have to specify joystick,digital-hatswitch,direction"<<endl;
442 int hsw_nr = atoi( dighswitch.c_str() );
445 if ( mouse_str.empty() )
446 joy_nr = atoi( joy_str.c_str() );
449 if ( !(
joystick[joy_nr]->isAvailable() && hsw_nr <
joystick[joy_nr]->nr_of_hats) ) {
450 cout<<
"refusing to bind digital hatswitch: no such hatswitch"<<endl;
454 if (direction ==
"center") {
456 }
else if (direction ==
"up") {
458 }
else if (direction ==
"right") {
460 }
else if (direction ==
"left") {
462 }
else if (direction ==
"down") {
464 }
else if (direction ==
"rightup") {
466 }
else if (direction ==
"rightdown") {
468 }
else if (direction ==
"leftup") {
470 }
else if (direction ==
"leftdown") {
473 cout<<
"no valid direction string"<<endl;
477 cout<<
"Bound joy "<<joy_nr<<
" hatswitch "<<hsw_nr<<
" dir_index "<<dir_index<<
" to command "<<cmdstr<<endl;
488 void GameVegaConfig::bindKeys()
490 doBindings( bindings );
498 commandMap[
"NoPositionalKey"] =
mute;
499 commandMap[
"DopplerInc"] =
incdop;
500 commandMap[
"Cockpit::NavScreen"] = GameCockpit::NavScreen;
501 commandMap[
"DopplerDec"] =
decdop;
502 commandMap[
"VolumeInc"] =
VolUp;
503 commandMap[
"VolumeDec"] =
VolDown;
506 commandMap[
"SetShieldsOneThird"] = FireKeyboard::SetShieldsOneThird;
507 commandMap[
"SetShieldsOff"] = FireKeyboard::SetShieldsOff;
508 commandMap[
"SetShieldsTwoThird"] = FireKeyboard::SetShieldsTwoThird;
509 commandMap[
"SwitchControl"] = GameCockpit::SwitchControl;
510 commandMap[
"Respawn"] = GameCockpit::Respawn;
511 commandMap[
"TurretControl"] = GameCockpit::TurretControl;
519 commandMap[
"SwitchWebcam"] = FlyByKeyboard::SwitchWebcam;
520 commandMap[
"SwitchSecured"] = FlyByKeyboard::SwitchSecured;
521 commandMap[
"ChangeCommStatus"] = FlyByKeyboard::ChangeCommStatus;
522 commandMap[
"UpFreq"] = FlyByKeyboard::UpFreq;
523 commandMap[
"DownFreq"] = FlyByKeyboard::DownFreq;
525 commandMap[
"ThrustModeKey"] = FlyByKeyboard::KSwitchFlightMode;
526 commandMap[
"ThrustRight"] = FlyByKeyboard::KThrustRight;
527 commandMap[
"ThrustLeft"] = FlyByKeyboard::KThrustLeft;
528 commandMap[
"ThrustBack"] = FlyByKeyboard::KThrustBack;
529 commandMap[
"ThrustFront"] = FlyByKeyboard::KThrustFront;
530 commandMap[
"ThrustDown"] = FlyByKeyboard::KThrustDown;
531 commandMap[
"ThrustUp"] = FlyByKeyboard::KThrustUp;
534 commandMap[
"ToggleAutotracking"] = FireKeyboard::ToggleAutotracking;
535 commandMap[
"SheltonKey"] = FlyByKeyboard::SheltonKey;
536 commandMap[
"MatchSpeedKey"] = FlyByKeyboard::MatchSpeedKey;
537 commandMap[
"PauseKey"] = FireKeyboard::TogglePause;
538 commandMap[
"JumpKey"] = FlyByKeyboard::JumpKey;
539 commandMap[
"AutoKey"] = FlyByKeyboard::AutoKey;
540 commandMap[
"SwitchCombatMode"] = FlyByKeyboard::SwitchCombatModeKey;
541 commandMap[
"StartKey"] = FlyByKeyboard::StartKey;
542 commandMap[
"StopKey"] = FlyByKeyboard::StopKey;
544 commandMap[
"UpKey"] = FlyByKeyboard::UpKey;
545 commandMap[
"DownKey"] = FlyByKeyboard::DownKey;
546 commandMap[
"LeftKey"] = FlyByKeyboard::LeftKey;
547 commandMap[
"RightKey"] = FlyByKeyboard::RightKey;
548 commandMap[
"ABKey"] = FlyByKeyboard::ABKey;
549 commandMap[
"AccelKey"] = FlyByKeyboard::AccelKey;
550 commandMap[
"DecelKey"] = FlyByKeyboard::DecelKey;
551 commandMap[
"RollLeftKey"] = FlyByKeyboard::RollLeftKey;
552 commandMap[
"RollRightKey"] = FlyByKeyboard::RollRightKey;
553 commandMap[
"SetVelocityRefKey"] = FlyByKeyboard::SetVelocityRefKey;
554 commandMap[
"SetVelocityNullKey"] = FlyByKeyboard::SetNullVelocityRefKey;
555 commandMap[
"ToggleGlow"] = FireKeyboard::ToggleGlow;
556 commandMap[
"ToggleWarpDrive"] = FireKeyboard::ToggleWarpDrive;
557 commandMap[
"ToggleAnimation"] = FireKeyboard::ToggleAnimation;
558 commandMap[
"CommAttackTarget"] = FireKeyboard::AttackTarget;
559 commandMap[
"ASAP"] = FlyByKeyboard::EngageSpecAuto;
561 commandMap[
"CommHelpMeOutCrit"] = FireKeyboard::HelpMeOutCrit;
562 commandMap[
"CommHelpMeOutFaction"] = FireKeyboard::HelpMeOutFaction;
563 commandMap[
"JoinFlightgroup"] = FireKeyboard::JoinFg;
564 commandMap[
"CommAttackTarget"] = FireKeyboard::AttackTarget;
565 commandMap[
"CommHelpMeOut"] = FireKeyboard::HelpMeOut;
566 commandMap[
"CommFormUp"] = FireKeyboard::FormUp;
567 commandMap[
"CommDockWithMe"] = FireKeyboard::DockWithMe;
568 commandMap[
"CommDefendTarget"] = FireKeyboard::DefendTarget;
569 commandMap[
"CommDockAtTarget"] = FireKeyboard::DockTarget;
570 commandMap[
"CommHoldPosition"] = FireKeyboard::HoldPosition;
572 commandMap[
"NearestHostileTargetKey"] = FireKeyboard::NearestHostileTargetKey;
573 commandMap[
"NearestDangerousHostileKey"] = FireKeyboard::NearestDangerousHostileKey;
574 commandMap[
"NearestFriendlyKey"] = FireKeyboard::NearestFriendlyKey;
575 commandMap[
"NearestBaseKey"] = FireKeyboard::NearestBaseKey;
576 commandMap[
"NearestPlanetKey"] = FireKeyboard::NearestPlanetKey;
577 commandMap[
"NearestJumpKey"] = FireKeyboard::NearestJumpKey;
580 commandMap[
"BlinkLeftKey"] = FireKeyboard::BlinkLeftKey;
581 commandMap[
"BlinkRightKey"] = FireKeyboard::BlinkRightKey;
582 commandMap[
"HeadlightKey"] = FireKeyboard::HeadlightKey;
583 commandMap[
"SirenKey"] = FireKeyboard::SirenKey;
585 commandMap[
"CommBreakForm"] = FireKeyboard::BreakFormation;
587 commandMap[
"Comm1Key"] = FireKeyboard::PressComm1Key;
588 commandMap[
"Comm2Key"] = FireKeyboard::PressComm2Key;
589 commandMap[
"Comm3Key"] = FireKeyboard::PressComm3Key;
590 commandMap[
"Comm4Key"] = FireKeyboard::PressComm4Key;
591 commandMap[
"Comm5Key"] = FireKeyboard::PressComm5Key;
592 commandMap[
"Comm6Key"] = FireKeyboard::PressComm6Key;
593 commandMap[
"Comm7Key"] = FireKeyboard::PressComm7Key;
594 commandMap[
"Comm8Key"] = FireKeyboard::PressComm8Key;
595 commandMap[
"Comm9Key"] = FireKeyboard::PressComm9Key;
596 commandMap[
"Comm10Key"] = FireKeyboard::PressComm10Key;
598 commandMap[
"SaveTarget1"] = FireKeyboard::SaveTarget1Key;
599 commandMap[
"SaveTarget2"] = FireKeyboard::SaveTarget2Key;
600 commandMap[
"SaveTarget3"] = FireKeyboard::SaveTarget3Key;
601 commandMap[
"SaveTarget4"] = FireKeyboard::SaveTarget4Key;
602 commandMap[
"SaveTarget5"] = FireKeyboard::SaveTarget5Key;
603 commandMap[
"SaveTarget6"] = FireKeyboard::SaveTarget6Key;
604 commandMap[
"SaveTarget7"] = FireKeyboard::SaveTarget7Key;
605 commandMap[
"SaveTarget8"] = FireKeyboard::SaveTarget8Key;
606 commandMap[
"SaveTarget9"] = FireKeyboard::SaveTarget9Key;
607 commandMap[
"SaveTarget10"] = FireKeyboard::SaveTarget10Key;
609 commandMap[
"RestoreTarget1"] = FireKeyboard::RestoreTarget1Key;
610 commandMap[
"RestoreTarget2"] = FireKeyboard::RestoreTarget2Key;
611 commandMap[
"RestoreTarget3"] = FireKeyboard::RestoreTarget3Key;
612 commandMap[
"RestoreTarget4"] = FireKeyboard::RestoreTarget4Key;
613 commandMap[
"RestoreTarget5"] = FireKeyboard::RestoreTarget5Key;
614 commandMap[
"RestoreTarget6"] = FireKeyboard::RestoreTarget6Key;
615 commandMap[
"RestoreTarget7"] = FireKeyboard::RestoreTarget7Key;
616 commandMap[
"RestoreTarget8"] = FireKeyboard::RestoreTarget8Key;
617 commandMap[
"RestoreTarget9"] = FireKeyboard::RestoreTarget9Key;
618 commandMap[
"RestoreTarget10"] = FireKeyboard::RestoreTarget10Key;
620 commandMap[
"FreeSlaves"] = FireKeyboard::FreeSlaveKey;
621 commandMap[
"Enslave"] = FireKeyboard::EnslaveKey;
622 commandMap[
"EjectCargoKey"] = FireKeyboard::EjectCargoKey;
623 commandMap[
"EjectNonMissionCargoKey"] = FireKeyboard::EjectNonMissionCargoKey;
624 commandMap[
"EjectKey"] = FireKeyboard::EjectKey;
625 commandMap[
"EjectDockKey"] = FireKeyboard::EjectDockKey;
627 commandMap[
"TurretAIOn"] = FireKeyboard::TurretAIOn;
628 commandMap[
"TurretAIOff"] = FireKeyboard::TurretAIOff;
629 commandMap[
"TurretAIFireAtWill"] = FireKeyboard::TurretFireAtWill;
631 commandMap[
"DockKey"] = FireKeyboard::DockKey;
632 commandMap[
"UnDockKey"] = FireKeyboard::UnDockKey;
633 commandMap[
"RequestClearenceKey"] = FireKeyboard::RequestClearenceKey;
634 commandMap[
"FireKey"] = FireKeyboard::FireKey;
635 commandMap[
"MissileKey"] = FireKeyboard::MissileKey;
636 commandMap[
"TargetKey"] = FireKeyboard::TargetKey;
637 commandMap[
"LockTargetKey"] = FireKeyboard::LockKey;
638 commandMap[
"ReverseTargetKey"] = FireKeyboard::ReverseTargetKey;
639 commandMap[
"PickTargetKey"] = FireKeyboard::PickTargetKey;
640 commandMap[
"SubUnitTargetKey"] = FireKeyboard::SubUnitTargetKey;
641 commandMap[
"NearestTargetKey"] = FireKeyboard::NearestTargetKey;
642 commandMap[
"MissileTargetKey"] = FireKeyboard::MissileTargetKey;
643 commandMap[
"IncomingMissileTargetKey"] = FireKeyboard::IncomingMissileTargetKey;
644 commandMap[
"ReverseMissileTargetKey"] = FireKeyboard::ReverseMissileTargetKey;
645 commandMap[
"ReverseIncomingMissileTargetKey"] = FireKeyboard::ReverseIncomingMissileTargetKey;
646 commandMap[
"ThreatTargetKey"] = FireKeyboard::ThreatTargetKey;
647 commandMap[
"SigTargetKey"] = FireKeyboard::SigTargetKey;
648 commandMap[
"UnitTargetKey"] = FireKeyboard::UnitTargetKey;
649 commandMap[
"ReversePickTargetKey"] = FireKeyboard::ReversePickTargetKey;
650 commandMap[
"ReverseNearestTargetKey"] = FireKeyboard::ReverseNearestTargetKey;
651 commandMap[
"ReverseThreatTargetKey"] = FireKeyboard::ReverseThreatTargetKey;
652 commandMap[
"ReverseSigTargetKey"] = FireKeyboard::ReverseSigTargetKey;
653 commandMap[
"ReverseUnitTargetKey"] = FireKeyboard::ReverseUnitTargetKey;
654 commandMap[
"MissionTargetKey"] = FireKeyboard::MissionTargetKey;
655 commandMap[
"ReverseMissionTargetKey"] = FireKeyboard::ReverseMissionTargetKey;
656 commandMap[
"TurretTargetKey"] = FireKeyboard::TargetTurretKey;
657 commandMap[
"TurretPickTargetKey"] = FireKeyboard::PickTargetTurretKey;
658 commandMap[
"TurretNearestTargetKey"] = FireKeyboard::NearestTargetTurretKey;
659 commandMap[
"TurretThreatTargetKey"] = FireKeyboard::ThreatTargetTurretKey;
660 commandMap[
"WeapSelKey"] = FireKeyboard::WeapSelKey;
661 commandMap[
"MisSelKey"] = FireKeyboard::MisSelKey;
662 commandMap[
"ReverseWeapSelKey"] = FireKeyboard::ReverseWeapSelKey;
663 commandMap[
"ReverseMisSelKey"] = FireKeyboard::ReverseMisSelKey;
664 commandMap[
"CloakKey"] = FireKeyboard::CloakKey;
665 commandMap[
"ECMKey"] = FireKeyboard::ECMKey;
671 commandMap[
"ComposeFunctions"] = ComposeFunctions;
672 commandMap[
"ComposeFunctionsToggle"] = ComposeFunctionsToggle;
708 commandMap[
"Cockpit::MapKey"] =
MapKey;
720 commandMap[
"Joystick::Mode::InertialXY"] = FlyByKeyboard::JoyInertialXYPulsorKey;
721 commandMap[
"Joystick::Mode::InertialXYToggle"] = FlyByKeyboard::JoyInertialXYToggleKey;
722 commandMap[
"Joystick::Mode::InertialXZ"] = FlyByKeyboard::JoyInertialXYPulsorKey;
723 commandMap[
"Joystick::Mode::InertialXZToggle"] = FlyByKeyboard::JoyInertialXYToggleKey;
724 commandMap[
"Joystick::Mode::Roll"] = FlyByKeyboard::JoyRollPulsorKey;
725 commandMap[
"Joystick::Mode::RollToggle"] = FlyByKeyboard::JoyRollToggleKey;
726 commandMap[
"Joystick::Mode::Bank"] = FlyByKeyboard::JoyBankPulsorKey;
727 commandMap[
"Joystick::Mode::BankToggle"] = FlyByKeyboard::JoyBankToggleKey;
729 commandMap[
"Flight::Mode::InertialPulsor"] = FlyByKeyboard::InertialPulsorKey;
730 commandMap[
"Flight::Mode::InertialToggle"] = FlyByKeyboard::InertialToggleKey;