树莓派3使用红外遥控器模拟鼠标和键盘

一、基础配置:
先将红外接收头连接和录制遥控器按键,确保能够正常使用。
1.修改配置

sudo nano /boot/config.txt
添加:
dtoverlay=lirc-rpi,gpio_out_pin=17,gpio_in_pin=18,gpio_in_pull=up

重启后查看/dev/lirc0是否存在
2.连接红外接收头: 注意是gpio18是第12针
3.安装软件:

sudo apt-get install lirc
注意:内核版本4.144.19的lirc好像还不同。

4.测试红外遥控器

sudo /etc/init.d/lirc stop
mode2 -d /dev/lirc0

5.录制遥控器

sudo /etc/init.d/lirc stop
irrecord -l  #记录想要的key
irrecord -d /dev/lirc0 ~/lircd.conf   #这步比较麻烦,刚开始要每个键都压一遍,生成2行,我搞了好几遍。

而且~/lircd.conf也没有生成,到时出现了,XXX.lircd.conf xxx就是输入的remote name
6.将XXX.lircd.conf文件复制到/etc/lirc/lircd.conf.d目录下

sudo cp ~/XXX.lircd.conf  /etc/lirc/lircd.conf.d/

7.测试,输入irw:回显示输入的按键–对应刚才的录制
问题:没有任何反应。解决方法最下面:

二、按键行为与特定程序进行关联
1.配置~/.lircrc文件把按键与需要出发的行为进行关联

begin
   prog = irexec
   button = KEY_UP
   config = sudo omxplayer ~/aiqingzhuanyi.mkv &  #设置成自己的程序
end
begin
   prog = irexec
   button = KEY_DOWN
   config = sudo killall omxplayer.bin
end

2.开启程序,等待按键触发

sudo /etc/init.d/lirc restart
irexec

3.当按up键时候打开程序,down键时候关闭

三、树莓派通过发送红外信号控制设备:
向aphero设备发送KEY_UP,没有发射头,没有测试

irsend LIST "" ""
irsend SEND_ONCE aphero KEY_UP
#没有测试

四.把红外遥控器模拟成鼠标模式
官方文档:http://lirc.org/html/configure.html#lircmd.conf
1.修改配置文件:

sudo nano /etc/lirc/lirc_options.conf
[lircmd]
uinput          = True   ##将False修改为True

根据官方文档:
lircmd - Translate infrared signals into mouse events.
output socket and converts them to mouse events. These events are made available either on the lircmd output socket (by default
/usr/var/run/lirc/lircmd) or, using the --uinput option, on a /dev/input device like /dev/input/event12 .
意思是:默认输出到socket,树莓派上可通过cat /var/run/lirc/lircm 按遥控器时候有乱码输出;添加–uinput选项后,作为/dev/input设备
根据官方文档还要设置Xorg.conf,树莓派没有这个文件,我没有设置;新建 /etc/udev/rules.d/55-uinput,删除好像也可以。
2.修改鼠标与前面设置的key建立映射

sudo nano /etc/lirc/lircmd.conf
PROTOCOL IntelliMouse
ACCELERATOR 1 30 10
MOVE_N * KEY_UP
MOVE_E * KEY_RIGHT
MOVE_S * KEY_DOWN
MOVE_W * KEY_LEFT
BUTTON1_CLICK * KEY_ENTER
BUTTON3_CLICK * KEY_BACK
BUTTON2_CLICK * KEY_MENU
#N E S W表示鼠标移动方向,1代表左键,2代表中间键,3代表右键

3.开启服务:

# systemd start lircmd.service
# systemd enable lircmd.service

四.把红外遥控器模拟成键盘模式:
1.测试:先用 lircd-uinput程序测试成功后,再设置为服务

sudo lircd-uinput 
    lircd-0.9.4c[21627]: Info: lircd-uinput:  Opening log, level: Info
    lircd-0.9.4c[21627]: Info: Reading data from /var/run/lirc/lircd, writing to /dev/uinput
    lircd-0.9.4c[21627]: Info: Using "_UP" as release suffix

3.ir-keytable程序测试:目前输入太快了,延时、重复参数还没有搞清楚。
注意:ir-keytable只有产生了/dev/input/event*文件后,才有输出。使用apt-get安装即可,这个程序不在lirc包中,好像是v4l-utils中。

ir-keytable -t -d /dev/input/event0 
    1582638176.865978: event type EV_SYN(0x00).
    1582638176.915959: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
    1582638176.915959: event type EV_SYN(0x00).
    1582638176.965979: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
    1582638176.965979: event type EV_SYN(0x00).
    1582638177.016006: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
    1582638177.016006: event type EV_SYN(0x00).
    1582638177.065964: event type EV_KEY(0x01) key_down: KEY_DOWN(0x006c)
    1582638177.065964: event type EV_SYN(0x00).

(3)开启服务:

sudo systemctl start lircd-uinput

目前,只是进行了初步测试,还没有深入配置,主要是看官方文档,仅做已备忘记录,有时间再测试吧。

------关于输入irw:没有任何反应---------------------------------------------------------------------
树莓派安装红外接收,irw无输出:https://www.hachina.io/dwqa-question/10554.html
also, i have faced a problem where everything seemed to work fine, but i didn’t get any output running irw command. in case someone’s stuck there: the problem is lircd.conf file which you’ve just generated. take a look at it – you probably will get two hex codes for each button, where the second one is always the same. simply delete this value from each line and everything should work now.
另外,我也遇到过这样一个问题:一切看起来都很好,但是我没有得到任何运行irw命令的输出。万一有人被困在那里:问题是您刚刚生成的lircd.conf文件。看看它-你可能会得到两个十六进制代码为每个按钮,其中第二个总是相同的。只需从每一行中删除这个值,现在一切都应该正常了
XXX.lircd.conf文件如下:删除每行的第二个十六进制的数,就可以使用irw输出了

begin remote

  name  aphero
  bits           32
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       9134  4555
  one           565  1694
  zero          565   579
  ptrail        564
  repeat       9130  2271
  gap          108958
  toggle_bit_mask 0x0
  frequency    38000

      begin codes
          KEY_UP                   0x00FF629D
          KEY_DOWN                 0x00FFA857
          KEY_LEFT                 0x00FF22DD
          KEY_RIGHT                0x00FFC23D
          KEY_ENTER                0x00FF02FD
          KEY_BACK                 0x00FFE01F
          KEY_MENU                 0x00FF906F
          KEY_KP0                  0x00FF6897
          KEY_KP1                  0x00FF30CF
          KEY_KP2                  0x00FF18E7
          KEY_KP3                  0x00FF7A85
          KEY_KP4                  0x00FF10EF
          KEY_KP5                  0x00FF38C7
          KEY_KP6                  0x00FF5AA5
          KEY_KP7                  0x00FF42BD
          KEY_KP8                  0x00FF4AB5
          KEY_KP9                  0x00FF52AD
      end codes

end remote

你可能感兴趣的:(树莓派)