我正在使用 LIRCd 使用正确的配置文件来捕获我在遥控器上按下的键。
根据文档,我必须等待阻塞函数lirc_nextcode()
返回,然后我得到一个很好的解码行,如下所示:
0000000080bf4bb4 00 CURSOR_DOWN myremote
第一个数字是键值,接下来是该键被按下的重复次数(这里为 0,因为我只是按下并释放它),然后是键名和我的遥控器的名称。
无论如何,我想做的是检测遥控器的钥匙。
如果我按下一个按钮一段时间,这就是我得到的(每 200 毫秒换行一次):
0000000080bf4bb4 00 CURSOR_DOWN myremote
0000000080bf4bb4 01 CURSOR_DOWN myremote
0000000080bf4bb4 02 CURSOR_DOWN myremote
0000000080bf4bb4 03 CURSOR_DOWN myremote
0000000080bf4bb4 04 CURSOR_DOWN myremote
0000000080bf4bb4 05 CURSOR_DOWN myremote
0000000080bf4bb4 06 CURSOR_DOWN myremote
0000000080bf4bb4 07 CURSOR_DOWN myremote
0000000080bf4bb4 08 CURSOR_DOWN myremote
0000000080bf4bb4 09 CURSOR_DOWN myremote
0000000080bf4bb4 0a CURSOR_DOWN myremote
// I let go for 1s and press it again:
0000000080bf4bb4 00 CURSOR_DOWN myremote
因此,每当我长按一个键时,第二个数字就会增加,但一旦我松开它并再次按下它,它就会重置为 0。
我想要的是能够检测到重复停止的时刻。
现在,我可以看到如何实现密钥检测:如果lirc_nextcode()
在一定时间后没有破解,我可以认为密钥已被释放。
我要问的是:是否有另一种(更合适的)方法可以做到这一点?
通过配置 LIRCd 可能吗?
或者,如果除了使用计时器之外没有其他方法可以做到这一点,那么最好的实现是什么?确实,lirc_getcode()
是阻塞的,所以每当计时器崩溃时,我都需要它返回!
编辑:顺便说一句,没有lirc
或lircd
标签,会很高兴!