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
       handler.	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
       releases. 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	inter-
       rupt 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)

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO

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

home | help