Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
keyboard_lowlevel_callback(3)	 Allegro manual    keyboard_lowlevel_callback(3)

NAME
     keyboard_lowlevel_callback  -  User specified low level keyboard event han-
     dler. Allegro game programming library.

SYNOPSIS
     #include <allegro.h>

     extern void (*keyboard_lowlevel_callback)(int scancode);

DESCRIPTION
     If set, this function is called by the  keyboard  handler	in  response  to
     every keyboard event, both presses (including keyboard repeat rate) and re-
     leases.  It  will	be  passed a raw keyboard scancode byte (scancodes are 7
     bits long), with the top bit (8th bit) clear if the key has been pressed or
     set if it was released. This routine executes in an interrupt  context,  so
     it must be in locked memory. Example:

	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. */
	      }
	   }

SEE ALSO
     install_keyboard(3), keyboard_callback(3), keyboard_ucallback(3), exkeys(3)

Allegro 			  version 4.4.3    keyboard_lowlevel_callback(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=keyboard_lowlevel_callback&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help