licheepi nano BS8112A触摸按键之长按短按

上一节中介绍了BS8112A芯片在荔枝派nano上的驱动实现过程。但是现在需要用到触摸按键的长按短按功能,需要稍加修改。

在BS8112A_probe函数中,设置了__clear_bit(EV_REP, input->evbit); 即取消了上报按键重发的功能,所以我们将其开启。

改为__set_bit(EV_REP, input->evbit);其余什么也不用改,这样,按键长按时驱动就会上报新的事件。

input_report_key(input, keycodes, keyval);这个函数,keycodes是键值,keyval是按下、抬起及长按标志,按下=1 抬起=0  长按=2

所以在应用层可以做如下操作实现长按短按。

if(event.type == EV_KEY)
{
	if( event.value > 0 )
	{
		if(     event.value == STA_KEY_DOWN)//按键按下
		{
			keyrepateCnt = 0;
			printf("KEY DOWN:code:%d,val:%d\n", event.code,event.value);
		}
		else if(event.value == STA_KEY_REPATE)//按键重复发送
		{
			++keyrepateCnt;
			if(keyrepateCnt>=KEY_REPATE_CNT_MAX)
			{
				keyrepateCnt = 0;
				if(!onceflag)//only do once
				{
					onceflag = 1;
					printf("KEY REPATE:code:%d,val:%d\n", event.code,event.value);
				}
			}
		}
	}
	else									//按键抬起
	{
		onceflag = 0;
		keyrepateCnt = 0;
		printf("KEY UP:code:%d,val:%d\n", event.code,event.value);
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值