Ввод с клавиатуры через SSH в Raspberry Pi3 с функцией Pynput в Python - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь контролировать игрушечную машинку с помощью Rasberry Pi 3 SSH с моего ноутбука.

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я подключен напрямую к RPi (мышь, клавиатура и монитор подключены к RPI), все работает хорошо, но когда я подключаюсь к RPi через соединение SSH, эточто я вижу в качестве вывода: Xlib.error.DisplayNameError: неверное отображаемое имя ""

Метод, который я использую для подключения к моему RPi: "ssh pi @"

посоветуйте мне, что делать дальше?

Пример кода, который я использую, показан ниже:

Спасибо, Джонни, 1984

    from pynput import keyboard
    from pynput.keyboard import Key, Listener

    def on_press(key):
        # DO SOMETHING

    def on_release(key):
        # DO SOMETHING

    with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()

способ подключения к RPIover SSH

ssh pi@(RPI_IP_ADDRESS)

Ошибка с текстом выше:

Xlib.error.DisplayNameError: Bad display name ""

1 Ответ

0 голосов
/ 18 июля 2019

Бывает, что для pynput требуется X и некоторые другие настройки, перечисленные в их документации.В итоге я использовал пакет клавиатуры https://pypi.org/project/keyboard/ вместо pynput.keyboard.

https://unix.stackexchange.com/questions/427345/keyboard-monitoring-without-display

Я немного изменил его решение, чтобы можно было выйти из режима прослушивания при нажатии клавиши выхода.Примерно как то так:

import keyboard
import time
#declaring it global so that it can be modified from function
global releaseListening
keepListening = True


def key_press(key):
  print(key.name)
  #if escape is pressed make listening false and exit 
  if key.name == "esc"
    keepListening = False

keyboard.on_press(key_press)

while keepListening :
  time.sleep(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...