Fixed the shooter constants, a bunch of initialization bugs, and made it work without springs.
diff --git a/frc971/input/joystick_reader.cc b/frc971/input/joystick_reader.cc
index 8dfec5a..d751a43 100644
--- a/frc971/input/joystick_reader.cc
+++ b/frc971/input/joystick_reader.cc
@@ -5,6 +5,7 @@
 
 #include "aos/linux_code/init.h"
 #include "aos/prime/input/joystick_input.h"
+#include "aos/common/input/driver_station_data.h"
 #include "aos/common/logging/logging.h"
 
 #include "frc971/control_loops/drivetrain/drivetrain.q.h"
@@ -31,6 +32,8 @@
 const ButtonLocation kQuickTurn(1, 5);
 const ButtonLocation kClawClosed(3, 7);
 const ButtonLocation kClawOpen(3, 9);
+const ButtonLocation kFire(3, 11);
+const ButtonLocation kUnload(3, 12);
 
 class Reader : public ::aos::input::JoystickInput {
  public:
@@ -117,16 +120,17 @@
       double separation_angle = closed_ ? 0.0 : 0.5;
       double goal_angle = closed_ ? 0.0 : -0.2;
       if (!control_loops::claw_queue_group.goal.MakeWithBuilder()
-          .bottom_angle(goal_angle)
-          .separation_angle(separation_angle)
-          .intake(false).Send()) {
+               .bottom_angle(goal_angle)
+               .separation_angle(separation_angle)
+               .intake(false)
+               .Send()) {
         LOG(WARNING, "sending claw goal failed\n");
       }
       if (!control_loops::shooter_queue_group.goal.MakeWithBuilder()
-          .shot_power(0)
-          .shot_requested(false)
-          .unload_requested(true)
-          .Send()) {
+               .shot_power(0.25)
+               .shot_requested(data.IsPressed(kFire))
+               .unload_requested(data.IsPressed(kUnload))
+               .Send()) {
         LOG(WARNING, "sending shooter goal failed\n");
       }
     }