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>
172 <command>dialog-show</command>
173 <dialog-name>replay</dialog-name>
179 <desc>Toggle auto-throttle lock</desc>
181 <command>nasal</command>
183 var node = props.globals.getNode("/autopilot/locks/speed", 1);
184 if ( node.getValue() == "speed-with-throttle" ) {
187 node.setValue( "speed-with-throttle" );
195 <desc>Toggle autopilot terrain lock</desc>
197 <command>nasal</command>
199 var node = props.globals.getNode("/autopilot/locks/altitude", 1);
200 if ( node.getValue() == "agl-hold" ) {
203 node.setValue( "agl-hold" );
204 var agl = props.globals.getNode("/autopilot/settings/target-agl-ft", 1);
205 agl.setValue( getprop("/position/altitude-agl-ft") );
213 <desc>[Cheat] Add 1000ft of emergency altitude</desc>
215 <command>property-adjust</command>
216 <property>/position/altitude-ft</property>
217 <step type="double">1000.0</step>
220 <command>property-assign</command>
221 <property>/sim/startup/onground</property>
222 <value type="bool">false</value>
228 <desc>Select initial view (view 0)</desc>
230 <command>property-assign</command>
231 <property>/sim/current-view/view-number</property>
238 <desc>Toggle autopilot wing leveler</desc>
240 <command>nasal</command>
242 var node = props.globals.getNode("/autopilot/locks/heading", 1);
243 if ( node.getValue() == "wing-leveler" ) {
246 node.setValue( "wing-leveler" );
254 <desc>Reset zoom to default</desc>
256 <command>property-assign</command>
257 <property>/sim/current-view/field-of-view</property>
258 <property>/sim/view/config/default-field-of-view-deg</property>
264 <desc>Reset visibility to default</desc>
266 <command>nasal</command>
267 <script>environment.resetVisibility()</script>
273 <desc>Prompt and quit FlightGear</desc>
277 <property>/sim/freeze/replay-state</property>
280 <command>dialog-show</command>
281 <dialog-name>exit</dialog-name>
285 <property>/sim/freeze/replay-state</property>
287 <command>property-assign</command>
288 <property>/sim/replay/disable</property>
289 <value type="bool">true</value>
292 <desc>Reset FlightGear</desc>
294 <command>reset</command>
301 <desc>PTT - Push To Talk (via FGCom)</desc>
303 <command>nasal</command>
304 <script>space(1, modifiers.getValue())</script>
308 <command>nasal</command>
309 <script>space(0, modifiers.getValue())</script>
314 <command>nasal</command>
315 <script>space(1, modifiers.getValue())</script>
319 <command>nasal</command>
320 <script>space(0, modifiers.getValue())</script>
328 <desc>Select first engine</desc>
330 <command>nasal</command>
331 <script>controls.selectEngine(0)</script>
337 <desc>Select third engine</desc>
339 <command>nasal</command>
340 <script>controls.selectEngine(2)</script>
346 <desc>Select fourth engine</desc>
348 <command>nasal</command>
349 <script>controls.selectEngine(3)</script>
355 <desc>Display a dialog relevant to the tuned in ATC service (if any)</desc>
357 <!-- At the moment, we have no working interactive ATC, so this is
358 disabled for v2.2.0. -->
359 <command>ATC-dialog</command>
365 <desc>Let ATC/instructor repeat last message</desc>
367 <command>nasal</command>
368 <script>screen.msg_repeat()</script>
374 <desc>Left brake</desc>
376 <command>nasal</command>
377 <script>controls.applyBrakes(1, -1)</script>
381 <command>nasal</command>
382 <script>controls.applyBrakes(0, -1)</script>
389 <repeatable type="bool">false</repeatable>
390 <desc>Chat Menu</desc>
392 <command>dialog-show</command>
393 <dialog-name>chat-menu</dialog-name>
399 <desc>Right brake</desc>
401 <command>nasal</command>
402 <script>controls.applyBrakes(1, 1)</script>
406 <command>nasal</command>
407 <script>controls.applyBrakes(0, 1)</script>
414 <desc>Open property browser</desc>
418 <property>/sim/input/property-key-handler</property>
421 <command>nasal</command>
422 <script>gui.property_browser()</script>
426 <property>/sim/input/property-key-handler</property>
428 <command>nasal</command>
429 <script>prop_key_handler.start()</script>
435 <desc>Move rudder left</desc>
436 <repeatable type="bool">true</repeatable>
438 <command>property-adjust</command>
439 <property>/controls/flight/rudder</property>
440 <step type="double">-0.05</step>
446 <desc>Decrease elevator trim</desc>
447 <repeatable type="bool">true</repeatable>
449 <command>property-adjust</command>
450 <property>/controls/flight/elevator-trim</property>
451 <step type="double">-0.001</step>
454 <desc>Look back left</desc>
456 <command>property-assign</command>
457 <property>/sim/current-view/goal-heading-offset-deg</property>
458 <property>/sim/view/config/back-left-direction-deg</property>
465 <desc>Elevator up or increase autopilot altitude</desc>
466 <repeatable type="bool">true</repeatable>
468 <command>nasal</command>
470 controls.incElevator(-0.05, 100)
474 <desc>Look back</desc>
476 <command>property-assign</command>
477 <property>/sim/current-view/goal-heading-offset-deg</property>
478 <property>/sim/view/config/back-direction-deg</property>
485 <desc>Decrease throttle or autopilot autothrottle</desc>
486 <repeatable type="bool">true</repeatable>
488 <command>nasal</command>
490 controls.incThrottle(-0.01, -1.0)
494 <desc>Look back right</desc>
496 <command>property-assign</command>
497 <property>/sim/current-view/goal-heading-offset-deg</property>
498 <property>/sim/view/config/back-right-direction-deg</property>
505 <desc>Move aileron left (or adjust AP heading.)</desc>
506 <repeatable type="bool">true</repeatable>
508 <command>nasal</command>
510 controls.incAileron(-0.05, -1.0)
514 <desc>Look left</desc>
516 <command>property-assign</command>
517 <property>/sim/current-view/goal-heading-offset-deg</property>
518 <property>/sim/view/config/left-direction-deg</property>
525 <desc>Center aileron, elevator, and rudder</desc>
527 <command>nasal</command>
528 <script>controls.centerFlightControls()</script>
534 <desc>Move aileron right (or adjust AP heading.)</desc>
535 <repeatable type="bool">true</repeatable>
537 <command>nasal</command>
539 controls.incAileron(0.05, 1.0)
543 <desc>Look right</desc>
545 <command>property-assign</command>
546 <property>/sim/current-view/goal-heading-offset-deg</property>
547 <property>/sim/view/config/right-direction-deg</property>
554 <desc>Increase elevator trim</desc>
555 <repeatable type="bool">true</repeatable>
557 <command>property-adjust</command>
558 <property>/controls/flight/elevator-trim</property>
559 <step type="double">0.001</step>
562 <desc>Look front left</desc>
564 <command>property-assign</command>
565 <property>/sim/current-view/goal-heading-offset-deg</property>
566 <property>/sim/view/config/front-left-direction-deg</property>
573 <desc>Elevator down or decrease autopilot altitude</desc>
574 <repeatable type="bool">true</repeatable>
576 <command>nasal</command>
578 controls.incElevator(0.05, -100)
582 <desc>Look forward</desc>
584 <command>property-assign</command>
585 <property>/sim/current-view/goal-heading-offset-deg</property>
586 <property>/sim/view/config/front-direction-deg</property>
593 <desc>Increase throttle or autopilot autothrottle</desc>
594 <repeatable type="bool">true</repeatable>
596 <command>nasal</command>
598 controls.incThrottle(0.01, 1.0)
602 <desc>Look front right</desc>
604 <command>property-assign</command>
605 <property>/sim/current-view/goal-heading-offset-deg</property>
606 <property>/sim/view/config/front-right-direction-deg</property>
613 <desc>Start multikey command</desc>
615 <command>nasal</command>
616 <script>multikey.start()</script>
622 <desc>Show help dialog</desc>
624 <command>nasal</command>
625 <script>gui.showHelpDialog("/sim/help", 1)</script>
631 <desc>Select second engine</desc>
633 <command>nasal</command>
634 <script>controls.selectEngine(1)</script>
640 <desc>Decrease speed-up</desc>
642 <command>property-adjust</command>
643 <property>/sim/speed-up</property>
645 <step type="double">-1</step>
651 <desc>Toggle parking brake on or off</desc>
653 <command>nasal</command>
654 <script>controls.applyParkingBrake(1)</script>
658 <command>nasal</command>
659 <script>controls.applyParkingBrake(0)</script>
666 <desc>Gear down</desc>
668 <command>nasal</command>
669 <script>controls.gearDown(1)</script>
673 <command>nasal</command>
674 <script>controls.gearDown(0)</script>
681 <desc>Cycle HUD Brightness</desc>
683 <command>nasal</command>
684 <script>aircraft.HUD.cycle_brightness()</script>
690 <desc>Switch to and toggle alternative HUD types</desc>
692 <command>nasal</command>
693 <script>aircraft.HUD.cycle_type()</script>
699 <desc>Mixture leaner</desc>
700 <repeatable type="bool">true</repeatable>
702 <command>nasal</command>
703 <script>controls.adjMixture(-1)</script>
709 <desc>Propeller Coarser</desc>
710 <repeatable type="bool">true</repeatable>
712 <command>nasal</command>
713 <script>controls.adjPropeller(-1)</script>
719 <desc>Toggle panel</desc>
721 <command>property-toggle</command>
722 <property>/sim/panel/visibility</property>
728 <desc>Swap panels</desc>
732 <property>/sim/allow-toggle-cockpit</property>
735 <command>property-swap</command>
736 <property>/sim/panel/path</property>
737 <property>/sim/panel_2/path</property>
742 <property>/sim/allow-toggle-cockpit</property>
745 <command>panel-load</command>
751 <desc>Decrease warp delta</desc>
753 <command>property-adjust</command>
754 <property>/sim/time/warp-delta</property>
755 <step type="int">-30</step>
761 <desc>Scroll in reverse through views</desc>
763 <command>nasal</command>
764 <script>view.stepView(-1)</script>
770 <desc>Decrease warp</desc>
772 <command>property-adjust</command>
773 <property>/sim/time/warp</property>
774 <step type="int">-60</step>
780 <desc>Increase field of view</desc>
781 <repeatable type="bool">true</repeatable>
783 <command>nasal</command>
784 <script>view.increase()</script>
790 <desc>Decrease Visibility</desc>
791 <repeatable type="bool">true</repeatable>
793 <command>nasal</command>
794 <script>environment.decreaseVisibility()</script>
800 <desc>Decrease flaps</desc>
802 <command>nasal</command>
803 <script>controls.flapsDown(-1)</script>
807 <command>nasal</command>
808 <script>controls.flapsDown(0)</script>
815 <desc>Increase flaps</desc>
817 <command>nasal</command>
818 <script>controls.flapsDown(1)</script>
822 <command>nasal</command>
823 <script>controls.flapsDown(0)</script>
830 <repeatable type="bool">false</repeatable>
831 <desc>Compose Chat</desc>
833 <command>nasal</command>
834 <script>multiplayer.compose_message()</script>
840 <desc>Increase speed-up</desc>
842 <command>property-adjust</command>
843 <property>/sim/speed-up</property>
845 <step type="double">1</step>
851 <desc>Apply all brakes</desc>
853 <command>nasal</command>
854 <script>controls.applyBrakes(1)</script>
858 <command>nasal</command>
859 <script>controls.applyBrakes(0)</script>
866 <desc>Toggle 3D/2D cockpit</desc>
868 <command>nasal</command>
870 if(getprop("/sim/allow-toggle-cockpit")) {
871 setprop("/sim/current-view/internal", !getprop("/sim/current-view/internal"));
872 setprop("/sim/view/internal", getprop("/sim/current-view/internal"));
873 setprop("/sim/virtual-cockpit", !getprop("/sim/virtual-cockpit"));
874 if(getprop("/sim/current-view/internal")) {
875 setprop("/sim/current-view/heading-offset-deg", getprop("/sim/current-view/config/heading-offset-deg"));
876 setprop("/sim/current-view/pitch-offset-deg", getprop("/sim/current-view/config/pitch-offset-deg"));
878 setprop("/sim/current-view/heading-offset-deg", 0);
879 setprop("/sim/current-view/pitch-offset-deg", 0);
890 <command>nasal</command>
891 <script>controls.gearDown(-1)</script>
895 <command>nasal</command>
896 <script>controls.gearDown(0)</script>
903 <desc>HUD Master Switch</desc>
905 <command>nasal</command>
906 <script>aircraft.HUD.cycle_color()</script>
912 <desc>Normal HUD</desc>
914 <command>nasal</command>
915 <script>aircraft.HUD.normal_type()</script>
921 <desc>Decrease spoilers</desc>
923 <command>nasal</command>
924 <script>controls.stepSpoilers(-1)</script>
930 <desc>Increase spoilers</desc>
932 <command>nasal</command>
933 <script>controls.stepSpoilers(1)</script>
939 <desc>Toggle tail-wheel lock</desc>
941 <command>property-toggle</command>
942 <property>/controls/gear/tailwheel-lock</property>
948 <desc>Mixture richer</desc>
949 <repeatable type="bool">true</repeatable>
951 <command>nasal</command>
952 <script>controls.adjMixture(1)</script>
958 <desc>Propeller Finer</desc>
959 <repeatable type="bool">true</repeatable>
961 <command>nasal</command>
962 <script>controls.adjPropeller(1)</script>
968 <desc>Toggle the pause state of the sim</desc>
970 <command>pause</command>
976 <desc>Fire Starter on Selected Engine(s)</desc>
978 <command>nasal</command>
979 <script>controls.startEngine(1)</script>
983 <command>nasal</command>
984 <script>controls.startEngine(0)</script>
997 <desc>Increase warp delta</desc>
999 <command>property-adjust</command>
1000 <property>/sim/time/warp-delta</property>
1001 <step type="int">30</step>
1004 <command>nasal</command>
1008 x == t_id or return;
1009 gui.popupTip("resetting warp");
1010 setprop("/sim/time/warp-delta", 0);
1017 <command>nasal</command>
1018 <script>t_id += 1</script>
1025 <desc>Scroll through views</desc>
1027 <command>nasal</command>
1028 <script>view.stepView(1)</script>
1034 <desc>Increase warp</desc>
1036 <command>property-adjust</command>
1037 <property>/sim/time/warp</property>
1038 <step type="int">60</step>
1044 <desc>Decrease field of view</desc>
1045 <repeatable type="bool">true</repeatable>
1047 <command>nasal</command>
1048 <script>view.decrease()</script>
1054 <desc>Increase Visibility</desc>
1055 <repeatable type="bool">true</repeatable>
1057 <command>nasal</command>
1058 <script>environment.increaseVisibility()</script>
1064 <desc>Decrease Magneto on Selected Engine</desc>
1066 <command>nasal</command>
1067 <script>controls.stepMagnetos(-1)</script>
1071 <command>nasal</command>
1072 <script>controls.stepMagnetos(0)</script>
1079 <desc>Increase Magneto on Selected Engine</desc>
1081 <command>nasal</command>
1082 <script>controls.stepMagnetos(1)</script>
1086 <command>nasal</command>
1087 <script>controls.stepMagnetos(0)</script>
1094 <desc>Select all engines</desc>
1096 <command>nasal</command>
1097 <script>controls.selectAllEngines()</script>
1104 <desc>Load flight recorder tape</desc>
1106 <command>dialog-show</command>
1107 <dialog-name>flight-recorder-load</dialog-name>
1115 <desc>Save flight recorder tape</desc>
1117 <command>dialog-show</command>
1118 <dialog-name>flight-recorder-save</dialog-name>
1125 <desc>Capture screen</desc>
1127 <command>screen-capture</command>
1130 <desc>Load panel</desc>
1132 <command>panel-load</command>
1139 <repeatable type="bool">true</repeatable>
1141 <desc>Scroll panel down</desc>
1143 <command>property-adjust</command>
1144 <property>/sim/panel/y-offset</property>
1145 <step type="int">-5</step>
1152 <desc>Toggle Autopilot Heading Mode</desc>
1153 <repeatable type="bool">true</repeatable>
1155 <command>nasal</command>
1157 var prop = "/autopilot/locks/heading";
1158 var curr = getprop(prop);
1159 if(curr == "true-heading-hold") { setprop(prop, ""); }
1160 else { setprop(prop, "true-heading-hold"); }
1164 <desc>Scroll panel up</desc>
1166 <command>property-adjust</command>
1167 <property>/sim/panel/y-offset</property>
1168 <step type="int">5</step>
1175 <repeatable type="bool">true</repeatable>
1177 <desc>Scroll panel left</desc>
1179 <command>property-adjust</command>
1180 <property>/sim/panel/x-offset</property>
1181 <step type="int">-5</step>
1189 <repeatable type="bool">true</repeatable>
1191 <desc>Scroll panel right</desc>
1193 <command>property-adjust</command>
1194 <property>/sim/panel/x-offset</property>
1195 <step type="int">5</step>
1202 <desc>Toggle menubar</desc>
1204 <command>property-toggle</command>
1205 <property>/sim/menubar/visibility</property>
1208 <desc>Toggle fullscreen</desc>
1210 <command>toggle-fullscreen</command>
1213 <desc>Switch to next GUI style</desc>
1215 <command>nasal</command>
1216 <script>gui.nextStyle()</script>
1224 <desc>Pop up autopilot dialog</desc>
1226 <command>dialog-show</command>
1227 <dialog-name>autopilot</dialog-name>
1233 <desc>Pop up radio settings dialog</desc>
1235 <command>dialog-show</command>
1236 <dialog-name>radios</dialog-name>
1242 <desc>Move rudder right</desc>
1243 <repeatable type="bool">true</repeatable>
1245 <command>property-adjust</command>
1246 <property>/controls/flight/rudder</property>
1247 <step type="double">0.05</step>
1252 <name>Keypad 5</name>
1253 <desc>Center aileron, elevator, and rudder</desc>
1255 <command>nasal</command>
1256 <script>controls.centerFlightControls()</script>
1262 <desc>Move aileron left (or adjust AP heading.)</desc>
1263 <repeatable type="bool">true</repeatable>
1265 <command>nasal</command>
1267 if (getprop("/sim/freeze/replay-state"))
1268 controls.replaySkip(-5);
1270 controls.incAileron(-0.05, -1.0)
1274 <desc>Look left</desc>
1276 <command>property-assign</command>
1277 <property>/sim/current-view/goal-heading-offset-deg</property>
1278 <property>/sim/view/config/left-direction-deg</property>
1285 <desc>Elevator down or decrease autopilot altitude</desc>
1286 <repeatable type="bool">true</repeatable>
1288 <command>nasal</command>
1290 if (getprop("/sim/freeze/replay-state"))
1291 controls.speedup(1);
1293 controls.incElevator(0.05, -100)
1297 <desc>Look forward</desc>
1299 <command>property-assign</command>
1300 <property>/sim/current-view/goal-heading-offset-deg</property>
1301 <property>/sim/view/config/front-direction-deg</property>
1308 <desc>Move aileron right (or adjust AP heading.)</desc>
1309 <repeatable type="bool">true</repeatable>
1311 <command>nasal</command>
1313 if (getprop("/sim/freeze/replay-state"))
1314 controls.replaySkip(5);
1316 controls.incAileron(0.05, 1.0)
1318 <step type="double">0.05</step>
1321 <desc>Look right</desc>
1323 <command>property-assign</command>
1324 <property>/sim/current-view/goal-heading-offset-deg</property>
1325 <property>/sim/view/config/right-direction-deg</property>
1332 <desc>Elevator up or increase autopilot altitude</desc>
1333 <repeatable type="bool">true</repeatable>
1335 <command>nasal</command>
1337 if (getprop("/sim/freeze/replay-state"))
1338 controls.speedup(-1);
1340 controls.incElevator(-0.05, 100)
1344 <desc>Look backwards</desc>
1346 <command>property-assign</command>
1347 <property>/sim/current-view/goal-heading-offset-deg</property>
1348 <property>/sim/view/config/back-direction-deg</property>
1355 <desc>Increase throttle or autopilot autothrottle</desc>
1356 <repeatable type="bool">true</repeatable>
1358 <command>nasal</command>
1360 controls.incThrottle(0.01, 1.0)
1364 <desc>Look front right</desc>
1366 <command>property-assign</command>
1367 <property>/sim/current-view/goal-heading-offset-deg</property>
1368 <property>/sim/view/config/front-right-direction-deg</property>
1374 <name>PageDown</name>
1375 <desc>Decrease throttle or autopilot autothrottle</desc>
1376 <repeatable type="bool">true</repeatable>
1378 <command>nasal</command>
1380 controls.incThrottle(-0.01, -1.0)
1384 <desc>Look back right</desc>
1386 <command>property-assign</command>
1387 <property>/sim/current-view/goal-heading-offset-deg</property>
1388 <property>/sim/view/config/back-right-direction-deg</property>
1395 <desc>Increase elevator trim</desc>
1396 <repeatable type="bool">true</repeatable>
1398 <command>property-adjust</command>
1399 <property>/controls/flight/elevator-trim</property>
1400 <step type="double">0.001</step>
1403 <desc>Look front left</desc>
1405 <command>property-assign</command>
1406 <property>/sim/current-view/goal-heading-offset-deg</property>
1407 <property>/sim/view/config/front-left-direction-deg</property>
1414 <desc>Decrease 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 back left</desc>
1424 <command>property-assign</command>
1425 <property>/sim/current-view/goal-heading-offset-deg</property>
1426 <property>/sim/view/config/back-left-direction-deg</property>
1433 <desc>Move rudder left</desc>
1434 <repeatable type="bool">true</repeatable>
1436 <command>property-adjust</command>
1437 <property>/controls/flight/rudder</property>
1438 <step type="double">-0.05</step>
1444 <!-- end of keyboard.xml -->