After some experimenting, I've discovered how to use a new feature in the game, as of 1.7: custom key polling from client stations! Here is what you do:
First the server has to start listening, to do this use the <start_getting_keypresses_from> command, like so:
<start_getting_keypresses_from consoles="S" />
Now the server will start listening for keys, but another command is needed: if_client_key, which has a similar syntax to if_gm_key:
<if_client_key keyText="X" />
In this example, I've started polling from the science console (S), listening for key "X". Something will happen when the player at Science presses the X key. To stop polling, use the <end_getting_keypresses_from> command:
<end_getting_keypresses_from consoles="S" />
So an example use in your script might look like:
<event>
<if_timer_finished name="something" />
<if_variable name="prompted" comparator="=" value="0" />
<warning_popup_message message="Press the X key now" consoles="S" />
<start_getting_keypresses_from consoles="S" />
<set_variable name="prompted" value="1" />
</event>
<event>
<if_client_key keyText="X" />
<warning_popup_message message="You pressed the X key! Huzzah!" consoles="SH" />
<end_getting_keypresses_from consoles="S" />
</event>
You can use this for triggering
any custom event, including something that couldn't be done before without some wierdness. Now, you can have the captain's map "beam over an away team", or have use different keys for different responses to an NPC conversation over comms. Since we can now add and subtract variables in the scripting system, I'm looking forward to integrating some kind of trading with neutral NPCs in my mission scripts.