From: Michael Fellinger Date: 2006-09-11T18:53:27+09:00 Subject: Re: Non blocking keypress reading? On Friday 08 September 2006 20:42, Sard Aukary wrote: > On Windows XP is there a way to test that a certain key has been pressed > without blocking? > > I’ve tried using curses but it blocks the current thread and any other > thread until a key is pressed. > > > I want to give the user 10 seconds so make a selection before a default > action is taken. require 'timeout' begin   Timeout.timeout(10) do     key = gets   end rescue Timeout::Error   key = default end > > Here is the test code I’ve got; > > > require 'curses' > include Curses > init_screen > noecho > trap(0) { echo } > > t1 = Time.new > Thread.new do > > #example timer thread > while(true) do > x = Time.new - t1 > h = 3+3 > setpos(12,10) > > addstr("#{x}") > > end > end > > setpos(1,5) > addstr("Please select your location") > setpos(3,5) > addstr(" 1 - Work") > setpos(4,5) > addstr(" 2 - Home") > setpos(6,5) > addstr("Esc - Exit") > while (c = getch) != ?\e do > # check what key is pressed and do stuff > end -- Weez International Limited East Roppongi Bldg 5F, 509 3-16-35 Roppongi, Minato-ku Tokyo #106-0032 Tel: 81-(0)3-3505-3881 Fax: 81-(0)3-3505-3883 E-mail: manveru@weez-int.com Website: http://weez-int.com