File:  [RetroPC.NET] / xmil / adv / win32s / advkey.cpp
Revision 1.1: download - view: text, annotated - select for diffs
Fri Feb 4 15:42:10 2005 JST (20 years, 8 months ago) by yui
Branches: MAIN
CVS tags: HEAD
RetroPC CVS restarting 2005/02/04 (T.Yui)

#include	"compiler.h"


typedef struct {
	UINT16	key;
	UINT16	bit;
} KEYBIND;

static const KEYBIND keybind[10] = {
			{'X',			ADVKEY_A},
			{'Z',			ADVKEY_B},
			{'A',			ADVKEY_SELECT},
			{'S',			ADVKEY_START},
			{VK_RIGHT,		ADVKEY_RIGHT},
			{VK_LEFT,		ADVKEY_LEFT},
			{VK_UP,			ADVKEY_UP},
			{VK_DOWN,		ADVKEY_DOWN},
			{'W',			ADVKEY_R},
			{'Q',			ADVKEY_L}};


// ----

void advkey_initialize(void) {

	*REG_KEYINPUT = 0xffff;
}

void advkey_keydown(UINT16 key) {

const KEYBIND	*kb;
	UINT		r;

	kb = keybind;
	r = NELEMENTS(keybind);
	do {
		if (key == kb->key) {
			*REG_KEYINPUT &= ~kb->bit;
			break;
		}
		kb++;
	} while(--r);
}

void advkey_keyup(UINT16 key) {

const KEYBIND	*kb;
	UINT		r;

	kb = keybind;
	r = NELEMENTS(keybind);
	do {
		if (key == kb->key) {
			*REG_KEYINPUT |= kb->bit;
			break;
		}
		kb++;
	} while(--r);
}


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