/* マウスボタンの状態を知る関数 */
/* リターン値：
	 0=押されていない
	 1=押された
	-1=押されっぱなし
*/

#include <iocslib.h>
#include "deftype.h"

static char fstart=1;
static char btn[2]={0,0}; /* [0]=右 , [1]=左 */

static int botton(int c,int mode)
{
	if (btn[mode]) { /* 前押されていた */
		if (c) return(-1); /* 押されたまま：無効 */
		/* 放された */
		btn[mode]=0;
		return(0);
	}
	/* 前は押されていない */
	if (c) { /* 今押された */
		btn[mode]++;
		return(1); /* 有効 */
	}
	/* 今も押されていない */
	return(0);
}

void mson_init(int mode)
/* ボタンを読み出して処理した後はこの関数で初期化すること */
{
unint c;
	if (mode==3) {
		btn[0]=btn[1]=0;
	} else {
		c=MS_GETDT();
		if (mode==0||mode==2) btn[0]=((c&0xff)!=0); /* 右 */
		if (mode) btn[1]=((c&0xff00)!=0); /* 左 */
	}
}

int mson()
{
unint c,rb;
	if (fstart) {
		/* 最初、左右ボタンの初期状態を知る（自動初期化）*/
		mson_init(2);
		fstart=0;
	}
	
	/* マウスボタン状態把握 */
	c=MS_GETDT();
	rb=botton(c&0xff,0); /* 右 */
	return(botton(c&0xff00,1)<<16|rb); /* 左|右 */
}
