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 <!-- Tab key, also Ctrl-I, bit odd -->
112 <desc>Cycle mouse mode</desc>
116 <not><property>/devices/status/keyboard/alt</property></not>
117 <not><property>/devices/status/keyboard/ctrl</property></not>
119 <command>cycle-mouse-mode</command>
120 <reason>key-press</reason>
124 <key n="10"> <!-- OSG -->
126 <desc>Move rudder right</desc>
127 <repeatable type="bool">true</repeatable>
129 <command>property-adjust</command>
130 <property>/controls/flight/rudder</property>
131 <step type="double">0.05</step>
134 <!-- Ctrl-M generates Enter, but we want to show the map in that case -->
137 <command>dialog-show</command>
138 <dialog-name>map</dialog-name>
143 <key n="13"> <!-- PLIB -->
145 <desc>Move rudder right</desc>
146 <repeatable type="bool">true</repeatable>
148 <command>property-adjust</command>
149 <property>/controls/flight/rudder</property>
150 <step type="double">0.05</step>
156 <desc>Toggle autopilot nav1 lock</desc>
158 <command>nasal</command>
160 var node = props.globals.getNode("/autopilot/locks/heading", 1);
161 if ( node.getValue() == "nav1-hold" ) {
164 node.setValue( "nav1-hold" );
172 <desc>Toggle pitch hold</desc>
174 <command>nasal</command>
176 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
177 if ( node.getValue() == "pitch-hold" ) {
180 node.setValue( "pitch-hold" );
181 var pitch = props.globals.getNode("/autopilot/settings/target-pitch-deg", 1);
182 pitch.setValue( getprop("/orientation/pitch-deg") );
190 <desc>Activate the instant replay system</desc>
192 <command>replay</command>
195 <command>dialog-show</command>
196 <dialog-name>replay</dialog-name>
202 <desc>Toggle auto-throttle lock</desc>
204 <command>nasal</command>
206 var node = props.globals.getNode("/autopilot/locks/speed", 1);
207 if ( node.getValue() == "speed-with-throttle" ) {
210 node.setValue( "speed-with-throttle" );
218 <desc>Toggle autopilot terrain lock</desc>
220 <command>nasal</command>
222 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
223 if ( node.getValue() == "agl-hold" ) {
226 node.setValue( "agl-hold" );
227 var agl = props.globals.getNode("/autopilot/settings/target-agl-ft", 1);
228 agl.setValue( getprop("/position/altitude-agl-ft") );
236 <desc>[Cheat] Add 1000ft of emergency altitude</desc>
238 <command>property-adjust</command>
239 <property>/position/altitude-ft</property>
240 <step type="double">1000.0</step>
243 <command>property-assign</command>
244 <property>/sim/startup/onground</property>
245 <value type="bool">false</value>
251 <desc>Select initial view (view 0)</desc>
253 <command>property-assign</command>
254 <property>/sim/current-view/view-number</property>
261 <desc>Toggle autopilot wing leveler</desc>
263 <command>nasal</command>
265 var node = props.globals.getNode("/autopilot/locks/heading", 1);
266 if ( node.getValue() == "wing-leveler" ) {
269 node.setValue( "wing-leveler" );
277 <desc>Reset zoom to default</desc>
279 <command>property-assign</command>
280 <property>/sim/current-view/field-of-view</property>
281 <property>/sim/view/config/default-field-of-view-deg</property>
287 <desc>Reset visibility to default</desc>
289 <command>nasal</command>
290 <script>environment.resetVisibility()</script>
296 <desc>Prompt and quit FlightGear</desc>
300 <property>/sim/freeze/replay-state</property>
303 <command>dialog-show</command>
304 <dialog-name>exit</dialog-name>
308 <property>/sim/freeze/replay-state</property>
310 <command>property-assign</command>
311 <property>/sim/replay/disable</property>
312 <value type="bool">true</value>
315 <desc>Reset FlightGear</desc>
317 <command>reset</command>
324 <desc>PTT - Push To Talk (via FGCom)</desc>
326 <command>nasal</command>
327 <script>space(1, modifiers.getValue())</script>
331 <command>nasal</command>
332 <script>space(0, modifiers.getValue())</script>
337 <command>nasal</command>
338 <script>space(1, modifiers.getValue())</script>
342 <command>nasal</command>
343 <script>space(0, modifiers.getValue())</script>
351 <desc>Select first engine</desc>
353 <command>nasal</command>
354 <script>controls.selectEngine(0)</script>
360 <desc>Select third engine</desc>
362 <command>nasal</command>
363 <script>controls.selectEngine(2)</script>
369 <desc>Select fourth engine</desc>
371 <command>nasal</command>
372 <script>controls.selectEngine(3)</script>
378 <desc>Display a dialog relevant to the tuned in ATC service (if any)</desc>
380 <!-- At the moment, we have no working interactive ATC, so this is
381 disabled for v2.2.0. -->
382 <command>ATC-dialog</command>
388 <desc>Let ATC/instructor repeat last message</desc>
390 <command>nasal</command>
391 <script>screen.msg_repeat()</script>
397 <desc>Left brake</desc>
399 <command>nasal</command>
400 <script>controls.applyBrakes(1, -1)</script>
404 <command>nasal</command>
405 <script>controls.applyBrakes(0, -1)</script>
412 <repeatable type="bool">false</repeatable>
413 <desc>Chat Menu</desc>
415 <command>dialog-show</command>
416 <dialog-name>chat-menu</dialog-name>
422 <desc>Right brake</desc>
424 <command>nasal</command>
425 <script>controls.applyBrakes(1, 1)</script>
429 <command>nasal</command>
430 <script>controls.applyBrakes(0, 1)</script>
437 <desc>Open property browser</desc>
441 <property>/sim/input/property-key-handler</property>
444 <command>nasal</command>
445 <script>gui.property_browser()</script>
449 <property>/sim/input/property-key-handler</property>
451 <command>nasal</command>
452 <script>prop_key_handler.start()</script>
458 <desc>Move rudder left</desc>
459 <repeatable type="bool">true</repeatable>
461 <command>property-adjust</command>
462 <property>/controls/flight/rudder</property>
463 <step type="double">-0.05</step>
469 <desc>Decrease elevator trim</desc>
470 <repeatable type="bool">true</repeatable>
472 <command>property-adjust</command>
473 <property>/controls/flight/elevator-trim</property>
474 <step type="double">-0.001</step>
477 <desc>Look back left</desc>
479 <command>property-assign</command>
480 <property>/sim/current-view/goal-heading-offset-deg</property>
481 <property>/sim/view/config/back-left-direction-deg</property>
488 <desc>Elevator up or increase autopilot altitude</desc>
489 <repeatable type="bool">true</repeatable>
491 <command>nasal</command>
493 controls.incElevator(-0.05, 100)
497 <desc>Look back</desc>
499 <command>property-assign</command>
500 <property>/sim/current-view/goal-heading-offset-deg</property>
501 <property>/sim/view/config/back-direction-deg</property>
508 <desc>Decrease throttle or autopilot autothrottle</desc>
509 <repeatable type="bool">true</repeatable>
511 <command>nasal</command>
513 controls.incThrottle(-0.01, -1.0)
517 <desc>Look back right</desc>
519 <command>property-assign</command>
520 <property>/sim/current-view/goal-heading-offset-deg</property>
521 <property>/sim/view/config/back-right-direction-deg</property>
528 <desc>Move aileron left (or adjust AP heading.)</desc>
529 <repeatable type="bool">true</repeatable>
531 <command>nasal</command>
533 controls.incAileron(-0.05, -1.0)
537 <desc>Look left</desc>
539 <command>property-assign</command>
540 <property>/sim/current-view/goal-heading-offset-deg</property>
541 <property>/sim/view/config/left-direction-deg</property>
548 <desc>Center aileron, elevator, and rudder</desc>
550 <command>nasal</command>
551 <script>controls.centerFlightControls()</script>
557 <desc>Move aileron right (or adjust AP heading.)</desc>
558 <repeatable type="bool">true</repeatable>
560 <command>nasal</command>
562 controls.incAileron(0.05, 1.0)
566 <desc>Look right</desc>
568 <command>property-assign</command>
569 <property>/sim/current-view/goal-heading-offset-deg</property>
570 <property>/sim/view/config/right-direction-deg</property>
577 <desc>Increase elevator trim</desc>
578 <repeatable type="bool">true</repeatable>
580 <command>property-adjust</command>
581 <property>/controls/flight/elevator-trim</property>
582 <step type="double">0.001</step>
585 <desc>Look front left</desc>
587 <command>property-assign</command>
588 <property>/sim/current-view/goal-heading-offset-deg</property>
589 <property>/sim/view/config/front-left-direction-deg</property>
596 <desc>Elevator down or decrease autopilot altitude</desc>
597 <repeatable type="bool">true</repeatable>
599 <command>nasal</command>
601 controls.incElevator(0.05, -100)
605 <desc>Look forward</desc>
607 <command>property-assign</command>
608 <property>/sim/current-view/goal-heading-offset-deg</property>
609 <property>/sim/view/config/front-direction-deg</property>
616 <desc>Increase throttle or autopilot autothrottle</desc>
617 <repeatable type="bool">true</repeatable>
619 <command>nasal</command>
621 controls.incThrottle(0.01, 1.0)
625 <desc>Look front right</desc>
627 <command>property-assign</command>
628 <property>/sim/current-view/goal-heading-offset-deg</property>
629 <property>/sim/view/config/front-right-direction-deg</property>
636 <desc>Start multikey command</desc>
638 <command>nasal</command>
639 <script>multikey.start()</script>
645 <desc>Show help dialog</desc>
647 <command>nasal</command>
648 <script>gui.showHelpDialog("/sim/help", 1)</script>
654 <desc>Select second engine</desc>
656 <command>nasal</command>
657 <script>controls.selectEngine(1)</script>
663 <desc>Decrease speed-up</desc>
665 <command>nasal</command>
666 <script>controls.speedup(-1);</script>
672 <desc>Toggle parking brake on or off</desc>
674 <command>nasal</command>
675 <script>controls.applyParkingBrake(1)</script>
679 <command>nasal</command>
680 <script>controls.applyParkingBrake(0)</script>
687 <desc>Gear down</desc>
689 <command>nasal</command>
690 <script>controls.gearDown(1)</script>
694 <command>nasal</command>
695 <script>controls.gearDown(0)</script>
702 <desc>Cycle HUD Brightness</desc>
704 <command>nasal</command>
705 <script>aircraft.HUD.cycle_brightness()</script>
711 <desc>Switch to and toggle alternative HUD types</desc>
713 <command>nasal</command>
714 <script>aircraft.HUD.cycle_type()</script>
720 <desc>Mixture leaner</desc>
721 <repeatable type="bool">true</repeatable>
723 <command>nasal</command>
724 <script>controls.adjMixture(-1)</script>
730 <desc>Propeller Coarser</desc>
731 <repeatable type="bool">true</repeatable>
733 <command>nasal</command>
734 <script>controls.adjPropeller(-1)</script>
740 <desc>Toggle panel</desc>
742 <command>property-toggle</command>
743 <property>/sim/panel/visibility</property>
749 <desc>Swap panels</desc>
753 <property>/sim/allow-toggle-cockpit</property>
756 <command>property-swap</command>
757 <property>/sim/panel/path</property>
758 <property>/sim/panel_2/path</property>
763 <property>/sim/allow-toggle-cockpit</property>
766 <command>panel-load</command>
772 <desc>Decrease warp delta</desc>
774 <command>property-adjust</command>
775 <property>/sim/time/warp-delta</property>
776 <step type="int">-30</step>
782 <desc>Scroll in reverse through views</desc>
784 <command>nasal</command>
785 <script>view.stepView(-1)</script>
791 <desc>Decrease warp</desc>
793 <command>property-adjust</command>
794 <property>/sim/time/warp</property>
795 <step type="int">-60</step>
801 <desc>Increase field of view</desc>
802 <repeatable type="bool">true</repeatable>
804 <command>nasal</command>
805 <script>view.increase()</script>
811 <desc>Decrease Visibility</desc>
812 <repeatable type="bool">true</repeatable>
814 <command>nasal</command>
815 <script>environment.decreaseVisibility()</script>
821 <desc>Decrease flaps</desc>
823 <command>nasal</command>
824 <script>controls.flapsDown(-1)</script>
828 <command>nasal</command>
829 <script>controls.flapsDown(0)</script>
836 <desc>Increase flaps</desc>
838 <command>nasal</command>
839 <script>controls.flapsDown(1)</script>
843 <command>nasal</command>
844 <script>controls.flapsDown(0)</script>
851 <repeatable type="bool">false</repeatable>
852 <desc>Compose Chat</desc>
854 <command>nasal</command>
855 <script>multiplayer.compose_message()</script>
861 <desc>Increase speed-up</desc>
863 <command>nasal</command>
864 <script>controls.speedup(1);</script>
870 <desc>Apply all brakes</desc>
872 <command>nasal</command>
873 <script>controls.applyBrakes(1)</script>
877 <command>nasal</command>
878 <script>controls.applyBrakes(0)</script>
885 <desc>Toggle 3D/2D cockpit</desc>
887 <command>nasal</command>
889 if(getprop("/sim/allow-toggle-cockpit")) {
890 setprop("/sim/current-view/internal", !getprop("/sim/current-view/internal"));
891 setprop("/sim/view/internal", getprop("/sim/current-view/internal"));
892 setprop("/sim/virtual-cockpit", !getprop("/sim/virtual-cockpit"));
893 if(getprop("/sim/current-view/internal")) {
894 setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/config/heading-offset-deg"));
895 setprop("/sim/current-view/pitch-offset-deg", getprop("/sim/current-view/config/pitch-offset-deg"));
897 setprop("/sim/current-view/heading-offset-deg", 0);
898 setprop("/sim/current-view/pitch-offset-deg", 0);
909 <command>nasal</command>
910 <script>controls.gearDown(-1)</script>
914 <command>nasal</command>
915 <script>controls.gearDown(0)</script>
922 <desc>HUD Master Switch</desc>
924 <command>nasal</command>
925 <script>aircraft.HUD.cycle_color()</script>
931 <desc>Normal HUD</desc>
933 <command>nasal</command>
934 <script>aircraft.HUD.normal_type()</script>
940 <desc>Decrease spoilers</desc>
942 <command>nasal</command>
943 <script>controls.stepSpoilers(-1)</script>
949 <desc>Increase spoilers</desc>
951 <command>nasal</command>
952 <script>controls.stepSpoilers(1)</script>
958 <desc>Toggle tail-wheel lock</desc>
960 <command>property-toggle</command>
961 <property>/controls/gear/tailwheel-lock</property>
967 <desc>Mixture richer</desc>
968 <repeatable type="bool">true</repeatable>
970 <command>nasal</command>
971 <script>controls.adjMixture(1)</script>
977 <desc>Propeller Finer</desc>
978 <repeatable type="bool">true</repeatable>
980 <command>nasal</command>
981 <script>controls.adjPropeller(1)</script>
987 <desc>Toggle the pause state of the sim</desc>
989 <command>pause</command>
995 <desc>Fire Starter on Selected Engine(s)</desc>
997 <command>nasal</command>
998 <script>controls.startEngine(1)</script>
1002 <command>nasal</command>
1003 <script>controls.startEngine(0)</script>
1016 <desc>Increase warp delta</desc>
1018 <command>property-adjust</command>
1019 <property>/sim/time/warp-delta</property>
1020 <step type="int">30</step>
1023 <command>nasal</command>
1027 x == t_id or return;
1028 gui.popupTip("resetting warp");
1029 setprop("/sim/time/warp-delta", 0);
1036 <command>nasal</command>
1037 <script>t_id += 1</script>
1044 <desc>Scroll through views</desc>
1046 <command>nasal</command>
1047 <script>view.stepView(1)</script>
1053 <desc>Increase warp</desc>
1055 <command>property-adjust</command>
1056 <property>/sim/time/warp</property>
1057 <step type="int">60</step>
1063 <desc>Decrease field of view</desc>
1064 <repeatable type="bool">true</repeatable>
1066 <command>nasal</command>
1067 <script>view.decrease()</script>
1073 <desc>Increase Visibility</desc>
1074 <repeatable type="bool">true</repeatable>
1076 <command>nasal</command>
1077 <script>environment.increaseVisibility()</script>
1083 <desc>Decrease Magneto on Selected Engine</desc>
1085 <command>nasal</command>
1086 <script>controls.stepMagnetos(-1)</script>
1090 <command>nasal</command>
1091 <script>controls.stepMagnetos(0)</script>
1098 <desc>Increase Magneto on Selected Engine</desc>
1100 <command>nasal</command>
1101 <script>controls.stepMagnetos(1)</script>
1105 <command>nasal</command>
1106 <script>controls.stepMagnetos(0)</script>
1113 <desc>Select all engines</desc>
1115 <command>nasal</command>
1116 <script>controls.selectAllEngines()</script>
1123 <desc>Load flight recorder tape</desc>
1125 <command>dialog-show</command>
1126 <dialog-name>flight-recorder-load</dialog-name>
1134 <desc>Save flight recorder tape</desc>
1136 <command>dialog-show</command>
1137 <dialog-name>flight-recorder-save</dialog-name>
1144 <desc>Capture screen</desc>
1146 <command>screen-capture</command>
1149 <desc>Load panel</desc>
1151 <command>panel-load</command>
1158 <repeatable type="bool">true</repeatable>
1160 <desc>Scroll panel down</desc>
1162 <command>property-adjust</command>
1163 <property>/sim/panel/y-offset</property>
1164 <step type="int">-5</step>
1171 <desc>Toggle Autopilot Heading Mode</desc>
1172 <repeatable type="bool">true</repeatable>
1174 <command>nasal</command>
1176 var prop = "/autopilot/locks/heading";
1177 var curr = getprop(prop);
1178 if(curr == "true-heading-hold") { setprop(prop, ""); }
1179 else { setprop(prop, "true-heading-hold"); }
1183 <desc>Scroll panel up</desc>
1185 <command>property-adjust</command>
1186 <property>/sim/panel/y-offset</property>
1187 <step type="int">5</step>
1194 <repeatable type="bool">true</repeatable>
1196 <desc>Scroll panel left</desc>
1198 <command>property-adjust</command>
1199 <property>/sim/panel/x-offset</property>
1200 <step type="int">-5</step>
1208 <repeatable type="bool">true</repeatable>
1210 <desc>Scroll panel right</desc>
1212 <command>property-adjust</command>
1213 <property>/sim/panel/x-offset</property>
1214 <step type="int">5</step>
1221 <desc>Toggle menubar</desc>
1223 <command>property-toggle</command>
1224 <property>/sim/menubar/visibility</property>
1227 <desc>Toggle fullscreen</desc>
1229 <command>toggle-fullscreen</command>
1232 <desc>Switch to next GUI style</desc>
1234 <command>nasal</command>
1235 <script>gui.nextStyle()</script>
1243 <desc>Pop up autopilot dialog</desc>
1245 <command>dialog-show</command>
1246 <dialog-name>autopilot</dialog-name>
1252 <desc>Pop up radio settings dialog</desc>
1254 <command>dialog-show</command>
1255 <dialog-name>radios</dialog-name>
1261 <desc>Move rudder right</desc>
1262 <repeatable type="bool">true</repeatable>
1264 <command>property-adjust</command>
1265 <property>/controls/flight/rudder</property>
1266 <step type="double">0.05</step>
1271 <name>Keypad 5</name>
1272 <desc>Center aileron, elevator, and rudder</desc>
1274 <command>nasal</command>
1275 <script>controls.centerFlightControls()</script>
1281 <desc>Move aileron left (or adjust AP heading.)</desc>
1282 <repeatable type="bool">true</repeatable>
1284 <command>nasal</command>
1286 if (getprop("/sim/freeze/replay-state"))
1287 controls.replaySkip(-5);
1289 controls.incAileron(-0.05, -1.0)
1293 <desc>Look left</desc>
1295 <command>property-assign</command>
1296 <property>/sim/current-view/goal-heading-offset-deg</property>
1297 <property>/sim/view/config/left-direction-deg</property>
1304 <desc>Elevator down or decrease autopilot altitude</desc>
1305 <repeatable type="bool">true</repeatable>
1307 <command>nasal</command>
1309 if (getprop("/sim/freeze/replay-state"))
1310 controls.speedup(1);
1312 controls.incElevator(0.05, -100)
1316 <desc>Look forward</desc>
1318 <command>property-assign</command>
1319 <property>/sim/current-view/goal-heading-offset-deg</property>
1320 <property>/sim/view/config/front-direction-deg</property>
1327 <desc>Move aileron right (or adjust AP heading.)</desc>
1328 <repeatable type="bool">true</repeatable>
1330 <command>nasal</command>
1332 if (getprop("/sim/freeze/replay-state"))
1333 controls.replaySkip(5);
1335 controls.incAileron(0.05, 1.0)
1337 <step type="double">0.05</step>
1340 <desc>Look right</desc>
1342 <command>property-assign</command>
1343 <property>/sim/current-view/goal-heading-offset-deg</property>
1344 <property>/sim/view/config/right-direction-deg</property>
1351 <desc>Elevator up or increase autopilot altitude</desc>
1352 <repeatable type="bool">true</repeatable>
1354 <command>nasal</command>
1356 if (getprop("/sim/freeze/replay-state"))
1357 controls.speedup(-1);
1359 controls.incElevator(-0.05, 100)
1363 <desc>Look backwards</desc>
1365 <command>property-assign</command>
1366 <property>/sim/current-view/goal-heading-offset-deg</property>
1367 <property>/sim/view/config/back-direction-deg</property>
1374 <desc>Increase throttle or autopilot autothrottle</desc>
1375 <repeatable type="bool">true</repeatable>
1377 <command>nasal</command>
1379 controls.incThrottle(0.01, 1.0)
1383 <desc>Look front right</desc>
1385 <command>property-assign</command>
1386 <property>/sim/current-view/goal-heading-offset-deg</property>
1387 <property>/sim/view/config/front-right-direction-deg</property>
1393 <name>PageDown</name>
1394 <desc>Decrease throttle or autopilot autothrottle</desc>
1395 <repeatable type="bool">true</repeatable>
1397 <command>nasal</command>
1399 controls.incThrottle(-0.01, -1.0)
1403 <desc>Look back right</desc>
1405 <command>property-assign</command>
1406 <property>/sim/current-view/goal-heading-offset-deg</property>
1407 <property>/sim/view/config/back-right-direction-deg</property>
1414 <desc>Increase elevator trim</desc>
1415 <repeatable type="bool">true</repeatable>
1417 <command>property-adjust</command>
1418 <property>/controls/flight/elevator-trim</property>
1419 <step type="double">0.001</step>
1422 <desc>Look front left</desc>
1424 <command>property-assign</command>
1425 <property>/sim/current-view/goal-heading-offset-deg</property>
1426 <property>/sim/view/config/front-left-direction-deg</property>
1433 <desc>Decrease elevator trim</desc>
1434 <repeatable type="bool">true</repeatable>
1436 <command>property-adjust</command>
1437 <property>/controls/flight/elevator-trim</property>
1438 <step type="double">-0.001</step>
1441 <desc>Look back left</desc>
1443 <command>property-assign</command>
1444 <property>/sim/current-view/goal-heading-offset-deg</property>
1445 <property>/sim/view/config/back-left-direction-deg</property>
1452 <desc>Move rudder left</desc>
1453 <repeatable type="bool">true</repeatable>
1455 <command>property-adjust</command>
1456 <property>/controls/flight/rudder</property>
1457 <step type="double">-0.05</step>
1463 <!-- end of keyboard.xml -->