嵌入式爱好者

查看: 7272|回复: 2

[硬件咨询] 软按键怎么判断是抬起还是按下

[复制链接]

3

主题

4

帖子

14

积分

扫一扫,手机访问本帖
发表于 2021-11-4 12:07:02 | 显示全部楼层 |阅读模式
我用官方自带的keypad应用测试,发现,我只是按下按钮(没有抬起)界面上显示对应按钮变蓝色,但马上恢复成了正常的按钮颜色.也就是说,/dev/input/keypad设备,在按下按键时发送了按下和抬起两个事件!
回复

使用道具 举报

0

主题

236

帖子

752

积分

A40i/T3/T507通行证i.MX6Q通行证i.MX6UL通行证i.MX8MM通行证RK3568通行证RK3399通行证LS1028A通行证LS1012A通行证LS1043A\46A通行证TCU通行证FDU产品通行证FCU1401通行证FCU1301通行证FCU11xx通行证FCU1201通行证FCU2301/FCU2302通行证FCU2401通行证5G转接卡通行证AM5718通行证Hi3519A通信证AM335x通行证i.MX RT通行证XX18通行证AM62x资料下载

发表于 2021-11-5 10:10:14 | 显示全部楼层
在keypad的源码中,如下语句实现判断按键的状态
     for (unsigned i = 0; i < sizeof(buffer) / sizeof(buffer[0]); i++)
      {
             bool oldState = m_oldButtonsState[i];
             bool isOn = (buffer[i] & 0x01);

            if (oldState != isOn)
            {
               m_oldButtonsState[i] = isOn;
               update();  //this function will call paintEvent
            }
      }
然后根据m_oldButtonsState[i]来切换qt按钮的颜色,您可以看看这里,然后修改成自己需要的功能
或者修改一下按键驱动drivers/input/keyboard/gpio_keys.c,根据不同的状态返回不同的type,然后按照不同类型切换不同的状态
这个需要您调试一下,我们没有现成的方法
点评回复 支持 反对

使用道具 举报

1

主题

2

帖子

12

积分

发表于 2021-11-5 12:09:50 | 显示全部楼层

水贴

水水水水水水水水水
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-3-29 18:58

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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