Как отправить нажатие клавиши на терминал в Python3?
Я работаю над сценарием Python, чтобы использовать мой старый телефон в качестве устройства ввода для веб-радио. Номеронабиратель подключается через GPIO к Raspberry Pi3 и запускает mplayer для воспроизведения станции, когда я набираю "1". Когда я запускаю терминал формы скрипта (по ssh), он работает нормально: я получаю всевозможную информацию о канале, воспроизводимых дорожках и т. Д. Кроме того, когда я нажимаю "9" или "0" на клавиатуре, громкость увеличивается и вниз.
Следующее, что я хочу сделать, это управлять громкостью, набирая "2" (увеличение громкости) или "3" (уменьшение громкости) из скрипта (!).
Я пробовал несколько библиотек, таких как xdotools и т. Д., Но все они ожидают отображения, я думаю. Пока что ничего не работает.
Это вообще возможно? У кого-нибудь есть указатели или решения? Я был бы очень благодарен, эта вещь стоила мне весь день, и я не продвинулся немного.
Это сценарий до сих пор:
#!/usr/bin/env python3
import RPi.GPIO as GPIO
from time import sleep
import subprocess
#GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(15, GPIO.IN, pull_up_down=GPIO.PUD_UP)
c=0
last = 1
def count(pin):
global c
c = c + 1
def play_radio(dial):
if dial == 1:
subprocess.call("mplayer -nocache -afm ffmpeg http://playerservices.streamtheworld.com/api/livestream-redirect/SLAM_MP3.mp3",shell=True)
if dial == 2:
#HERE'S WHERE THE VOLUME MUST GO UP BY KEYPRESS '0'
if dial == 3:
#HERE'S WHERE THE VOLUME MUST GO DOWN BY KEYPRESS '9'
GPIO.add_event_detect(15, GPIO.BOTH)
while True:
try:
if GPIO.event_detected(15):
current = GPIO.input(15)
if(last != current):
if(current == 0):
GPIO.add_event_detect(18, GPIO.BOTH, callback=count, bouncetime=10)
else:
GPIO.remove_event_detect(18)
number = int((c-1)/2)
print(number)
play_radio(number)
c = 0
last = GPIO.input(15)
except KeyboardInterrupt:
break
sleep(0.3)