require 'Win32API'

GetKeyState = Win32API.new('user32', 'GetKeyState', 'I', 'I')

pause = false

Thread.start {
  loop {
    print 'a' unless pause
    sleep 1
  }
}

loop {
  key_state = {:p => (GetKeyState.call(?P)[7] == 1),
               :q => (GetKeyState.call(?Q)[7] == 1)
  }
  exit if key_state[:q]
  if key_state[:p]
    pause = !pause
    sleep 0.3
  else
    sleep 0.1
  end
}