3 Key binding definitions.
5 Regular keycodes go up to 255; special keys start at 256, and can be
6 calculated by adding 256 to the GLUT key value in glut.h.
8 All Nasal code in this file lives in a common Nasal namespace __kbd.
9 All <nasal> blocks on the top level are executed in the order from
10 top down before the key bindings are parsed.
16 # /devices/status/keyboard/event/modifier/ and /devices/status/keyboard/
17 # don't only have one BOOL child per modifier, but also contain the
18 # modifier bitmap themselves, using these bit values:
19 var mod = { shift: 1, ctrl: 2, alt: 4, meta: 8, super: 16, hyper: 32 };
21 var modifiers = props.globals.getNode("/devices/status/keyboard");
22 var shift = props.globals.getNode("/devices/status/keyboard/shift");
23 var ctrl = props.globals.getNode("/devices/status/keyboard/ctrl");
24 var alt = props.globals.getNode("/devices/status/keyboard/alt");
26 var space_release = func nil;
27 var space = func(state, mod) {
30 return space_release = func nil;
32 if (mod == 0 or mod == 1) {
33 controls.ptt(mod + 1);
34 space_release = func controls.ptt(0);
38 ## uncomment this line to get keycode reports printed to the terminal window
39 #setlistener("devices/status/keyboard/event", func(n) debug.dump(n.getValues()));
45 <desc>Toggle autopilot altitude lock</desc>
47 <command>nasal</command>
49 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
50 if ( node.getValue() == "altitude-hold" ) {
53 node.setValue( "altitude-hold" );
61 <desc>Toggle speedbrake</desc>
63 <command>property-toggle</command>
64 <property>/controls/flight/speedbrake</property>
70 <desc>Toggle clickable panel hotspots</desc>
72 <command>property-toggle</command>
73 <property>/sim/panel-hotspots</property>
79 <desc>Toggle autopilot glide slope lock</desc>
81 <command>nasal</command>
83 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
84 if ( node.getValue() == "gs1-hold" ) {
87 node.setValue( "gs1-hold" );
95 <desc>Toggle autopilot heading lock</desc>
97 <command>nasal</command>
99 var node = props.globals.getNode("/autopilot/locks/heading", 1);
100 if ( node.getValue() == "dg-heading-hold" ) {
103 node.setValue( "dg-heading-hold" );
109 <key n="10"> <!-- OSG -->
111 <desc>Move rudder right</desc>
112 <repeatable type="bool">true</repeatable>
114 <command>property-adjust</command>
115 <property>/controls/flight/rudder</property>
116 <step type="double">0.05</step>
120 <key n="13"> <!-- PLIB -->
122 <desc>Move rudder right</desc>
123 <repeatable type="bool">true</repeatable>
125 <command>property-adjust</command>
126 <property>/controls/flight/rudder</property>
127 <step type="double">0.05</step>
133 <desc>Toggle autopilot nav1 lock</desc>
135 <command>nasal</command>
137 var node = props.globals.getNode("/autopilot/locks/heading", 1);
138 if ( node.getValue() == "nav1-hold" ) {
141 node.setValue( "nav1-hold" );
149 <desc>Toggle pitch hold</desc>
151 <command>nasal</command>
153 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
154 if ( node.getValue() == "pitch-hold" ) {
157 node.setValue( "pitch-hold" );
158 var pitch = props.globals.getNode("/autopilot/settings/target-pitch-deg", 1);
159 pitch.setValue( getprop("/orientation/pitch-deg") );
167 <desc>Activate the instant replay system</desc>
169 <command>replay</command>
175 <desc>Toggle auto-throttle lock</desc>
177 <command>nasal</command>
179 var node = props.globals.getNode("/autopilot/locks/speed", 1);
180 if ( node.getValue() == "speed-with-throttle" ) {
183 node.setValue( "speed-with-throttle" );
191 <desc>Toggle autopilot terrain lock</desc>
193 <command>nasal</command>
195 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
196 if ( node.getValue() == "agl-hold" ) {
199 node.setValue( "agl-hold" );
200 var agl = props.globals.getNode("/autopilot/settings/target-agl-ft", 1);
201 agl.setValue( getprop("/position/altitude-agl-ft") );
209 <desc>[Cheat] Add 1000ft of emergency altitude</desc>
211 <command>property-adjust</command>
212 <property>/position/altitude-ft</property>
213 <step type="double">1000.0</step>
216 <command>property-assign</command>
217 <property>/sim/startup/onground</property>
218 <value type="bool">false</value>
224 <desc>Select initial view (view 0)</desc>
226 <command>property-assign</command>
227 <property>/sim/current-view/view-number</property>
234 <desc>Toggle autopilot wing leveler</desc>
236 <command>nasal</command>
238 var node = props.globals.getNode("/autopilot/locks/heading", 1);
239 if ( node.getValue() == "wing-leveler" ) {
242 node.setValue( "wing-leveler" );
250 <desc>Reset zoom to default</desc>
252 <command>property-assign</command>
253 <property>/sim/current-view/field-of-view</property>
254 <property>/sim/view/config/default-field-of-view-deg</property>
260 <desc>Prompt and quit FlightGear</desc>
262 <command>dialog-show</command>
263 <dialog-name>exit</dialog-name>
266 <desc>Reset FlightGear</desc>
268 <command>reset</command>
275 <desc>PTT - Push To Talk (via VoIP)</desc>
277 <command>nasal</command>
278 <script>space(1, modifiers.getValue())</script>
282 <command>nasal</command>
283 <script>space(0, modifiers.getValue())</script>
288 <command>nasal</command>
289 <script>space(1, modifiers.getValue())</script>
293 <command>nasal</command>
294 <script>space(0, modifiers.getValue())</script>
302 <desc>Select first engine</desc>
304 <command>nasal</command>
305 <script>controls.selectEngine(0)</script>
311 <desc>Select third engine</desc>
313 <command>nasal</command>
314 <script>controls.selectEngine(2)</script>
320 <desc>Select fourth engine</desc>
322 <command>nasal</command>
323 <script>controls.selectEngine(3)</script>
329 <desc>Display a dialog relevant to the tuned in ATC service (if any)</desc>
331 <command>ATC-dialog</command>
337 <desc>Let ATC/instructor repeat last message</desc>
339 <command>nasal</command>
340 <script>screen.msg_repeat()</script>
346 <desc>Left brake</desc>
348 <command>nasal</command>
349 <script>controls.applyBrakes(1, -1)</script>
353 <command>nasal</command>
354 <script>controls.applyBrakes(0, -1)</script>
361 <repeatable type="bool">false</repeatable>
362 <desc>Chat Menu</desc>
364 <command>dialog-show</command>
365 <dialog-name>chat-menu</dialog-name>
371 <desc>Right brake</desc>
373 <command>nasal</command>
374 <script>controls.applyBrakes(1, 1)</script>
378 <command>nasal</command>
379 <script>controls.applyBrakes(0, 1)</script>
386 <desc>Open property browser</desc>
390 <property>/sim/input/property-key-handler</property>
393 <command>nasal</command>
394 <script>gui.property_browser()</script>
398 <property>/sim/input/property-key-handler</property>
400 <command>nasal</command>
401 <script>prop_key_handler.start()</script>
407 <desc>Move rudder left</desc>
408 <repeatable type="bool">true</repeatable>
410 <command>property-adjust</command>
411 <property>/controls/flight/rudder</property>
412 <step type="double">-0.05</step>
418 <desc>Decrease elevator trim</desc>
419 <repeatable type="bool">true</repeatable>
421 <command>property-adjust</command>
422 <property>/controls/flight/elevator-trim</property>
423 <step type="double">-0.001</step>
426 <desc>Look back left</desc>
428 <command>property-assign</command>
429 <property>/sim/current-view/goal-heading-offset-deg</property>
430 <property>/sim/view/config/back-left-direction-deg</property>
437 <desc>Increase elevator or autopilot altitude</desc>
438 <repeatable type="bool">true</repeatable>
440 <command>nasal</command>
442 controls.incElevator(-0.05, 100)
446 <desc>Look back</desc>
448 <command>property-assign</command>
449 <property>/sim/current-view/goal-heading-offset-deg</property>
450 <property>/sim/view/config/back-direction-deg</property>
457 <desc>Decrease throttle or autopilot autothrottle</desc>
458 <repeatable type="bool">true</repeatable>
460 <command>nasal</command>
462 controls.incThrottle(-0.01, -1.0)
466 <desc>Look back right</desc>
468 <command>property-assign</command>
469 <property>/sim/current-view/goal-heading-offset-deg</property>
470 <property>/sim/view/config/back-right-direction-deg</property>
477 <desc>Move aileron left (or adjust AP heading.)</desc>
478 <repeatable type="bool">true</repeatable>
480 <command>nasal</command>
482 controls.incAileron(-0.05, -1.0)
486 <desc>Look left</desc>
488 <command>property-assign</command>
489 <property>/sim/current-view/goal-heading-offset-deg</property>
490 <property>/sim/view/config/left-direction-deg</property>
497 <desc>Center aileron, elevator, and rudder</desc>
499 <command>nasal</command>
500 <script>controls.centerFlightControls()</script>
506 <desc>Move aileron right (or adjust AP heading.)</desc>
507 <repeatable type="bool">true</repeatable>
509 <command>nasal</command>
511 controls.incAileron(0.05, 1.0)
515 <desc>Look right</desc>
517 <command>property-assign</command>
518 <property>/sim/current-view/goal-heading-offset-deg</property>
519 <property>/sim/view/config/right-direction-deg</property>
526 <desc>Increase elevator trim</desc>
527 <repeatable type="bool">true</repeatable>
529 <command>property-adjust</command>
530 <property>/controls/flight/elevator-trim</property>
531 <step type="double">0.001</step>
534 <desc>Look front left</desc>
536 <command>property-assign</command>
537 <property>/sim/current-view/goal-heading-offset-deg</property>
538 <property>/sim/view/config/front-left-direction-deg</property>
545 <desc>Decrease elevator or autopilot altitude</desc>
546 <repeatable type="bool">true</repeatable>
548 <command>nasal</command>
550 controls.incElevator(0.05, -100)
554 <desc>Look forward</desc>
556 <command>property-assign</command>
557 <property>/sim/current-view/goal-heading-offset-deg</property>
558 <property>/sim/view/config/front-direction-deg</property>
565 <desc>Increase throttle or autopilot autothrottle</desc>
566 <repeatable type="bool">true</repeatable>
568 <command>nasal</command>
570 controls.incThrottle(0.01, 1.0)
574 <desc>Look front right</desc>
576 <command>property-assign</command>
577 <property>/sim/current-view/goal-heading-offset-deg</property>
578 <property>/sim/view/config/front-right-direction-deg</property>
585 <desc>Start multikey command</desc>
587 <command>nasal</command>
588 <script>multikey.start()</script>
594 <desc>Show help dialog</desc>
596 <command>nasal</command>
597 <script>gui.showHelpDialog("/sim/help", 1)</script>
603 <desc>Select second engine</desc>
605 <command>nasal</command>
606 <script>controls.selectEngine(1)</script>
612 <desc>Decrease speed-up</desc>
614 <command>property-adjust</command>
615 <property>/sim/speed-up</property>
617 <step type="double">-1</step>
623 <desc>Toggle parking brake on or off</desc>
625 <command>nasal</command>
626 <script>controls.applyParkingBrake(1)</script>
630 <command>nasal</command>
631 <script>controls.applyParkingBrake(0)</script>
638 <desc>Gear down</desc>
640 <command>nasal</command>
641 <script>controls.gearDown(1)</script>
645 <command>nasal</command>
646 <script>controls.gearDown(0)</script>
653 <desc>Cycle HUD Brightness</desc>
655 <command>nasal</command>
656 <script>aircraft.HUD.cycle_brightness()</script>
662 <desc>Switch to and toggle alternative HUD types</desc>
664 <command>nasal</command>
665 <script>aircraft.HUD.cycle_type()</script>
671 <desc>Mixture leaner</desc>
672 <repeatable type="bool">true</repeatable>
674 <command>nasal</command>
675 <script>controls.adjMixture(-1)</script>
681 <desc>Propeller Coarser</desc>
682 <repeatable type="bool">true</repeatable>
684 <command>nasal</command>
685 <script>controls.adjPropeller(-1)</script>
691 <desc>Toggle panel</desc>
693 <command>property-toggle</command>
694 <property>/sim/panel/visibility</property>
700 <desc>Swap panels</desc>
704 <property>/sim/allow-toggle-cockpit</property>
707 <command>property-swap</command>
708 <property>/sim/panel/path</property>
709 <property>/sim/panel_2/path</property>
714 <property>/sim/allow-toggle-cockpit</property>
717 <command>panel-load</command>
723 <desc>Decrease warp delta</desc>
725 <command>property-adjust</command>
726 <property>/sim/time/warp-delta</property>
727 <step type="int">-30</step>
733 <desc>Scroll in reverse through views</desc>
735 <command>nasal</command>
736 <script>view.stepView(-1)</script>
742 <desc>Decrease warp</desc>
744 <command>property-adjust</command>
745 <property>/sim/time/warp</property>
746 <step type="int">-60</step>
752 <desc>Increase field of view</desc>
753 <repeatable type="bool">true</repeatable>
755 <command>nasal</command>
756 <script>view.increase()</script>
762 <desc>Decrease Visibility</desc>
763 <repeatable type="bool">true</repeatable>
765 <command>decrease-visibility</command>
771 <desc>Decrease flaps</desc>
773 <command>nasal</command>
774 <script>controls.flapsDown(-1)</script>
778 <command>nasal</command>
779 <script>controls.flapsDown(0)</script>
786 <desc>Increase flaps</desc>
788 <command>nasal</command>
789 <script>controls.flapsDown(1)</script>
793 <command>nasal</command>
794 <script>controls.flapsDown(0)</script>
801 <repeatable type="bool">false</repeatable>
802 <desc>Compose Chat</desc>
804 <command>nasal</command>
805 <script>multiplayer.compose_message()</script>
811 <desc>Increase speed-up</desc>
813 <command>property-adjust</command>
814 <property>/sim/speed-up</property>
816 <step type="double">1</step>
822 <desc>Apply all brakes</desc>
824 <command>nasal</command>
825 <script>controls.applyBrakes(1)</script>
829 <command>nasal</command>
830 <script>controls.applyBrakes(0)</script>
837 <desc>Toggle 3D/2D cockpit</desc>
839 <command>nasal</command>
841 if(getprop("/sim/allow-toggle-cockpit")) {
842 setprop("/sim/current-view/internal", !getprop("/sim/current-view/internal"));
843 setprop("/sim/view/internal", getprop("/sim/current-view/internal"));
844 setprop("/sim/virtual-cockpit", !getprop("/sim/virtual-cockpit"));
845 if(getprop("/sim/current-view/internal")) {
846 setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/config/heading-offset-deg"));
847 setprop("/sim/current-view/pitch-offset-deg", getprop("/sim/current-view/config/pitch-offset-deg"));
849 setprop("/sim/current-view/heading-offset-deg", 0);
850 setprop("/sim/current-view/pitch-offset-deg", 0);
861 <command>nasal</command>
862 <script>controls.gearDown(-1)</script>
866 <command>nasal</command>
867 <script>controls.gearDown(0)</script>
874 <desc>HUD Master Switch</desc>
876 <command>nasal</command>
877 <script>aircraft.HUD.cycle_color()</script>
883 <desc>Normal HUD</desc>
885 <command>nasal</command>
886 <script>aircraft.HUD.normal_type()</script>
892 <desc>Decrease spoilers</desc>
894 <command>nasal</command>
895 <script>controls.stepSpoilers(-1)</script>
901 <desc>Increase spoilers</desc>
903 <command>nasal</command>
904 <script>controls.stepSpoilers(1)</script>
910 <desc>Toggle tail-wheel lock</desc>
912 <command>property-toggle</command>
913 <property>/controls/gear/tailwheel-lock</property>
919 <desc>Mixture richer</desc>
920 <repeatable type="bool">true</repeatable>
922 <command>nasal</command>
923 <script>controls.adjMixture(1)</script>
929 <desc>Propeller Finer</desc>
930 <repeatable type="bool">true</repeatable>
932 <command>nasal</command>
933 <script>controls.adjPropeller(1)</script>
939 <desc>Toggle the pause state of the sim</desc>
941 <command>property-toggle</command>
942 <property>/sim/freeze/master</property>
945 <command>property-toggle</command>
946 <property>/sim/freeze/clock</property>
950 <property>/sim/freeze/replay-state</property>
952 <command>property-assign</command>
953 <property>/sim/freeze/replay-state</property>
954 <value type="int">0</value>
960 <desc>Fire Starter on Selected Engine(s)</desc>
962 <command>nasal</command>
963 <script>controls.startEngine(1)</script>
967 <command>nasal</command>
968 <script>controls.startEngine(0)</script>
981 <desc>Increase warp delta</desc>
983 <command>property-adjust</command>
984 <property>/sim/time/warp-delta</property>
985 <step type="int">30</step>
988 <command>nasal</command>
993 gui.popupTip("resetting warp");
994 setprop("/sim/time/warp-delta", 0);
1001 <command>nasal</command>
1002 <script>t_id += 1</script>
1009 <desc>Scroll through views</desc>
1011 <command>nasal</command>
1012 <script>view.stepView(1)</script>
1018 <desc>Increase warp</desc>
1020 <command>property-adjust</command>
1021 <property>/sim/time/warp</property>
1022 <step type="int">60</step>
1028 <desc>Decrease field of view</desc>
1029 <repeatable type="bool">true</repeatable>
1031 <command>nasal</command>
1032 <script>view.decrease()</script>
1038 <desc>Increase Visibility</desc>
1039 <repeatable type="bool">true</repeatable>
1041 <command>increase-visibility</command>
1047 <desc>Decrease Magneto on Selected Engine</desc>
1049 <command>nasal</command>
1050 <script>controls.stepMagnetos(-1)</script>
1054 <command>nasal</command>
1055 <script>controls.stepMagnetos(0)</script>
1062 <desc>Increase Magneto on Selected Engine</desc>
1064 <command>nasal</command>
1065 <script>controls.stepMagnetos(1)</script>
1069 <command>nasal</command>
1070 <script>controls.stepMagnetos(0)</script>
1077 <desc>Select all engines</desc>
1079 <command>nasal</command>
1080 <script>controls.selectAllEngines()</script>
1087 <desc>Load flight</desc>
1089 <command>load</command>
1096 <desc>Save flight</desc>
1098 <command>save</command>
1099 <write-all>false</write-all>
1106 <desc>Capture screen</desc>
1108 <command>nasal</command>
1110 var success = fgcommand("screen-capture");
1111 var path = getprop("/sim/paths/screenshot-last");
1113 gui.popupTip("Screenshot written to '" ~ path ~ "'");
1115 gui.popupTip("Error writing screenshot '" ~ path ~ "'");
1119 <desc>Load panel</desc>
1121 <command>panel-load</command>
1128 <repeatable type="bool">true</repeatable>
1130 <desc>Scroll panel down</desc>
1132 <command>property-adjust</command>
1133 <property>/sim/panel/y-offset</property>
1134 <step type="int">-5</step>
1141 <desc>Toggle Autopilot Heading Mode</desc>
1142 <repeatable type="bool">true</repeatable>
1144 <command>nasal</command>
1146 var prop = "/autopilot/locks/heading";
1147 var curr = getprop(prop);
1148 if(curr == "true-heading-hold") { setprop(prop, ""); }
1149 else { setprop(prop, "true-heading-hold"); }
1153 <desc>Scroll panel up</desc>
1155 <command>property-adjust</command>
1156 <property>/sim/panel/y-offset</property>
1157 <step type="int">5</step>
1164 <repeatable type="bool">true</repeatable>
1166 <desc>Scroll panel left</desc>
1168 <command>property-adjust</command>
1169 <property>/sim/panel/x-offset</property>
1170 <step type="int">-5</step>
1178 <repeatable type="bool">true</repeatable>
1180 <desc>Scroll panel right</desc>
1182 <command>property-adjust</command>
1183 <property>/sim/panel/x-offset</property>
1184 <step type="int">5</step>
1191 <desc>Toggle menubar</desc>
1193 <command>property-toggle</command>
1194 <property>/sim/menubar/visibility</property>
1197 <desc>Switch to next GUI style</desc>
1199 <command>nasal</command>
1200 <script>gui.nextStyle()</script>
1207 <desc>Pop up autopilot dialog</desc>
1209 <command>dialog-show</command>
1210 <dialog-name>autopilot</dialog-name>
1216 <desc>Pop up radio settings dialog</desc>
1218 <command>dialog-show</command>
1219 <dialog-name>radios</dialog-name>
1225 <desc>Move rudder right</desc>
1226 <repeatable type="bool">true</repeatable>
1228 <command>property-adjust</command>
1229 <property>/controls/flight/rudder</property>
1230 <step type="double">0.05</step>
1235 <name>Keypad 5</name>
1236 <desc>Center aileron, elevator, and rudder</desc>
1238 <command>nasal</command>
1239 <script>controls.centerFlightControls()</script>
1245 <desc>Move aileron left (or adjust AP heading.)</desc>
1246 <repeatable type="bool">true</repeatable>
1248 <command>nasal</command>
1250 controls.incAileron(-0.05, -1.0)
1254 <desc>Look left</desc>
1256 <command>property-assign</command>
1257 <property>/sim/current-view/goal-heading-offset-deg</property>
1258 <property>/sim/view/config/left-direction-deg</property>
1265 <desc>Increase elevator or autopilot altitude</desc>
1266 <repeatable type="bool">true</repeatable>
1268 <command>nasal</command>
1270 controls.incElevator(0.05, -100)
1274 <desc>Look forward</desc>
1276 <command>property-assign</command>
1277 <property>/sim/current-view/goal-heading-offset-deg</property>
1278 <property>/sim/view/config/front-direction-deg</property>
1285 <desc>Move aileron right (or adjust AP heading.)</desc>
1286 <repeatable type="bool">true</repeatable>
1288 <command>nasal</command>
1290 controls.incAileron(0.05, 1.0)
1292 <step type="double">0.05</step>
1295 <desc>Look right</desc>
1297 <command>property-assign</command>
1298 <property>/sim/current-view/goal-heading-offset-deg</property>
1299 <property>/sim/view/config/right-direction-deg</property>
1306 <desc>Decrease elevator or autopilot altitude</desc>
1307 <repeatable type="bool">true</repeatable>
1309 <command>nasal</command>
1311 controls.incElevator(-0.05, 100)
1315 <desc>Look backwards</desc>
1317 <command>property-assign</command>
1318 <property>/sim/current-view/goal-heading-offset-deg</property>
1319 <property>/sim/view/config/back-direction-deg</property>
1326 <desc>Increase throttle or autopilot autothrottle</desc>
1327 <repeatable type="bool">true</repeatable>
1329 <command>nasal</command>
1331 controls.incThrottle(0.01, 1.0)
1335 <desc>Look front right</desc>
1337 <command>property-assign</command>
1338 <property>/sim/current-view/goal-heading-offset-deg</property>
1339 <property>/sim/view/config/front-right-direction-deg</property>
1345 <name>PageDown</name>
1346 <desc>Decrease throttle or autopilot autothrottle</desc>
1347 <repeatable type="bool">true</repeatable>
1349 <command>nasal</command>
1351 controls.incThrottle(-0.01, -1.0)
1355 <desc>Look back right</desc>
1357 <command>property-assign</command>
1358 <property>/sim/current-view/goal-heading-offset-deg</property>
1359 <property>/sim/view/config/back-right-direction-deg</property>
1366 <desc>Increase elevator trim</desc>
1367 <repeatable type="bool">true</repeatable>
1369 <command>property-adjust</command>
1370 <property>/controls/flight/elevator-trim</property>
1371 <step type="double">0.001</step>
1374 <desc>Look front left</desc>
1376 <command>property-assign</command>
1377 <property>/sim/current-view/goal-heading-offset-deg</property>
1378 <property>/sim/view/config/front-left-direction-deg</property>
1385 <desc>Decrease elevator trim</desc>
1386 <repeatable type="bool">true</repeatable>
1388 <command>property-adjust</command>
1389 <property>/controls/flight/elevator-trim</property>
1390 <step type="double">-0.001</step>
1393 <desc>Look back left</desc>
1395 <command>property-assign</command>
1396 <property>/sim/current-view/goal-heading-offset-deg</property>
1397 <property>/sim/view/config/back-left-direction-deg</property>
1404 <desc>Move rudder left</desc>
1405 <repeatable type="bool">true</repeatable>
1407 <command>property-adjust</command>
1408 <property>/controls/flight/rudder</property>
1409 <step type="double">-0.05</step>
1415 <!-- end of keyboard.xml -->