65 lines
1.8 KiB
C
65 lines
1.8 KiB
C
|
#ifndef __al_included_allegro5_aintern_keyboard_h
|
||
|
#define __al_included_allegro5_aintern_keyboard_h
|
||
|
|
||
|
#include "allegro5/internal/aintern_driver.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
typedef struct ALLEGRO_KEYBOARD_DRIVER
|
||
|
{
|
||
|
int keydrv_id;
|
||
|
const char *keydrv_name;
|
||
|
const char *keydrv_desc;
|
||
|
const char *keydrv_ascii_name;
|
||
|
AL_METHOD(bool, init_keyboard, (void));
|
||
|
AL_METHOD(void, exit_keyboard, (void));
|
||
|
AL_METHOD(ALLEGRO_KEYBOARD*, get_keyboard, (void));
|
||
|
AL_METHOD(bool, set_keyboard_leds, (int leds));
|
||
|
AL_METHOD(const char *, keycode_to_name, (int keycode));
|
||
|
AL_METHOD(void, get_keyboard_state, (ALLEGRO_KEYBOARD_STATE *ret_state));
|
||
|
} ALLEGRO_KEYBOARD_DRIVER;
|
||
|
|
||
|
|
||
|
AL_ARRAY(_AL_DRIVER_INFO, _al_keyboard_driver_list);
|
||
|
|
||
|
AL_ARRAY(const char *, _al_keyboard_common_names);
|
||
|
|
||
|
int _al_parse_key_binding(const char *s, unsigned int *modifiers);
|
||
|
|
||
|
|
||
|
struct ALLEGRO_KEYBOARD
|
||
|
{
|
||
|
ALLEGRO_EVENT_SOURCE es;
|
||
|
};
|
||
|
|
||
|
|
||
|
/* Helpers for AL_KEYBOARD_STATE structures. */
|
||
|
|
||
|
#define _AL_KEYBOARD_STATE_KEY_DOWN(STATE, KEYCODE) \
|
||
|
(((STATE).__key_down__internal__[(KEYCODE) / 32] & (1 << ((KEYCODE) % 32)))\
|
||
|
? true : false)
|
||
|
|
||
|
#define _AL_KEYBOARD_STATE_SET_KEY_DOWN(STATE, KEYCODE) \
|
||
|
do { \
|
||
|
int kc = (KEYCODE); \
|
||
|
(STATE).__key_down__internal__[kc / 32] |= (1 << (kc % 32)); \
|
||
|
} while (0)
|
||
|
|
||
|
#define _AL_KEYBOARD_STATE_CLEAR_KEY_DOWN(STATE, KEYCODE) \
|
||
|
do { \
|
||
|
int kc = (KEYCODE); \
|
||
|
(STATE).__key_down__internal__[kc / 32] &= ~(1 << (kc % 32)); \
|
||
|
} while (0)
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/* vi ts=8 sts=3 sw=3 et */
|