Well the first problem is that once the code enters your while(1) loop, that's the end of the show as far as the rest of your code is concerned.
The other problem I suppose is that your arUtilTimer doesn't offer much benefit over using the regular time functions. At the very least I would have expected to see some kind of callback interface where you could arrange for a function to be called at an interval.
In essence, you can only have one while(1) loop at the top level of your code, and everything within it needs to be non-blocking.
Code:
while ( 1 ) {
// non blocking key detection
if ( keyPressed() ) {
// read key
// do something
}
if ( timeExpired() ) {
// do draw code
}
// short sleep, approximately matched to your video rate
// 16ms is ~60Hz
// 20ms is 50Hz
}