extern void (*keyboard_lowlevel_callback)(int scancode);
   volatile int key_down, key_up;
   
   void keypress_watcher(int scancode)
   {
      if (scancode & 0x80) {
         key_up = 1;
      } else {
         key_down = 1;
      }
   } END_OF_FUNCTION(keypress_watcher)
   
   ...
   
      install_timer();
      LOCK_FUNCTION(silence_g_key);
      LOCK_VARIABLE(key_down);
      LOCK_VARIABLE(key_up);
      install_keyboard();
      keyboard_lowlevel_callback = keypress_watcher;
      /* Disable keyboard repeat to get typewriter effect. */
      set_keyboard_rate(0, 0);
   
   ...
   
      while (game_loop) {
         if (key_down) {
            key_down = 0;
            /* Play sample of typewriter key press. */
         }
         if (key_up) {
            key_up = 0;
            /* Play sample of typewriter key release. */
         }
      }