Python 键盘库不将按键发送到外部程序

问题描述 投票:0回答:0

我正在使用 Raspberry Pi 构建一个媒体播放器。我当前的目标是配置一个被动红外运动探测器,在检测到运动时暂停音乐(这样当我在播放器面前挥手时就可以暂停和恢复音乐)。

我已连接运动检测器并配置为在检测到运动时拉低 GPIO 引脚 17。我正在使用基本的 Linux 终端音乐播放器

mplayer
,按下空格键就会暂停和恢复播放的内容。

现在,它不起作用。运动传感器上的 LED 指示灯表明它正在记录运动事件。之前的实验表明我正确地读取了 GPIO 17 上的事件。出于某种原因,

mplayer
没有将我的 python 脚本中的命令注册为按键。这是我现在的代码(我知道它不漂亮,我现在只是在修补):

import RPi.GPIO as GPIO
from time import sleep
import keyboard

SENSOR_PIN = 17
GPIO.setmode(GPIO.VCM)
GPIO.setup(SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def motion_detected_callback(channel):
    keyboard.send("space")

GPIO.add_event_detect(SENSOR_PIN, GPIO.RISING, callback=motion_detected_callback, bouncetime=2000)

try:
    while True:
        sleep(0.01)
except KeyboardInterrupt:
    GPIO.cleanup()

我已经尝试了所有看起来合适的

keyboard
库函数——
keyboard.write("space", delay=0)
keyboard.send("space")
keyboard.press("space")
也不起作用。 [编辑:这些都不适用于空格键的扫描码,例如
keyboard.send(39)
。]

我也尝试了几种调用脚本的方法。

sudo python3 pir_sensor_listener.py & mplayer music.mp3
sudo python3 pir_sensor_listener | mplayer music.mp3
都不起作用。

有什么建议吗?

python events triggers raspberry-pi keyboard
© www.soinside.com 2019 - 2024. All rights reserved.