Git Product home page Git Product logo

flexiblebutton's People

Contributors

happyfacade avatar liuduanfei avatar murphyzhao avatar wzd5230 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flexiblebutton's Issues

中断方式检测按键

我用的是STM32F103芯片裸机编程,目前在使用该库进行中断方式检测按键出现了问题,请求大家的帮助。问题如下:

  • 我已成功地配置了按键的外部中断,并且每次按下按键后会进入中断处理函数

  • 我试过在中断处理函数里释放一个信号量,在main函数的while循环里检测到该信号量后调用flex_button_scan()函数,能够正常识别 “FLEX_BTN_PRESS_CLICK” 和点击 “FLEX_BTN_PRESS_DOUBLE_CLICK” 。

  • 但是由于按一下按键才会调用扫描函数,当我试图触发 “FLEX_BTN_PRESS_SHORT_START” 和 “FLEX_BTN_PRESS_LONG_START” 事件时,我长按按键,这只触发一次中断,只调用一次flex_button_scan()函数,只产生了 “FLEX_BTN_PRESS_DOWN” 事件。

  • 请问有什么办法实现么?

注册按键数量问题

if (!button || (button_cnt > sizeof(btn_type_t) * 8))
{
return -1;
}
看到这里,似乎有数量限制,只支持32个按键,麻烦解答一下,谢谢。

有考虑过 flex_button_register 和 button_scan 线程安全

按照DEMO的时序是 在 init初始化 flex_button_register 注册好按键,然后开启线程button_scan 进行扫描,这个肯定没问题


如果在其它应用调用 flex_button_register , 会和 button_scan 有线程安全问题?,导致加入按键链表有的 按键 结构体数据可能不完整,被button_scan 打断,导致有问题

加下这两个函数互斥应该完美点。。。

逻辑错误

flex_button_register()中第54行条件判断中,应该是||而不是&&

关于按键ID

最新版好像回调事件里的按键id和注册时的顺序是反的?

同时按住四个按键出现卡顿并无法正常回调?

目前需要同时长按四个按键来处理事件,发现当同时按住四个按键时,无法正常回调common_btn_evt_cb并出现卡顿现象,是在common_btn_evt_cb中通过如下接口来实现的
if ((flex_button_event_read(&user_button[USER_BUTTON_0]) == FLEX_BTN_PRESS_LONG_HOLD) &&
(flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_LONG_HOLD) &&
(flex_button_event_read(&user_button[USER_BUTTON_2]) == FLEX_BTN_PRESS_LONG_HOLD) &&
(flex_button_event_read(&user_button[USER_BUTTON_3]) == FLEX_BTN_PRESS_LONG_HOLD))
{
//
}

长按事件的组合按键问题

两个按键按下可能会存在点时间差,所以获取两个组合的长按事件 会先触发某个按键的长按事件 再触发组合按键长按事件,再触发剩下一个长按事件。
代码如下:
image
结果如下:
image

按下事件<FLEX_BTN_PRESS_DOWN>的防抖

@murphyzhao 你好,有一个疑问想请教下,关于按下事件<FLEX_BTN_PRESS_DOWN>的检测部分我看了好像没有防抖的设计,从代码实现上,只要检测按键按下就立即返回事件,是否应该检测到按键在按下状态持续一段时间后再报按下事件?

按键处理数量限制

static unsigned char trg = 0;
static unsigned char cont = 0;
static uint8_t keydata = 0xFF;
static uint8_t key_rst_data = 0xFF;
static uint8_t button_cnt = 0;

目前这些标记量都是uint8_t类型的,也就是最多支持8个按键,超过8个就会有问题,里面一些局部变量的类型也需要修改

非常不合理的设计:短按事件和长按事件相关联

假设一个按键,我既要使用其短按事件,又要使用其长按事件,则应该短按时只触发短按事件,长按时只触发长按事件。然而目前的设计是:长按过程中会触发一次短按事件,我觉得这是非常不合理的!!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.