Elite: Dangerous Scripts, Tips and Tricks


CMDR Igor Rock's CH Control Manager Map File

This is my .map file for the CH Control Manager which I use with my Externes Link CH USB Pro Throttle and my Externes Link CH Combatstick.

I am using this configuration together with my GlovePIE script below.


CMDR Igor Rock's Elite Keybindings File

This is my current key bindings file for Elite: Dangerous. To use it, download it and put it into the following folder: "%APPDATA%\..\Local\Frontier Developments\Elite Dangerous\Options\Bindings".

Pro-Tip: If you have a nice config which you want to be sure to keep, copy the Custom.binds file and rename it to something you like (of course you have to keep the ".binds" part!). It will show up with that name in Elite: Dangerous as a new preset (like the "Keyboard and Mouse" or others) and you can simply change between different configurations, e.g. if you use different controllers from time to time! ;-)

I am using this configuration together with my GlovePIE script below.


CMDR Igor Rock's GlovePIE Config Script

This is my script for Externes Link Elite: Dangerous for the Externes Link GlovePIE Programmable Input Emulator (which can be used for voice commands in games) for downloading: Elite_Dangerous.pie

If you want to see this script in action, have a look at my Externes Link YouTube channel, which shows some example videos.

If you prefer to copy/paste, this is the whole file (be sure to paste it directly into the GlovePIE editor though, because the PIE files look like simple text files, but start with a three byte binary combination!):

// Please note:
// Joystick1 is my CH Throttle
// Joystick2 is my CH Combatstick
 
// First start only
if (starting) {
   var.reset=1       // reset all variables on start
   var.pause=1       // start in pause mode
}
// reset all variables
if (var.reset=1) {
   var.reset=0
   var.started=0     // to prevent activating the script by "push to talk" button
   var.zoomout=0     // used for loops
   var.zoomin=0      // used for loops
   release Key.RightShift  // make sure the cargo scoop is retracted
   var.scoop=0             // reset flag for cargo scoop
   var.gear=1        // we assume that the gear is down (landed). If not, use the "landing gear is up" command
   var.panel=0       // selected panel = none
   var.headlook=0    // we start with headlook off (normally)
   var.hardpoints=0  // we start with undeployed hardpoints
   release Key.NUMPADDivide     // make sure the scanner is disabled
   var.scanner=0     // disable scanner
   say "startup completed"
}
 
// Jarvis script management commands
if ((said("Jarvis pause script",3) or said("Jarvis stop script") or said("Jarvis deactivate script", 5)) and (var.pause == 0)) {
   var.started=0
   var.pause=1
   say "Voice commands deactivated"
}
if ((said("Jarvis unpause script",3) or said("Jarvis start script") or said("Jarvis activate script", 5)) and (var.pause == 1)) {
   var.started=1
   var.pause=0
   say "Voice commands active"
}
if (said("Jarvis restart",5 ) or said("Jarvis reset script",3) or said("Jarvis reset all") or said("Jarvis reset variables", 5)) {
   var.reset=1
}
 
// Teamspeak's "push to talk" deactivates voice commands - not used in the moment (Button3 is right now used for Boosters in my setup)
//if (pressed(Joystick2.Button3) and (var.pause == 0) and (var.started == 1)) {
//   var.pause=1
//}
//if (released(Joystick2.Button3) and (var.pause == 1) and (var.started == 1)) {
//   var.pause=0
//}
 
