Oops begin should have been began. you could also add a case to handle the user pressing something unexpected.
began = timer
While RC = 0 and not timeout
select case true
Case MySess.WaitForKeys(0,"A")
rc = 1
Case MySess.WaitForKeys(0,"B")
rc = 2
Case MySess.WaitForKeys(0,"C")
rc = 3
Case MySess.WaitForKeys(0)
msgbox "You must enter a A,B or C to continue."
end select
end = timer
if timer - began => 120 then timeout = true
Wend
The Case MySess.WaitForKeys(0) needs to always come after you've first checked for all the keys your expecting. If it's moved up in the stack it will pop on any key (including one you want to handle differently) that falls below it.