event.c (plain text)
// Event sample

string prevString;
out(string str) {
   textattr(0,0,0);
   text(80,1,prevString);
   textattr(0,1,0);
   text(80,1,str);
   prevString = str;
}

// Handle a key event
handlekey() {
   char k;

   k = key();
   out("KeyEvent: '"+k+"' + [" + (int)k + "]");
}

int x, y;
// Handle a pen event
handlepen(int e) {
   if (e==2) {
      x = penx();
      y = peny();
   } else if (e==4)
      line(1, x, y, x=penx(), y=peny());
   else out("PenUp: ("+penx()+", "+peny()+")");
}

// Handle a button event
handleb(int e) {
   if (e==5) out("PageUpEvent");
   else if (e==6) out("PageDnEvent");
   else if (e==11) out("MenuEvent");
   else out("HardButton" + (e-6));
   if (e==11) exit();
}

main() {
   int e;

   clear();
   graph_on();
   title("Event Sample");
   hookhard(1);  // intercept hard buttons
   hookmenu(1);  // intercept the menu silkscreen button
   while (1) {
      e = event(1);
      if (e==1) handlekey();
      else if (e>=2 && e<=4) handlepen(e);
      else handleb(e);
   }
}