python lirc keyup函数?

时间:2016-08-07 16:38:40

标签: python lirc

我使用lirc for python。这工作得很好,但我错过了一个功能:在我的测试中,只有一个代码被发送,当按下按钮时。现在,我想打印一个代码,同时按下键。换句话说,一个函数应该通过“key down”启动并通过“key up”停止。仅使用lirc.nextcode()不起作用,因为仅捕获了“关键字”事件。

那么,有什么技巧可以用python检测“关键”吗?

3 个答案:

答案 0 :(得分:1)

lirc中没有这样的功能。想一想这样:来自遥控器的红外信号是否接收,没有关键事件,甚至没有keydown事件。

您必须编写自己的密钥和密钥事件代码。 看看你可以制作配置文件的方式,特别是有关延迟的部分:http://www.lirc.org/html/configure.html 以这样的方式配置,即每秒发送许多事件。

然后,将lirc置于非阻塞模式(参见https://github.com/tompreston/python-lirc)。然后你可以循环遍历lirc.nextcode(),如果它没有返回任何事件或者为不同的键返回一个事件,你就有了你的密钥事件。

答案 1 :(得分:1)

实际上,lircd有--release选项可以生成合成释放事件,请参阅http://lirc.org/html/lircd.html

上的联机帮助页

还有lircd-uinput附加组件,它为lirc keypress事件提供内核。这些事件在/ dev / input设备上可用,包括重复和释放事件。请参阅http://lirc.org/html/lircd-uinput.html上的lircd-uinput联机帮助页。

答案 2 :(得分:0)

您可以在这里查看我的答案: LIRC - How to use as keyboard command?

基本上,您可以编辑lircd-uinput.service为您添加发布事件。也许可以通过编程方式添加发布事件,但是我不知道该怎么做。拥有该服务,它的响应速度非常快,并且对我的应用程序很有效。

sudo nano /lib/systemd/system/lircd-uinput.service

####find this line####
ExecStart=/usr/sbin/lircd-uinput 

####change to#########
ExecStart=/usr/sbin/lircd-uinput --add-release-events

#then reload/restart all the lircd services...