added more manual overrides to the indexer
diff --git a/frc971/autonomous/auto.cc b/frc971/autonomous/auto.cc
index 5c076c6..1a2a46a 100644
--- a/frc971/autonomous/auto.cc
+++ b/frc971/autonomous/auto.cc
@@ -50,25 +50,37 @@
 void StartIndex() {
   LOG(INFO, "Starting index\n");
   control_loops::index_loop.goal.MakeWithBuilder()
-    .goal_state(2).force_fire(false).Send();
+    .goal_state(2)
+    .force_fire(false)
+    .override_index(false)
+    .Send();
 }
 
 void PreloadIndex() {
   LOG(INFO, "Preloading index\n");
   control_loops::index_loop.goal.MakeWithBuilder()
-    .goal_state(3).force_fire(false).Send();
+    .goal_state(3)
+    .force_fire(false)
+    .override_index(false)
+    .Send();
 }
 
 void ShootIndex() {
   LOG(INFO, "Shooting index\n");
   control_loops::index_loop.goal.MakeWithBuilder()
-    .goal_state(4).force_fire(false).Send();
+    .goal_state(4)
+    .force_fire(false)
+    .override_index(false)
+    .Send();
 }
 
 void ResetIndex() {
   LOG(INFO, "Resetting index\n");
   control_loops::index_loop.goal.MakeWithBuilder()
-    .goal_state(5).force_fire(false).Send();
+    .goal_state(5)
+    .force_fire(false)
+    .override_index(false)
+    .Send();
 }
 
 void WaitForIndexReset() {
diff --git a/frc971/control_loops/index/index.cc b/frc971/control_loops/index/index.cc
index bec7992..0e5270a 100644
--- a/frc971/control_loops/index/index.cc
+++ b/frc971/control_loops/index/index.cc
@@ -999,7 +999,11 @@
   if (output) {
     output->intake_voltage = intake_voltage;
     output->transfer_voltage = transfer_voltage;
-    output->index_voltage = wrist_loop_->U(0, 0);
+    if (goal->override_index) {
+      output->index_voltage = goal->index_voltage;
+    } else {
+      output->index_voltage = wrist_loop_->U(0, 0);
+    }
     output->loader_up = loader_up_;
     output->disc_clamped = disc_clamped_;
     output->disc_ejected = disc_ejected_;
diff --git a/frc971/control_loops/index/index_motor.q b/frc971/control_loops/index/index_motor.q
index 94e65b9..c14d459 100644
--- a/frc971/control_loops/index/index_motor.q
+++ b/frc971/control_loops/index/index_motor.q
@@ -16,6 +16,10 @@
     int32_t goal_state;
     // Forces the loader to fire.
     bool force_fire;
+
+    // If true, set the indexer voltage to index_voltage.
+    bool override_index;
+    double index_voltage;
   };
 
   message Position {
diff --git a/frc971/input/JoystickReader.cc b/frc971/input/JoystickReader.cc
index a884393..7b11625 100644
--- a/frc971/input/JoystickReader.cc
+++ b/frc971/input/JoystickReader.cc
@@ -189,6 +189,17 @@
       }
       index_goal->force_fire = Pressed(2, 12);
 
+      const bool index_up = Pressed(2, 9);
+      const bool index_down = Pressed(2, 7);
+      index_goal->override_index = index_up || index_down;
+      if (index_up && index_down) {
+        index_goal->index_voltage = 0.0;
+      } else if (index_up) {
+        index_goal->index_voltage = 12.0;
+      } else if (index_down) {
+        index_goal->index_voltage = -12.0;
+      }
+
       index_goal.Send();
       shooter_goal.Send();
     }