李忠 发表于 2021-11-4 12:07:02

软按键怎么判断是抬起还是按下

我用官方自带的keypad应用测试,发现,我只是按下按钮(没有抬起)界面上显示对应按钮变蓝色,但马上恢复成了正常的按钮颜色.也就是说,/dev/input/keypad设备,在按下按键时发送了按下和抬起两个事件!

ljb2019001 发表于 2021-11-5 10:10:14

在keypad的源码中,如下语句实现判断按键的状态
   for (unsigned i = 0; i < sizeof(buffer) / sizeof(buffer); i++)
      {
             bool oldState = m_oldButtonsState;
             bool isOn = (buffer & 0x01);

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

zhangyuhu 发表于 2021-11-5 12:09:50

水贴

水水水水水水水水水
页: [1]
查看完整版本: 软按键怎么判断是抬起还是按下