+ if(!pressed) return;
+
+ switch(key) {
+ case ' ':
+ if(dsys_running) {
+ dsys_stop();
+ } else {
+ dsys_run();
+ }
+ break;
+
+ case '\b':
+ dsys_seek_abs(0);
+ break;
+
+ default:
+ if(key >= '0' && key <= '9') {
+ dsys_seek_rel((float)(key - '0') / 9.0f);
+
+ } else if(key >= KEY_F1 && key <= KEY_F12) {
+ int idx = key - KEY_F1;
+ if(idx < dsys_num_screens) {
+ dsys_run_screen(dsys_screens[idx]);
+ }
+
+ } else {
+ struct demoscreen *scr = dsys_act_scr;
+ while(scr) {
+ if(scr->keyboard) {
+ scr->keyboard(key, pressed);
+ }
+ scr = scr->next;
+ }
+ }
+ }