MultiButton icon indicating copy to clipboard operation
MultiButton copied to clipboard

bug 注意!按键多次抖动导致 长按不调用解决方法

Open logicDance-mcu opened this issue 5 years ago • 3 comments

在multi button .c文件

第132 行!!!!

添加 else { handle->state = 0; } 即可解决,

不然会导致长按不生效 !!!!

logicDance-mcu avatar Sep 12 '20 06:09 logicDance-mcu

else if(handle->ticks > SHORT_TICKS){ handle->state = 0; }

添加成这个

logicDance-mcu avatar Sep 12 '20 06:09 logicDance-mcu

在multi button .c文件

第132 行!!!!

添加 else { handle->state = 0; } 即可解决,

不然会导致长按不生效 !!!!

添加成 else if(handle->ticks > SHORT_TICKS){ handle->state = 0; }

logicDance-mcu avatar Sep 12 '20 06:09 logicDance-mcu

@SSEHX你说的这种情况作者确实没有考虑到,按照代码里的思路,在连续按下、抬起的过程中突然保持按下的动作不变,此时应该切换为状态5也就是长按状态,但是代码卡死在了状态3,因为它必须等待按键抬起。 是不是应该改为下面这种代码呢?当按键按下的时间超过 SHORT_TICKS 个时间后自动切换为状态0,感觉切换成状态1也可以,之后就能够自动处理长按事件了。

	case 3:
		if(handle->button_level != handle->active_level) { //released press up
			handle->event = (uint8_t)PRESS_UP;
			EVENT_CB(PRESS_UP);
			if(handle->ticks < SHORT_TICKS) {
				handle->ticks = 0;
				handle->state = 2; //repeat press
			} else {
				handle->state = 0;
			}
		} else if(handle->ticks > SHORT_TICKS) {
                      handle->state = 0;
                }
		break;

Jackistang avatar Sep 28 '20 07:09 Jackistang