搜索
bottom↓
回复: 38

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

[复制链接]

出0入0汤圆

发表于 2009-8-6 09:28:51 | 显示全部楼层 |阅读模式
就是说按键发送是在按下时还是松开后呢?

出0入0汤圆

发表于 2009-8-6 09:31:32 | 显示全部楼层
模拟鼠标的方式,分别有几个事件,按下,短按,长按,弹起

出0入0汤圆

发表于 2009-8-6 10:03:06 | 显示全部楼层
我一般常用的是按下又松开...其他方式偶尔用

出0入0汤圆

发表于 2009-8-6 10:06:24 | 显示全部楼层
用状态机 先检底,再检高,

中间还不担误干别的

出0入0汤圆

发表于 2009-8-6 10:15:33 | 显示全部楼层
当然是松开啦,按下有效的话一直按不是出错?

出0入0汤圆

发表于 2009-8-6 11:52:13 | 显示全部楼层
楼上搞笑,按你的逻辑,松开有效的话一直松不是出错?

出0入0汤圆

发表于 2009-8-6 13:17:50 | 显示全部楼层
1#“模拟鼠标的方式,分别有几个事件,按下,短按,长按,弹起”
就是这样。然后想用哪个就用哪个。

出0入0汤圆

发表于 2009-8-6 13:21:19 | 显示全部楼层
唤醒和复位键以电平触发,功能键以边沿触发

出0入0汤圆

发表于 2009-8-6 15:48:16 | 显示全部楼层
其实按键处理的学问非常大,方法很多,不同的环境可能需要的触发方式不同,学好这个东西对今后的实际程序操作非常重要

出0入0汤圆

发表于 2009-8-6 15:51:18 | 显示全部楼层
按下无效,松开有效,用户会认为按键有点失灵的感觉,

出0入0汤圆

发表于 2009-8-6 15:54:30 | 显示全部楼层
楼主买马潮老师的书读一下吧,什么都清楚了.

出0入0汤圆

发表于 2009-8-6 15:57:32 | 显示全部楼层
与楼上同感,我不这样用

出0入0汤圆

发表于 2009-8-6 16:26:23 | 显示全部楼层
按下有效,等待松开后再检下一次按键,怎样?

出0入0汤圆

发表于 2009-8-6 16:36:45 | 显示全部楼层
按键普通有长按键和短按键。当一个按键既要做长按键又要做短按键时,长按键为按下有效,短按键为松开有效。

出0入0汤圆

发表于 2009-8-6 16:45:36 | 显示全部楼层
一般都是按下有效。电脑键盘用多了就习惯了

出0入0汤圆

发表于 2009-8-6 22:31:33 | 显示全部楼层
简单用法是,检测按键=〉确认按下=〉取得键值=〉等待弹起

出0入4汤圆

发表于 2009-8-6 22:59:57 | 显示全部楼层
按下有效,然后要判断按键释放。用状态机做。

出0入0汤圆

发表于 2009-8-6 23:07:51 | 显示全部楼层
一般按键功能的执行分为两种,1、按下后执行, 2、松开后执行,其他非主流按法无视。

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

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

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

大家继续讨论

出0入0汤圆

发表于 2009-8-7 00:03:16 | 显示全部楼层
如果分长按和短按的话,我是这么处理的:
短按---松开后执行,且按下到松开的时间小于400ms
长按---如果按下去停顿800ms不放,认为是长按,开始执行。松开后则进入下一次按键判断,也就是一直按着的话算一次长按

出0入0汤圆

发表于 2009-8-7 08:41:56 | 显示全部楼层
按下有效。

出0入0汤圆

发表于 2009-8-7 09:31:33 | 显示全部楼层
先不管按下或者放开,只检测IO口的变化情况,再作是按下还是放开判断。

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

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

出10入120汤圆

发表于 2009-8-7 09:50:51 | 显示全部楼层
当然是按下有效了,松开有效或多或少让用户感觉莫名其妙。

出0入0汤圆

发表于 2009-8-7 10:03:03 | 显示全部楼层
利用状态机

按下有效,而且等待松开

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

出0入0汤圆

发表于 2009-8-7 10:25:19 | 显示全部楼层
我客户要求按下,抬起都有效!

出0入0汤圆

发表于 2009-8-7 10:36:36 | 显示全部楼层
按下再抬起有效,这样可以做复合按键。

出0入0汤圆

发表于 2010-8-31 12:11:35 | 显示全部楼层
期待!!!!

出0入0汤圆

发表于 2010-8-31 12:20:48 | 显示全部楼层
mark

出0入4汤圆

发表于 2022-7-22 10:51:19 | 显示全部楼层
hpdell 发表于 2010-8-31 12:11
期待!!!!
(引用自27楼)

。。。。。。您真是老手

出0入0汤圆

发表于 2022-7-22 10:57:49 | 显示全部楼层
当然是按下有效了,松开有效或多或少让用户感觉莫名其妙,你看看大品牌的仪器按键是咋样就知道了,还有汽车上的按键,还有键盘按键,所有这些都是按下就有效哦。按下再松开才有效的话,做不了长按效果,而且显得反应迟钝。

出0入16汤圆

发表于 2022-7-22 11:28:29 | 显示全部楼层
明显是按下有效,用户体验的问题,按键功能太多没办法才会去判抬起, 正常操作按下去不生效抬起才判断是要多恶心有多恶心。。。

出0入0汤圆

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

貌似解释的非常到位哟

出0入0汤圆

发表于 2022-7-26 11:12:19 | 显示全部楼层
好像只有鼠标点击是松开时才触发 Click 事件,其他地方 (比如键盘按键) 都是按下时触发

出0入0汤圆

发表于 2022-7-26 11:13:35 | 显示全部楼层
鼠标这么设计是不是可以理解为因为它还可以移动,按下后发现不对还能移开再松开,就不会触发了

出0入0汤圆

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

出10入10汤圆

发表于 2022-7-27 08:05:40 | 显示全部楼层
看应用,需要怎样的功能,就怎样处理。

出0入0汤圆

发表于 2022-7-27 09:17:53 | 显示全部楼层
Press, Release, Double-Click, Triple-Click,... Hold.

出0入0汤圆

发表于 2022-7-27 09:44:18 来自手机 | 显示全部楼层
短按,长按,双连击,三连击,莫尔斯……都做出来,就好了😁

出0入0汤圆

发表于 2022-7-28 08:58:13 | 显示全部楼层
状态机,可以检测按下,松开,还可以设置按的时间越长,数字跳的越快,比如一开始+1,后面改为+3,+10。消抖什么都好处理。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 -- 东莞阿莫电子网站 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2023-1-31 17:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表