Re: [linux-audio-dev] C++ Keyboard Event Handling

From: David Olofson <david@email-addr-hidden>
Date: Fri Jan 20 2006 - 14:24:08 EET

On Friday 20 January 2006 12:31, Carlo Capocasa wrote:
[...]
> I want to create a console keyboard to MIDI application and for this
> I would like to read the physical status of keyboard keys.

That is, MIDI output, as in sending MIDI messages to an onboard or
external hardware synth, or a softsynth running in the driver or as a
separate application? (As opposed to generating "wave" audio in your
application.)

Anyway, keybord input is done by handling "press" and "release"
events. When you get a "press" event, you set some state variable for
the corresponding key to "down", and when you get a "release" event,
you clear that state variable.

SDL also has an alternative API that has this logic built in:
SDL_GetKeyState():

'man SDL_GetKeyState':
----------------------------------------------------------------------
...
SYNOPSIS
       #include "SDL.h"

       Uint8 *SDL_GetKeyState(int *numkeys);

DESCRIPTION
       Gets a snapshot of the current keyboard state. The
       current state is return as a pointer to an array,
       the size of this array is stored in numkeys. The
       array is indexed by the SDLK_* symbols. A value of
       1 means the key is pressed and a value of 0 means
       its not. The pointer returned is a pointer to an
       internal SDL array and should not be freed by the
       caller.

              Note:

              Use SDL_PumpEvents to update the state array.

EXAMPLE
       Uint8 *keystate = SDL_GetKeyState(NULL);
       if ( keystate[SDLK_RETURN] )
                printf("Return Key Pressed.");
...
----------------------------------------------------------------------

//David Olofson - Programmer, Composer, Open Source Advocate

.------- http://olofson.net - Games, SDL examples -------.
| http://zeespace.net - 2.5D rendering engine |
| http://audiality.org - Music/audio engine |
| http://eel.olofson.net - Real time scripting |
'-- http://www.reologica.se - Rheology instrumentation --'
Received on Fri Jan 20 16:15:08 2006

This archive was generated by hypermail 2.1.8 : Fri Jan 20 2006 - 16:15:08 EET