1

我对 Debian 中的 LIRC 有疑问。我现在搜索了几天,找不到任何解决我的问题的方法。

是否可以使用 IR-Remote 发送键盘指令?

我将解释:我在 shell 脚本中使用“读取”功能。所以,即我按“T”键发生了一些事情。现在我想通过 LIRC 发送相同的“T”,以便 shell 脚本也可以与遥控器一起使用。

另一种方法是,不是在 shell 脚本中,而是在我的 C 程序源中。在这里我使用这样的代码:

case 't': {

所以如果按下键盘上的按钮“t”,就会发生一些事情。

我希望有人可以帮助我使用 LIRC,因为我无法理解 LIRC 网页上的描述。每个示例都基于它们已经支持 lirc 命令的程序。

非常感谢你问候托马斯

4

2 回答 2

1

假设您知道如何使用 lircd、irexec 并通过 /etc/lircd.conf 和 /etc/lircrc 对其进行配置,您的 /etc/lircrc 中可能会有这样的内容:

begin
        remote = name-of-your-remote
        prog   = irexec
        button = BTN_1
        config = echo T >/dev/xxx
end

BTN_1 应在您的 /etc/lircd.conf 中配置以匹配远程 IR 键盘上的“T”键。

xxx 是你的活动 shell 使用的 TTY 设备,例如我用 /dev/pts/0 尝试过

如果您需要从自定义程序的标准输入访问它,您可以使用以下配置:

begin
        remote = name-of-your-remote
        prog   = irexec
        button = BTN_1
        config = echo T | your-prog
end
于 2013-12-26T00:10:38.490 回答
0

我发现 lircd-uinput.service 用于将键盘事件发送到 /dev/uinput,基本上是控制台。如果您想使用遥控器将键盘按键发送到自定义菜单或控制台上运行的程序,这是一项方便的服务。该服务的问题在于它会不断重复密钥,直到收到发布代码。

“重复”行为是设计使然,我猜是因为大多数编写良好的应用程序可能会在按下某个键时发送 KEY_DOWN 之类的东西,然后在释放它时发送 KEY_UP 之类的东西。但是我的简单应用程序不够智能,无法发送发布代码,所以我找到了一个简单的解决按键重复问题的方法,并且可以使用该服务使用 IR 遥控器来伪造键盘。

要使 lircd-uinput.service 自动注册 key-release 事件,并停止重复 key,编辑服务并添加 --add-release-events 选项。

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

重新启动服务并确保它们处于活动状态。

sudo systemctl force-reload lircd
sudo systemctl force-reload lircd-uinput
sudo systemctl status lircd
sudo systemctl status lircd-uinput

#I had to start lircd-uinput, since force-reload didn't: 
sudo systemctl start lircd-uinput

现在服务只输入一个按键,每次按下远程按钮,并自动发送 KEY_UP 命令。如果您知道如何在应用程序中发送 KEY_UP 命令,那可能比这个解决方案效果更好。

要找出与键盘键对应的键命令,您可以通过运行列出内核支持的所有可能的键盘事件:

不记录 -l

例如,如果您希望遥控器按控制台上的向下箭头键,则对应的遥控器键为“KEY_DOWN”。然后您的远程文件 (/etc/lirc/lircd.conf.d/myremote.conf) 将包含该密钥名称。

begin remote

  name  myremote
 #<sniped...remote stuff here...>
      begin codes
 #    <sniped other codes>

          KEY_DOWN                 0x00FF

 #    <sniped other codes>
      end codes

end remote

现在我们已经停止重复键,这是一项非常有用的服务。它比使用 irexec 向控制台伪造键盘键响应更快,并且您不需要 irexec.lircrc 中的任何配置即可将击键发送到控制台。您仍然可以将 irexec 用于其他与键盘无关的命令。

于 2020-10-24T16:32:39.973 回答