amobbs.com 阿莫电子技术论坛

标题: 大家设计按键时,是按下时有效还是按下又松开后有效呢 [打印本页]

作者: ch2003_23    时间: 2009-8-6 09:28
标题: 大家设计按键时,是按下时有效还是按下又松开后有效呢
就是说按键发送是在按下时还是松开后呢?
作者: cqfeiyu    时间: 2009-8-6 09:31
模拟鼠标的方式,分别有几个事件,按下,短按,长按,弹起
作者: vgbird    时间: 2009-8-6 10:03
我一般常用的是按下又松开...其他方式偶尔用
作者: starli    时间: 2009-8-6 10:06
用状态机 先检底,再检高,

中间还不担误干别的
作者: shen1170    时间: 2009-8-6 10:15
当然是松开啦,按下有效的话一直按不是出错?
作者: cqfeiyu    时间: 2009-8-6 11:52
楼上搞笑,按你的逻辑,松开有效的话一直松不是出错?
作者: shiriusu    时间: 2009-8-6 13:17
1#“模拟鼠标的方式,分别有几个事件,按下,短按,长按,弹起”
就是这样。然后想用哪个就用哪个。
作者: watercat    时间: 2009-8-6 13:21
唤醒和复位键以电平触发,功能键以边沿触发
作者: our_avr    时间: 2009-8-6 15:48
其实按键处理的学问非常大,方法很多,不同的环境可能需要的触发方式不同,学好这个东西对今后的实际程序操作非常重要
作者: dsq2007001    时间: 2009-8-6 15:51
按下无效,松开有效,用户会认为按键有点失灵的感觉,
作者: calvinxxw    时间: 2009-8-6 15:54
楼主买马潮老师的书读一下吧,什么都清楚了.
作者: hzn1948    时间: 2009-8-6 15:57
与楼上同感,我不这样用
作者: jiangxingyuan    时间: 2009-8-6 16:26
按下有效,等待松开后再检下一次按键,怎样?
作者: zhenghaifeng    时间: 2009-8-6 16:36
按键普通有长按键和短按键。当一个按键既要做长按键又要做短按键时,长按键为按下有效,短按键为松开有效。
作者: hujh3116    时间: 2009-8-6 16:45
一般都是按下有效。电脑键盘用多了就习惯了
作者: AAVVRR    时间: 2009-8-6 22:31
简单用法是,检测按键=〉确认按下=〉取得键值=〉等待弹起
作者: D.lovers    时间: 2009-8-6 22:59
按下有效,然后要判断按键释放。用状态机做。
作者: Swordman    时间: 2009-8-6 23:07
一般按键功能的执行分为两种,1、按下后执行, 2、松开后执行,其他非主流按法无视。

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

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

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

大家继续讨论
作者: giantwjt88    时间: 2009-8-7 00:03
如果分长按和短按的话,我是这么处理的:
短按---松开后执行,且按下到松开的时间小于400ms
长按---如果按下去停顿800ms不放,认为是长按,开始执行。松开后则进入下一次按键判断,也就是一直按着的话算一次长按
作者: vincent.r    时间: 2009-8-7 08:41
按下有效。
作者: sunki_avr    时间: 2009-8-7 09:31
先不管按下或者放开,只检测IO口的变化情况,再作是按下还是放开判断。

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

记得同时记录当前的状态哦
作者: makesoft    时间: 2009-8-7 09:50
当然是按下有效了,松开有效或多或少让用户感觉莫名其妙。
作者: YourARM    时间: 2009-8-7 10:03
利用状态机

按下有效,而且等待松开

若长时间不松开,则判为连击
作者: likedev    时间: 2009-8-7 10:25
我客户要求按下,抬起都有效!
作者: asnail    时间: 2009-8-7 10:36
按下再抬起有效,这样可以做复合按键。
作者: hpdell    时间: 2010-8-31 12:11
期待!!!!
作者: gxy508    时间: 2010-8-31 12:20
mark
作者: SCREA    时间: 2022-7-22 10:51
hpdell 发表于 2010-8-31 12:11
期待!!!!
(引用自27楼)

。。。。。。您真是老手
作者: tclg    时间: 2022-7-22 10:57
当然是按下有效了,松开有效或多或少让用户感觉莫名其妙,你看看大品牌的仪器按键是咋样就知道了,还有汽车上的按键,还有键盘按键,所有这些都是按下就有效哦。按下再松开才有效的话,做不了长按效果,而且显得反应迟钝。
作者: 初音之恋    时间: 2022-7-22 11:28
明显是按下有效,用户体验的问题,按键功能太多没办法才会去判抬起, 正常操作按下去不生效抬起才判断是要多恶心有多恶心。。。
作者: hpdell    时间: 2022-7-26 08:53
tclg 发表于 2022-7-22 10:57
当然是按下有效了,松开有效或多或少让用户感觉莫名其妙,你看看大品牌的仪器按键是咋样就知道了,还有汽车 ...
(引用自30楼)

貌似解释的非常到位哟
作者: wudicgi    时间: 2022-7-26 11:12
好像只有鼠标点击是松开时才触发 Click 事件,其他地方 (比如键盘按键) 都是按下时触发

作者: wudicgi    时间: 2022-7-26 11:13
鼠标这么设计是不是可以理解为因为它还可以移动,按下后发现不对还能移开再松开,就不会触发了

作者: xxsea    时间: 2022-7-26 17:36
对于非常重要的功能涉如及人员生命安全的,可以选择松开后执行,例如核蛋发射、自爆等,反悔的话就一直按着吧。

作者: szxszx    时间: 2022-7-27 08:05
看应用,需要怎样的功能,就怎样处理。
作者: dog    时间: 2022-7-27 09:17
Press, Release, Double-Click, Triple-Click,... Hold.
作者: xuekcd    时间: 2022-7-27 09:44
短按,长按,双连击,三连击,莫尔斯……都做出来,就好了?
作者: huangxiaolpbany    时间: 2022-7-28 08:58
状态机,可以检测按下,松开,还可以设置按的时间越长,数字跳的越快,比如一开始+1,后面改为+3,+10。消抖什么都好处理。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4