diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm
index 49fe221fae4..cefd87c2cbc 100644
--- a/code/modules/atmospherics/machinery/airalarm.dm
+++ b/code/modules/atmospherics/machinery/airalarm.dm
@@ -1111,6 +1111,13 @@
new /obj/item/stack/cable_coil(loc, 3)
qdel(src)
+/obj/machinery/alarm/AltClick(mob/user)
+ if(Adjacent(user) && allowed(user) && !wires.is_cut(WIRE_IDSCAN))
+ locked = !locked
+ to_chat(user, "You [locked ? "lock" : "unlock"] the Air Alarm interface.")
+ else
+ to_chat(user, "Access denied.")
+
/obj/machinery/alarm/examine(mob/user)
. = ..()
switch(buildstage)
diff --git a/code/modules/power/apc/apc.dm b/code/modules/power/apc/apc.dm
index b83b2a91101..bdc6f46e9d0 100644
--- a/code/modules/power/apc/apc.dm
+++ b/code/modules/power/apc/apc.dm
@@ -362,6 +362,10 @@
else
return ..()
+/obj/machinery/power/apc/AltClick(mob/user)
+ if(Adjacent(user))
+ togglelock(user)
+
/obj/machinery/power/apc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
if(stat & BROKEN)
return damage_amount