//*******************************
// the voice commands themselves
//*******************************
if !var.pause then{
 
   // Fun stuff
   if (said("Jarvis I am lost", 5)) {
      playsound ("C:\Sounds\force2.wav")
      wait 2000 ms
   }
   if (said("Jarvis help", 5)) {
      playsound ("C:\Sounds\nopanic.wav")
      wait 2000 ms
   }
   if (said("Thank you Jarvis", 5)) {
      say "My pleasure!"
      wait 1000 ms
   }
 
   // Nothing for mouse control (yet)
   //--------------------------------
 
   // Flight rotation
   //-----------------
   // yaw left        -> ?
   // yaw right       -> ?
   // yaw-roll button -> ?
   // roll left       -> ?
   // roll right      -> ?
   // pitch up        -> ?
   // pitch down      -> ?
 
   // Flight thrust
   //---------------
   // Thrust left     -> Key.Q
   // Thrust right    -> Key.E
   // Thrust up       -> Key.R
   // Thrust down     -> Key.F
   // Thrust forward  -> ?
   // Thrust backward -> ?
 
   // Flight throttle
   //-----------------
   // Throttle reverse  -> Joystick1.Button3
   // Increae throttle  -> Key.W
   if (said("more speed", 5) or said ("faster jarvis", 5)) {
      press Key.W
      wait 50 ms
      release Key.W
      say "Aye sir, accelerating 0 point 1 2 5"
   }
   // Decrease throttle -> Key.S
   if (said("less speed", 5) or said("slower jarvis", 5)) {
      press Key.S
      wait 50 ms
      release Key.S
      say "Aye sir, decelerating O point 1 2 5"
   }
   // Set speed -100% -> Key.NUMPAD1
   if (said("full speed astern", 5) or said("astern full speed", 5) or said("full astern", 5)) {
      press Key.NUMPAD1
      wait 50 ms
      release Key.NUMPAD1
      say "Aye sir, full speed backwards"
   }
   // Set speed  -75% -> Key.NUMPAD2
   if (said("point 7 5 astern", 5) or said("astern standard speed", 5) or said("standard astern", 5)) {
      press Key.NUMPAD2
      wait 50 ms
      release Key.NUMPAD2
      say "Aye sir, point 7 5 backwards"
   }
   // Set speed  -50% -> Key.NUMPAD3
   if (said("point 5 O astern", 5) or said("astern half speed", 5) or said("half astern", 5)) {
      press Key.NUMPAD3
      wait 50 ms
      release Key.NUMPAD3
      say "Aye sir, point 5 O backwards"
   }
   // Set speed  -25% -> Key.NUMPAD4
   if (said("point 2 5 astern", 5) or said ("astern slow speed", 5) or said("slow astern", 5)) {
      press Key.NUMPAD4
      wait 50 ms
      release Key.NUMPAD4
      say "Aye sir, point 2 5 backwards"
   }
   // Set speed    0% -> Key.NUMPAD5
   if (said("full stop", 5) or said("engine power off",5)) {
      press Key.NUMPAD5
      wait 50 ms
      release Key.NUMPAD5
      say "All engines stopped"
   }
   // Set speed   25% -> Key.NUMPAD6
   if (said("point 2 5 ahead", 5) or said("slow speed ahead", 5) or said("slow ahead")) {
      press Key.NUMPAD6
      wait 50 ms
      release Key.NUMPAD6
      say "Aye sir, Point 2 5 forwards"
   }
   // Set speed   50% -> Key.NUMPAD7
   if (said("point 5 O ahead", 5) or said("half speed ahead", 5) or said("half ahead", 5)) {
      press Key.NUMPAD7
      wait 50 ms
      release Key.NUMPAD7
      say "Aye sir, Point 5 O forwards"
   }
   // Set speed   75% -> Key.NUMPAD8
   if (said("point 7 5 ahead", 5) or said("standard speed ahead", 5) or said("standard ahead", 5)) {
      press Key.NUMPAD8
      wait 50 ms
      release Key.NUMPAD8
      say "Aye sir, Point 7 5 forwards"
   }
   // Set speed  100% -> Key.NUMPAD9
   if (said("full speed ahead", 5) or said("full ahead", 5)) {
      press Key.NUMPAD9
      wait 50 ms
      release Key.NUMPAD9
      say "Aye sir, full speed ahead"
   }
 
   // Flight landing overrides
   //--------------------------
   // NOT USED (yet)
   // Yaw left   -> Joystick1.Button4
   // Yaw right  -> Joystick1.Button2
   // Pitch up   -> ?
   // Pitch down -> ?
   // Roll left  -> ?
   // Roll right -> ?
   // Thrust left     -> ?
   // Thrust right    -> ?
   // Thrust up       -> ?
   // Thrust down     -> ?
   // Thrust forward  -> Joystick1.Button5
   // Thrust backward -> Joystick1.Button7
 
   // Flight miscellaneous
   //----------------------
   // Disable flight assist -> Joystick2.Button4
   // Engine boost          -> Key.NUMPADMultiply / Joystick2.Button3
   if (said("flank speed", 5) or said("booster", 5) or said("max speed", 5) or said ("emergency speed", 5) or said("get me out of here", 5)) {
      press Key.NUMPADMultiply
      wait 50 ms
      release Key.NUMPADMultiply
      say "firing boosters"
      wait 1500 ms
      // playsound("C:\Sounds\yehaw.wav");
   }
   // Enable frame shift drive -> Key.J / Joystick1.Button6
   if (said("frame shift drive", 5) or said("FSD", 5)) {
      press Key.J
      wait 50 ms
      release Key.J
      say "drive mode changed"
   }
   // Enable FSD to super cruise -> Key.U / Joystick1.Button5
   if (said("super cruise", 5) or said("subspace travel", 5)) {
      press Key.U
      wait 50 ms
      release Key.U
      say "Super cruise mode changed"
   }
   // Enable FSD to hyperspace jump -> Key.Y / Joystick1.Button7
   if (said("hyperspace",5 ) or said("hyperjump", 5)) {
      press Key.Y
      wait 50 ms
      release Key.Y
      say "Charging jump drive"
   }
   // Rotational correction -> ?
 
   // Targetting
   //------------
   // Select target ahead       -> Key.T
   if (said("target forward", 5) or said("target front", 5) or said("target crosshair", 5) or said("target ahead", 5)) {
      press Key.T
      wait 50 ms
      release Key.T
      say "acquiring front target"
   }
   // Cycle next ship -> Key.Six
   if (said("target next ship", 5) or said("next target", 5) or said("cycle next ship", 5)) {
      press Key.Six
      wait 50 ms
      release Key.Six
      say "acquiring next target"
   }
   // Cycle previous ship -> Key.Five
   if (said("target previous ship", 5) or said("previous target", 5) or said("cycle previous ship", 5)) {
      press Key.Five
      wait 50 ms
      release Key.Five
      say "acquiring previous target"
   }
   // Select highest thread -> Key.H
   if (said("target thread", 5) or said("target attacker", 5) or said("target the bastard", 5)) {
      press Key.H
      wait 50 ms
      release Key.H
      say "acquiring threatening target"
   }
   // Cycle next hostile ship -> Key.Eight
   if (said("target next hostile", 5) or said("target next foe", 5)) {
      press Key.Eight
      wait 50 ms
      release Key.Eight
      say "acquiring next hostile target"
   }
   // Cycle previous hostile ship -> Key.Seven
   if (said("target previous hostile", 5) or said("target previous foe", 5)) {
      press Key.Seven
      wait 50 ms
      release Key.Seven
      say "acquiring previous hostile target"
   }
   // Target next sub system -> Key.Zero
   if (said("target next sub system", 5)) {
      press Key.Zero
      wait 50 ms
      release Key.Zero
      say "acquiring next subsystem target"
   }
   // Target previous sub system -> Key.Nine
   if (said("target previous sub system", 5)) {
      press Key.Nine
      wait 50 ms
      release Key.Nine
      say "acquiring previous subsystem target"
   }
 
   // Weapons
   //---------
   // Primary fire     -> Joystick2.Button1
   // Secondary fire   -> Joystick2.Button2
   // Cycle next fire group - > Key.RightBracket
   if (said("next fire group", 5) or said("next weapon group", 5)) {
      press Key.RightBracket
      wait 50 ms
      release Key.RightBracket
      say "configuration changed"
      if (var.scanner == 1) {
         release Key.NUMPADDivide
         var.scanner=0
         wait 1500 ms
         say "permanent scanner deactivated"
      }
   }
   // Cycle previous fire group -> Key.LeftBracket
   if (said("previous fire group", 5) or said("previous weapon group", 5)) {
      press Key.LeftBracket
      wait 50 ms
      release Key.LeftBracket
      say "configuration changed"
      if (var.scanner == 1) {
         release Key.NUMPADDivide
         var.scanner=0
         wait 1500 ms
         say "permanent scanner deactivated"
      }
   }
   // Deploy hard points -> Key.NumpadMinus AND Joystick2.Button6
   if ((said("combat mode", 5) or said("prepare for attack",5)) and (var.hardpoints == 0)) {
      var.hardpoints=2
      press Key.NumpadMinus
      wait 50 ms
      release Key.NumpadMinus
      say "hardpoints deployed"
      wait 1500 ms
      playsound "C:\Sounds\warchant.wav"
      var.hardpoints=1
   }
   if (said("deploy hardpoints", 5) and (var.hardpoints == 0)) {
      var.hardpoints=2
      press Key.NumpadMinus
      wait 50 ms
      release Key.NumpadMinus
      say "hardpoints deployed"
      var.hardpoints=1
   }
   if ((said("trader mode", 5) or said("retract hardpoints", 5) or said("prepare for fsd",5)) and (var.hardpoints == 1)) {
      press Key.NumpadMinus
      wait 50 ms
      release Key.NumpadMinus
      var.hardpoints=0
      wait 1000 ms
      say "hardpoints retracted"
   }
   if ((pressed(Key.NumpadMinus) or pressed(Joystick2.Button6)) and (var.hardpoints != 2)) {
      if(var.hardpoints == 0) {
         var.hardpoints=1
         wait 1000 ms
         say "hardpoints deployed"
      } else {
         var.hardpoints=0
         wait 1000 ms
         say "hardpoints retracted"
      }
   }
   // We only have to press the key - the above function does the rest!
   if(said("toggle hardpoints", 5)) {
      press Key.NumpadMinus
      wait 50 ms
      release Key.NumpadMinus
   }
   if(said("reset hardpoints", 5)) {
      toggle(var.hardpoints)
      say "Understood"
   }
 
   // Cooling
   //---------
   // Silent running -> Key.NumpadPlus (with switched variable!)
   if ((said("activate stealth mode",5) or said("run unseen", 5) or said("cool down", 5) or said("system shutdown", 5)) and (var.silent == 0)) {
      press Key.NumpadPlus
      wait 50 ms
      release Key.NumpadPlus
      var.silent=1
      say "Stealth mode activated"
      playsound "C:\Sounds\jaws.wav"
      wait 1000 ms
   }
   if ((said("deactivate stealth mode", 5) or said("normal operation", 5) or said("run seen", 5) or said("heat up", 5) or said("system startup", 5)) and (var.silent == 1)) {
      press Key.NumpadPlus
      wait 50 ms
      release Key.NumpadPlus
      var.silent=0
      // say "Stealth mode deactivated"
      playsound "C:\Sounds\startup.wav"
   }
   // Make sure we get keyboard activated/deactivated silent runnings as well
   if (pressed(Key.NumpadPlus) or pressed(Joystick1.Button13)) {
      if (var.silent == 0) {
         var.silent=1
         say "Stealth mode activated"
         playsound "C:\Sounds\jaws.wav"
      } else {
         var.silent=0
         // say "Stealth mode deactivated"
         playsound "C:\Sounds\startup.wav"
      }
      wait 1000 ms
   }
   // Deploy heat sink -> Key.V
   if (said("use heat sink", 5) or said("deep freeze", 5)) {
      press Key.V
      wait 50 ms
      release Key.V
      say "cooling down"
   }
 
   // Miscellaneous
   //---------------
   // L - Ship lights
   if ((said("illumination") or said("toggle lights", 5)) and (var.light == 0)) {
      press Key.L
      wait 50 ms
      release Key.L
      say "headlamp on"
      var.light = 1
   }
   if ((said("illumination") or said("toggle lights", 5)) and (var.light == 1)) {
      press Key.L
      wait 50 ms
      release Key.L
      say "headlamp off"
      var.light = 0
   }
   if (pressed(Key.L)) {
      if (var.light == 0) {
         say "headlamp on"
         var.light = 1
      } else {
         say "headlamp off"
         var.light = 0
      }
   }
   // Increase sensor range -> Key.PageUp
   if (said("zoom out", 5) or said("increase range", 5)) {
      press Key.PageUp
      wait 50 ms
      release Key.PageUp
      say "zoomed out"
   }
   if ((said("max zoom out", 5) or said("max range", 5) or said("no zoom", 5)) or (var.zoomout > 0)) {
      if (var.zoomout < 8) {
         press Key.PageUp
         wait 25 ms
         release Key.PageUp
         wait 50 ms
         var.zoomout = var.zoomout + 1
      } else {
         var.zoomout = 0
         say "maximum scanner range"
         wait 1000 ms
      }
   }
   // Decrease sensor range -> Key.PageDown
   if (said("zoom in", 5) or said("decrease range", 5)) {
      press Key.PageDown
      wait 50 ms
      release Key.PageDown
      say "zoomed in"
   }
   if ((said("max zoom in", 5) or said("min range", 5) or said("full zoom", 5)) or (var.zoomin > 0)) {
      if (var.zoomin < 8) {
         press Key.PageDown
         wait 25 ms
         release Key.PageDown
         wait 50 ms
         var.zoomin = var.zoomin + 1
      } else {
         var.zoomin = 0
         say "minimum scanner range"
         wait 1000 ms
      }
   }
   // Power Engines -> Key.Up
   if (said("power thrusters", 5) or said("power engines", 5)) {
      press Key.Up
      wait 50 ms
      release Key.Up
      say "increased thruster power"
   }
   if (said("max power thrusters") or said("max power engines") or said("max thrusters") or said("max engines")) {
      press Key.Up
      wait 25 ms
      release Key.Up
      wait 50 ms
      press Key.Up
      wait 25 ms
      release Key.Up
      wait 50 ms
      press Key.Up
      wait 25 ms
      release Key.Up
      wait 50 ms
      press Key.Up
      wait 25 ms
      release Key.Up
      say "thruster power maximized"
   }
   // Power Weapons -> Key.Right
   if (said("power lasers", 5) or said("power weapons", 5)) {
      press Key.Right
      wait 50 ms
      release Key.Right
      say "increased weapons power"
   }
   if (said("max power lasers") or said("max power weapons") or said("max lasers") or said("max weapons")) {
      press Key.Right
      wait 25 ms
      release Key.Right
      wait 50 ms
      press Key.Right
      wait 25 ms
      release Key.Right
      wait 50 ms
      press Key.Right
      wait 25 ms
      release Key.Right
      wait 50 ms
      press Key.Right
      wait 25 ms
      release Key.Right
      say "weapons power maximized"
   }
   // Power systems -> Key.Left
   if (said("power systems", 5) or said("power shields", 5)) {
      press Key.Left
      wait 50 ms
      release Key.Left
      say "increased system power"
   }
   if (said("max power systems") or said("max power shields") or said("max systems") or said ("max shields")) {
      press Key.Left
      wait 25 ms
      release Key.Left
      wait 50 ms
      press Key.Left
      wait 25 ms
      release Key.Left
      wait 50 ms
      press Key.Left
      wait 25 ms
      release Key.Left
      wait 50 ms
      press Key.Left
      wait 25 ms
      release Key.Left
      say "system power maximized"
   }
   // Power Balance -> Key.Down
   if (said("equal power", 5) or said("balanced power", 5)) {
      press Key.Down
      wait 50 ms
      release Key.Down
      say "Power equalized"
   }
   // Reset oculus orientation -> ?
 
   // Cargo Scoop -> Key.RightShift (in HOLD mode)
   if ((said("open cargo scoop", 5) or said("start collecting", 5)) and (var.scoop == 0)) {
      press Key.RightShift
      say "opening cargo scoop"
      var.scoop=1
   }
   if ((said("close cargo scoop", 5) or said("stop collecting", 5)) and (var.scoop == 1)) {
      release Key.RightShift
      say "closing cargo scoop"
      var.scoop=0
   }
   // Jettison cargo -> Key.End
   if (said("jettison cargo now", 5)) {
      press Key.End
      wait 50 ms
      release Key.End
      say "There goes my profit."
   }
   // Landing gear -> Key.G
   if (said("landing gear down", 5) and (var.gear == 0)) {
      press Key.G
      wait 50 ms
      release Key.G
      say "deploying gear"
      wait 1000 ms
      var.gear=1
   }
   if (said("landing gear up", 5) and (var.gear == 1)) {
      press Key.G
      wait 50 ms
      release Key.G
      say "retracting gear"
      wait 1000 ms
      var.gear=0
   }
   // Make sure we get keyboard activated/deactivated gear toggle as well
   if (pressed(Key.G)) {
      if (var.gear == 0) {
         say "deploying gear"
         wait 1000 ms
         var.gear=1
      } else {
         say "retracting gear"
         wait 1000 ms
         var.gear=0
      }
   }
   // Make sure we can resert this if needed
   if (said("landing gear is up", 5)) {
      var.gear=0
      say "Understood"
      wait 1000 ms
   }
   if (said("landing gear is down", 5)) {
      var.gear=1
      say "Understood"
      wait 1000 ms
   }
   // Microphone mute -> Key.B (hold mode)
   // Use shield cell -> Key.C
   if (said("shield cell", 5) or said("use shield cell", 5) or said("full shields", 5))  {
      press Key.C
      wait 50 ms
      release Key.C
      say "Charging shields"
   }
   // Use chaff launcher -> Key.X
   if (said("use chaff launcher", 5) or said("deploy chaff", 5) or said ("countermeasures", 6)) {
      press Key.X
      wait 50 ms
      release Key.X
      say "activating countermeasure"
   }
 
   // Mode switches
   //---------------
   // Open Galaxy map -> Key.M
   if (said("galaxy map", 5) or said("map mode", 5)) {
      press Key.M
      wait 50 ms
      release Key.M
      say "toggle map"
   }
   // UI panel focus -> Key.LeftShift
   if (said("show front", 5) or said("no panel", 5) or said("front view", 5) or said ("front panel", 5)) {
      press Key.LeftShift
      wait 75 ms
      release Key.LeftShift
      var.panel=0 // reset it only - we don't check this for standard view
      say "Standard view"
   }
   if (said("reset panels", 5) or pressed(Key.LeftShift)) {
      say "panels reset"
      var.panel=0
   }
   // Pause         -> Key.P
   // Target panel  -> Key.One
   if ((said("show targets", 5) or said("show navigation", 5) or said("show contacts", 5) or said("left panel", 5) or said("left view", 5)) and (var.panel != 1)) {
      press Key.One
      wait 75 ms
      release Key.One
      var.panel=1
      say "target panel"
   }
   // Systems panel -> Key.Four
   if ((said("show systems", 5) or said("show status", 5) or said("right panel", 5) or said("right view", 5)) and (var.panel != 4)) {
      press Key.Four
      wait 75 ms
      release Key.Four
      var.panel=4
      say "systems panel"
   }
   // Sensors panel -> Key.Three
   if ((said("show screen", 5) or said("show scanner", 5) or said("lower panel", 5) or said("bottom view", 5) or said("show sensors", 5)) and (var.panel != 3)) {
      press Key.Three
      wait 75 ms
      release Key.Three
      var.panel = 3
      say "sensors panel"
   }
   // Quick Comms   -> Key.Enter
   // Comms panel   -> Key.Two
   if ((said("show comms", 5) or said("show communications", 5) or said("upper panel", 5) or said("top view", 5)) and (var.panel != 2)){
      press Key.Two
      wait 75 ms
      release Key.Two
      var.panel=2
      say "communications panel"
   }
 
   // Interface mode
   //----------------
   // UI panel up     -> Key.W
   // UI panel down   -> Key.S
   // UI panel left   -> Key.A
   // UI Panel right  -> Key.D
   // UI panel select -> Key.Space
   // Next panel tab     -> Key.E
   if (said("panel right", 5) or said("right tab", 5) or said("next tab", 5)) {
      press Key.E
      wait 50 ms
      release Key.E
   }
   // Previous panel tab -> Key.Q
   if (said("panel left", 5) or said("left tab", 5) or said("previous tab", 5)) {
      press Key.Q
      wait 50 ms
      release Key.Q
   }
 
   // headlook mode
   //---------------
   // Head look -> Key.NUMPAD0
   if ((said("enable tracker",5) or said("dogfight mode on", 5) or said("enable dogfight mode", 5) or said("headlook mode", 5)) and (var.headlook == 0)) {
      press Key.NumPAD0
      wait 50 ms
      release Key.NumPAD0
      say "head tracker enabled"
      var.headlook=1
   }
   if ((said("disable tracker",5) or said("dogfight mode off", 5) or said("headlook mode off", 5)) and (var.headlook == 1)){
      press Key.NumPAD0
      wait 50 ms
      release Key.NumPAD0
      say "head tracker disabled"
      var.headlook=0
   }
   if (pressed(Key.Numpad0)) {
      if(var.headlook == 0) {
         say "head tracker enabled"
         var.headlook=1
      } else {
         say "head tracker disabled"
         var.headlook=0
      }
   }
   if (said("toggle headlook", 5) or said("toggle tracker",5 ) or said("dogfight mode", 5) or said("toggle headlook mode", 5)) {
      press Key.NumPAD0
      wait 50 ms
      release Key.NumPAD0
      say "toggled headlook mode"
   }
   // Reset head look -> Key.NumPadDot
   if (said("jarvis reset headlook", 5) or said("jarvis reset tracker",5 ) or said("jarvis center view", 5) or said("center view", 5) or said("jarvis center tracker", 5)) {
      press Key.NumPadDot
      wait 50 ms
      release Key.NumPadDot
      say "tracker centered"
   }
   // Look up    -> Joystick2.Pov1Up
   // Look down  -> Joystick2.Pov1Down
   // Look left  -> Joystick2.Pov1Left
   // Look right -> Joystick2.Pov1Right
 
   // Galaxy Map
   //------------
   // Galaxy cam pitch up   -> Key.T
   // Galaxy cam pitch down -> Key.G
   // Galaxy cam yaw left   -> Key.Q
   // Galaxy cam yaw right  -> Key.E
   // Galaxy cam translate forward  -> Key.W
   // Galaxy cam translate backward -> Key.S
   // Galaxy cam translate left  -> Key.A
   // Galaxy cam translate right -> Key.D
   // Galaxy cam translate up    -> Key.R
   // Galaxy cam translate down  -> Key.F
   // Galaxy cam zoom in  -> Key.Z
   // Galaxy cam zoom out -> Key.X
   // Galaxy cam set Y axis to Z axis -> ?
 
   //=================
   // Command scripts
   //=================
 
   // Send Docking request
   if (said("request docking", 5) or said("docking request", 5) or said("let me in", 5)) {
      press Key.E
      wait 50 ms
      release Key.E
      wait 200 ms
      press Key.E
      wait 50 ms
      release Key.E
      wait 200 ms
      press Key.Space
      wait 50 ms
      release Key.Space
      wait 250 ms
      press Key.S
      wait 50 ms
      release Key.S
      wait 200 ms
      press Key.Space
      wait 50 ms
      release Key.Space
      wait 200 ms
      press Key.Q
      wait 50 ms
      release Key.Q
      wait 200 ms
      press Key.Q
      wait 50 ms
      release Key.Q
      say "docking request sent"
   }
   // Cancel docking request
   if (said("cancel docking", 5) or said("cancel docking request", 5) or said("abort docking", 5)) {
      press Key.E
      wait 50 ms
      release Key.E
      wait 200 ms
      press Key.E
      wait 50 ms
      release Key.E
      wait 200 ms
      press Key.Space
      wait 50 ms
      release Key.Space
      wait 250 ms
      press Key.S
      wait 50 ms
      release Key.S
      wait 200 ms
      press Key.Space
      wait 50 ms
      release Key.Space
      wait 200 ms
      press Key.Q
      wait 50 ms
      release Key.Q
      wait 200 ms
      press Key.Q
      wait 50 ms
      release Key.Q
      say "docking request cancelled"
   }
   // Battle stations
   if (said("under attack", 5) or said("battle stations", 5) or said("red alert", 5)) {
      playsound "C:\Sounds\aoogah.wav"
      if (var.hardpoints == 0) {
         var.hardpoints=2
         press Key.NumpadMinus
         wait 50 ms
         release Key.NumpadMinus
         var.hardpoints=1
      }
      // Equalize power
      press Key.Down
      wait 50 ms
      release Key.Down
      // divert power to shields
      press Key.Left
      wait 50 ms
      release Key.Left
      // divert power to weapons
      press Key.Right
      wait 50 ms
      release Key.Right
      // Acquire next target (works fine for interdictions)
      press Key.Six
      wait 50 ms
      release Key.Six
      wait 3500 ms
      say "ship ready for action"
   }
   // Keep scanner active all the time
   if (said("activate scanner", 5) and (var.scanner == 0)) {
      press Key.NUMPADDivide
      say "permanent scanner activated"
      var.scanner=1
   }
   if (said("deactivate scanner", 5) and (var.scanner == 1)) {
      release Key.NUMPADDivide
      say "permanent scanner deactivated"
      var.scanner=0
   }
   // deactivate permanent scanner if joystick button is pressed
   if (pressed(Joystick2.Button2) and (var.scanner == 1)) {
      release Key.NUMPADDivide
      say "permanent scanner deactivated"
      var.scanner=0
   }
}
 
 

Please note that you will have to change either the script or your keyboard configuration in Elite: Dangerous to be able to use this script.