linux应用程序_1_文本浏览器_8_输入设备_5_触摸屏滑动翻页

 linux应用程序_1_文本浏览器_8_输入设备_5_触摸屏滑动翻页

本篇在线程机制的基础上,为触摸屏输入添加滑动翻页功能,并将退出控制移动到右上角

主要修改触摸屏获取事件接口:

1、读取数据,没有数据则休眠

2、记录第一次按下的数据

3、记录松开的数据

4、判断离开点是否在屏幕右上角40像素长宽的正方形中,若是则退出

5、判断松开点与第一次按下点的x坐标差值,据此记录翻页事件

6、若5中不满足翻页条件,判断松开点位置,据此记录翻页事件

(设定的滑动距离比较小,因此6中按下点与松开点的x坐标相差不会太大)

#define PRESS   0
#define RELEASE 1
static int TsInputGetEvent(PT_InputEventOpr ptInputEventOpr)
{
	static struct timeval tPreTime;
	
	static struct ts_sample tSampPress, tSampRelease;

	static int iFlag = RELEASE;
	int iTimeOut, iSlip;

	struct ts_sample tSamp;	


	if(ts_read(g_ptTs, &tSamp, 1) < 0)
			return -1;
	
	if(iFlag == RELEASE)
	{
		if(tSamp.pressure == 1)
		{
			iFlag = PRESS;
			tSampPress = tSamp;			
		}
	}
	else
	{


		if(tSamp.pressure == 0)
		{
			iFlag = RELEASE;
			
			tSampRelease = tSamp;

			if((tSampRelease.x >= (g_iXres - 40)) && (tSampRelease.y <= 40))
			{
				ptInputEventOpr->iVal  = INPUT_VAL_EXIT;
				return 0;
			}
					
			iSlip = XSlipDirt(tSampPress.x, tSampRelease.x);
			switch(iSlip)
			{
				case SLIP_NO    : 
				{				
					ptInputEventOpr->iVal  = INPUT_VAL_UNKNOWN;
					break;
				}
				case SLIP_LEFT  :
				{
					ptInputEventOpr->iVal  = INPUT_VAL_PRE;
					return 0;
				}
				case SLIP_RIGHT :
				{
					ptInputEventOpr->iVal  = INPUT_VAL_NEXT;
					return 0;
				}
			}

			iTimeOut = IsOutOf100ms(&tPreTime, &tSampRelease.tv);
			if(iTimeOut)
			{
				if(tSampRelease.x < (g_iXres / 3))			
					ptInputEventOpr->iVal  = INPUT_VAL_PRE;
				else if(tSampRelease.x > (g_iXres * 2 / 3))
					ptInputEventOpr->iVal  = INPUT_VAL_NEXT;
				else 
					ptInputEventOpr->iVal  = INPUT_VAL_UNKNOWN;
				
				return 0;
			}

		}
	}

	return -1;
}

添加滑动方向判断

#define SLIP_LEFT	1
#define SLIP_RIGHT	2
#define SLIP_NO		-1

static int XSlipDirt(int iPressX, int iReleaseX)
{
	int iDelta = iReleaseX - iPressX;

	if(iDelta > (g_iXres / 12))
		return SLIP_RIGHT;

	else if(iDelta < (0 - g_iXres / 12))
		return SLIP_LEFT;

	return SLIP_NO;
}
发布了71 篇原创文章 · 获赞 4 · 访问量 7214

猜你喜欢

转载自blog.csdn.net/floatinglong/article/details/86697886