File:  [RetroPC.NET] / np2 / mona / inputmng.c
Revision 1.1: download - view: text, annotated - select for diffs
Fri Feb 4 14:45:46 2005 JST (20 years, 8 months ago) by yui
Branches: MAIN
CVS tags: VER_0_82_x64, VER_0_82, VER_0_81A, VER_0_81, HEAD
support Mona-OS (T.Yui)

#include	"compiler.h"
#include	"inputmng.h"


typedef struct {
	short	key;
	UINT	bit;
} KEYBIND;

typedef struct {
	UINT	kbs;
	KEYBIND	kb[32];
} INPMNG;

static	INPMNG	inpmng;

static const KEYBIND keybind[] = {
					{SDLK_UP,		KEY_UP},
					{SDLK_DOWN,		KEY_DOWN},
					{SDLK_LEFT,		KEY_LEFT},
					{SDLK_RIGHT,	KEY_RIGHT},
					{SDLK_RETURN,	KEY_ENTER},
					{SDLK_ESCAPE,	KEY_MENU},
					{SDLK_TAB,		KEY_SKIP}};		/* とりあえずね… */


// ----

void inputmng_init(void) {

	INPMNG	*im;

	im = &inpmng;
	ZeroMemory(im, sizeof(INPMNG));
	im->kbs = sizeof(keybind) / sizeof(KEYBIND);
	CopyMemory(im->kb, keybind, sizeof(keybind));
}

void inputmng_keybind(short key, UINT bit) {

	INPMNG	*im;
	UINT	i;

	im = &inpmng;
	for (i=0; i<im->kbs; i++) {
		if (im->kb[i].key == key) {
			im->kb[i].bit = bit;
			return;
		}
	}
	if (im->kbs < (sizeof(im->kb) / sizeof(KEYBIND))) {
		im->kb[im->kbs].key = key;
		im->kb[im->kbs].bit = bit;
		im->kbs++;
	}
}

UINT inputmng_getkey(short key) {

	INPMNG	*im;
	KEYBIND	*kb;
	UINT	kbs;

	im = &inpmng;
	kb = im->kb;
	kbs = im->kbs;
	while(kbs--) {
		if (kb->key == key) {
			return(kb->bit);
		}
		kb++;
	}
	return(0);
}


RetroPC.NET-CVS <cvs@retropc.net>