}
}
-qboolean CL_VM_InputEvent (qboolean down, int key, int ascii);
+extern qboolean CL_VM_InputEvent (int eventtype, int x, int y);
/*
===================
case key_game:
// csqc has priority over toggle menu if it wants to (e.g. handling escape for UI stuff in-game.. :sick:)
- q = CL_VM_InputEvent(down, key, ascii);
+ q = CL_VM_InputEvent(down ? 0 : 1, key, ascii);
if (!q && down)
MR_ToggleMenu(1);
break;
Con_ToggleConsole_f ();
return;
}
+
+ if (COM_CheckParm ("-noconsole"))
+ return; // only allow the key bind to turn off console
+
Key_Console (key, ascii);
return;
}
MR_KeyEvent (key, ascii, down);
break;
case key_game:
- q = CL_VM_InputEvent(down, key, ascii);
+ q = CL_VM_InputEvent(down ? 0 : 1, key, ascii);
// ignore key repeats on binds and only send the bind if the event hasnt been already processed by csqc
if (!q && bind)
{
}
}
+// a helper to simulate release of ALL keys
+void
+Key_ReleaseAll (void)
+{
+ int key;
+ // clear the event queue first
+ eventqueue_idx = 0;
+ // then send all down events (possibly into the event queue)
+ for(key = 0; key < MAX_KEYS; ++key)
+ if(keydown[key])
+ Key_Event(key, 0, false);
+ // now all keys are guaranteed down (once the event queue is unblocked)
+ // and only future events count
+}
+
/*
===================
Key_ClearStates