/*	=================================================================================================
		キー入力管理
								Programed By K.Tadamori		2000/12/23 - 
	=================================================================================================	*/



/*	-------------------------------------------------------------------------------------------------
 *		構築
	-------------------------------------------------------------------------------------------------	*/
#include <sys/bios.h>
#include "key.h"

/*	-------------------------------------------------------------------------------------------------
 *		グローバル変数
	-------------------------------------------------------------------------------------------------	*/

/*	-------------------------------------------------------------------------------------------------
 *		ローカル構造体宣言
	-------------------------------------------------------------------------------------------------	*/
typedef struct {
	int	iKeyPress;
	int	iKeyPushDown;
	int iKeyBack;
} KEY_REG;

/*	-------------------------------------------------------------------------------------------------
 *		ローカル変数
	-------------------------------------------------------------------------------------------------	*/
KEY_REG	l_key;

/*	-------------------------------------------------------------------------------------------------
 *		ローカル関数
	-------------------------------------------------------------------------------------------------	*/

void key_Init()
{
	l_key.iKeyBack = 0x0000;
}

/*	-------------------------------------------------------------------------------------------------
 *		[概要]
 *			現在のキーが押されているものをリピートカウントしないようにする。
	-------------------------------------------------------------------------------------------------	*/
void key_WithoutRepeat()
{
	l_key.iKeyBack = 0xffff;
}

/*	-------------------------------------------------------------------------------------------------
 *		[概要]
 *
 *		[IN]
 *
 *		[OUT]
 *
 *		[RETURN]
 *
	-------------------------------------------------------------------------------------------------	*/
void	key_Sense()
{
	l_key.iKeyPress = key_press_check();
	l_key.iKeyPushDown = l_key.iKeyPress & (0xffff^l_key.iKeyBack);
	l_key.iKeyBack = l_key.iKeyPress;
}

/*	-------------------------------------------------------------------------------------------------
 *		[概要]
 *
 *		[IN]
 *
 *		[OUT]
 *
 *		[RETURN]
 *
	-------------------------------------------------------------------------------------------------	*/
int		key_Press()
{
	return l_key.iKeyPress;
}


/*	-------------------------------------------------------------------------------------------------
 *		[概要]
 *			連射防止が効いている入力です
 *		[IN]
 *
 *		[OUT]
 *
 *		[RETURN]
 *
	-------------------------------------------------------------------------------------------------	*/
int		key_PushDown()
{
	return l_key.iKeyPushDown;
}