You must set proc_mode inside your wait loop, not outside:

void mouse_key_observer() {
while (1) {
if (key_space && !space_been_pressed) {
handle_key_space();
}
proc_mode = PROC_NOFREEZE;
wait (1);
}
}