ch2003_23 发表于 2009-8-6 09:28:51

大家设计按键时,是按下时有效还是按下又松开后有效呢

就是说按键发送是在按下时还是松开后呢?

cqfeiyu 发表于 2009-8-6 09:31:32

模拟鼠标的方式,分别有几个事件,按下,短按,长按,弹起

vgbird 发表于 2009-8-6 10:03:06

我一般常用的是按下又松开...其他方式偶尔用

starli 发表于 2009-8-6 10:06:24

用状态机 先检底,再检高,

中间还不担误干别的

shen1170 发表于 2009-8-6 10:15:33

当然是松开啦,按下有效的话一直按不是出错?

cqfeiyu 发表于 2009-8-6 11:52:13

楼上搞笑,按你的逻辑,松开有效的话一直松不是出错?

shiriusu 发表于 2009-8-6 13:17:50

1#“模拟鼠标的方式,分别有几个事件,按下,短按,长按,弹起”
就是这样。然后想用哪个就用哪个。

watercat 发表于 2009-8-6 13:21:19

唤醒和复位键以电平触发,功能键以边沿触发

our_avr 发表于 2009-8-6 15:48:16

其实按键处理的学问非常大,方法很多,不同的环境可能需要的触发方式不同,学好这个东西对今后的实际程序操作非常重要

dsq2007001 发表于 2009-8-6 15:51:18

按下无效,松开有效,用户会认为按键有点失灵的感觉,

calvinxxw 发表于 2009-8-6 15:54:30

楼主买马潮老师的书读一下吧,什么都清楚了.

hzn1948 发表于 2009-8-6 15:57:32

与楼上同感,我不这样用

jiangxingyuan 发表于 2009-8-6 16:26:23

按下有效,等待松开后再检下一次按键,怎样?

zhenghaifeng 发表于 2009-8-6 16:36:45

按键普通有长按键和短按键。当一个按键既要做长按键又要做短按键时,长按键为按下有效,短按键为松开有效。

hujh3116 发表于 2009-8-6 16:45:36

一般都是按下有效。电脑键盘用多了就习惯了

AAVVRR 发表于 2009-8-6 22:31:33

简单用法是,检测按键=〉确认按下=〉取得键值=〉等待弹起

D.lovers 发表于 2009-8-6 22:59:57

按下有效,然后要判断按键释放。用状态机做。

Swordman 发表于 2009-8-6 23:07:51

一般按键功能的执行分为两种,1、按下后执行, 2、松开后执行,其他非主流按法无视。

如果某个键的功能没有分长按和短按,绝大多数键是这样的,那么推荐使用方法1,因为让人感觉响应灵敏

如果某个键的功能对长按和短按都需要响应,且功能不一样时(执行的内容可能一样,也可能不一样,例如,UP键长按实现连续增加数值和短按一下增加1个数值的功能是一样的,都是增加数值。也可以实现短按执行功能A,长按执行功能B)

这个时候使用松开后再执行就比较好一点,因为如果采用“按下后执行”,则每次按下这个键都会将短按的功能执行一次,再判断是否满足长按的条件,这是某些时候不愿意看到的。如果一使用“松开后执行”,则可以在松开时再判断是长按还是短按,只执行一次需要的功能。

大家继续讨论

giantwjt88 发表于 2009-8-7 00:03:16

如果分长按和短按的话,我是这么处理的:
短按---松开后执行,且按下到松开的时间小于400ms
长按---如果按下去停顿800ms不放,认为是长按,开始执行。松开后则进入下一次按键判断,也就是一直按着的话算一次长按

vincent.r 发表于 2009-8-7 08:41:56

按下有效。

sunki_avr 发表于 2009-8-7 09:31:33

先不管按下或者放开,只检测IO口的变化情况,再作是按下还是放开判断。

比如:先前记录当关的状态,按下为1,放开为0。对对应的IO口扫描,如果由0--》1或者 1--》0,则判定IO口有变化。然后做消抖。最后:
1--》0    为按键放开
0--》1    为按键按下

记得同时记录当前的状态哦

makesoft 发表于 2009-8-7 09:50:51

当然是按下有效了,松开有效或多或少让用户感觉莫名其妙。

YourARM 发表于 2009-8-7 10:03:03

利用状态机

按下有效,而且等待松开

若长时间不松开,则判为连击

likedev 发表于 2009-8-7 10:25:19

我客户要求按下,抬起都有效!

asnail 发表于 2009-8-7 10:36:36

按下再抬起有效,这样可以做复合按键。

hpdell 发表于 2010-8-31 12:11:35

期待!!!!

gxy508 发表于 2010-8-31 12:20:48

mark

SCREA 发表于 2022-7-22 10:51:19

hpdell 发表于 2010-8-31 12:11
期待!!!!
(引用自27楼)

。。。。。。您真是老手

tclg 发表于 2022-7-22 10:57:49

当然是按下有效了,松开有效或多或少让用户感觉莫名其妙,你看看大品牌的仪器按键是咋样就知道了,还有汽车上的按键,还有键盘按键,所有这些都是按下就有效哦。按下再松开才有效的话,做不了长按效果,而且显得反应迟钝。

初音之恋 发表于 2022-7-22 11:28:29

明显是按下有效,用户体验的问题,按键功能太多没办法才会去判抬起, 正常操作按下去不生效抬起才判断是要多恶心有多恶心。。。

hpdell 发表于 2022-7-26 08:53:29

tclg 发表于 2022-7-22 10:57
当然是按下有效了,松开有效或多或少让用户感觉莫名其妙,你看看大品牌的仪器按键是咋样就知道了,还有汽车 ...
(引用自30楼)

貌似解释的非常到位哟 {:smile:}

wudicgi 发表于 2022-7-26 11:12:19

好像只有鼠标点击是松开时才触发 Click 事件,其他地方 (比如键盘按键) 都是按下时触发

wudicgi 发表于 2022-7-26 11:13:35

鼠标这么设计是不是可以理解为因为它还可以移动,按下后发现不对还能移开再松开,就不会触发了

xxsea 发表于 2022-7-26 17:36:14

对于非常重要的功能涉如及人员生命安全的,可以选择松开后执行,例如核蛋发射、自爆等,反悔的话就一直按着吧。

szxszx 发表于 2022-7-27 08:05:40

看应用,需要怎样的功能,就怎样处理。

dog 发表于 2022-7-27 09:17:53

Press, Release, Double-Click, Triple-Click,... Hold.

xuekcd 发表于 2022-7-27 09:44:18

短按,长按,双连击,三连击,莫尔斯……都做出来,就好了?

huangxiaolpbany 发表于 2022-7-28 08:58:13

状态机,可以检测按下,松开,还可以设置按的时间越长,数字跳的越快,比如一开始+1,后面改为+3,+10。消抖什么都好处理。
页: [1]
查看完整版本: 大家设计按键时,是按下时有效还是按下又松开后有效呢