diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
index e7df188f70..abdc3ada57 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
@@ -27,7 +27,26 @@ Thus, the two variables affect pump operation are set in New():
construction_type = /obj/item/pipe/directional
pipe_state = "pump"
-
+
+/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ on = !on
+ update_icon()
+ investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+ return ..()
+
+/obj/machinery/atmospherics/components/binary/pump/AltClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ target_pressure = MAX_OUTPUT_PRESSURE
+ to_chat(user,"You maximize the pressure on the [src].")
+ investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+
/obj/machinery/atmospherics/components/binary/pump/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
index 46b646cabf..2efff16301 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
@@ -28,6 +28,16 @@ Thus, the two variables affect pump operation are set in New():
construction_type = /obj/item/pipe/directional
pipe_state = "volumepump"
+/obj/machinery/atmospherics/components/binary/volume_pump/CtrlClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ on = !on
+ update_icon()
+ investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+ return ..()
+
/obj/machinery/atmospherics/components/binary/volume_pump/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
@@ -192,4 +202,4 @@ Thus, the two variables affect pump operation are set in New():
else
investigate_log("Pump, [src.name], was unwrenched by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
message_admins("Pump, [src.name], was unwrenched by [ADMIN_LOOKUPFLW(user)] at [A]")
- return TRUE
\ No newline at end of file
+ return TRUE
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
index 4101deb00c..1e52e238cf 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
@@ -12,6 +12,25 @@
construction_type = /obj/item/pipe/trinary/flippable
pipe_state = "filter"
+/obj/machinery/atmospherics/components/trinary/filter/CtrlClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ on = !on
+ update_icon()
+ investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+ return ..()
+
+/obj/machinery/atmospherics/components/trinary/filter/AltClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ target_pressure = MAX_OUTPUT_PRESSURE
+ to_chat(user,"You maximize the pressure on the [src].")
+ investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+
/obj/machinery/atmospherics/components/trinary/filter/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
index 4dd2972526..ba9fdf31af 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
@@ -14,7 +14,25 @@
pipe_state = "mixer"
//node 3 is the outlet, nodes 1 & 2 are intakes
-
+/obj/machinery/atmospherics/components/trinary/mixer/CtrlClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ on = !on
+ update_icon()
+ investigate_log("Pump, [src.name], turned on by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], turned [on ? "on" : "off"] by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+ return ..()
+
+/obj/machinery/atmospherics/components/trinary/mixer/AltClick(mob/user)
+ var/area/A = get_area(src)
+ var/turf/T = get_turf(src)
+ if(user.canUseTopic(src, BE_CLOSE, FALSE,))
+ target_pressure = MAX_OUTPUT_PRESSURE
+ to_chat(user,"You maximize the pressure on the [src].")
+ investigate_log("Pump, [src.name], was maximized by [key_name(usr)] at [x], [y], [z], [A]", INVESTIGATE_ATMOS)
+ message_admins("Pump, [src.name], was maximized by [ADMIN_LOOKUPFLW(usr)] at [ADMIN_COORDJMP(T)], [A]")
+
/obj/machinery/atmospherics/components/trinary/mixer/layer1
piping_layer = PIPING_LAYER_MIN
pixel_x = -PIPING_LAYER_P_X