Key

  key模块对外提供libKey.so动态库,key模块对按键检测操作进行了封装,用户可以给key模块传入一个Gpio对象,key模块会负责监听这个gpio的状态,当按键被触发短按或者长按的时候,会产生一个相应的回调给到用户

Key使用示例
#include "EmxModules.hpp"
using namespace Emx;
int main() {
EuvLoop loop;
Gpio *keyGpio;
Key *key; // 定义一个key的监听句柄
loop.Init("ListenEvent", [&]() {
// 销毁各种监听
key->Destroy();
delete key;
delete keyGpio;
});
// 定义一个key的gpio其中的num是sys/class/gpio/中的gpio号
// 创建key,可以给这个key命名一下,传入绑定的loop,传入需要监听的key,传入长按的判断依据时长,按下超过3秒触发长按
key = new Key("DemoKeyTest", loop, keyGpio, 3000);
// 注册key的监听回调,当按键被短按或者长按的时候触发此回调
key->Create([](const char *name, Key::EventE e){
emxlogi("Key[%s] pressed\n", name);
if (e == Key::EventE::Click) // 短按触发
emxlogi("key Click triggered\n");
else if (e == Key::EventE::LongPress) // 长按触发
emxlogi("key LongPress triggered\n");
});
loop.Start();
printf("input 'q' to exit\n");
while ('q' != getchar());
loop.StopAndDeInit();
printf("exit success\n");
return 0;
}
@ Disable
失能无效
EventE
Definition: Key.hpp:19
Definition: EmxGpio.hpp:10