[英]Keyboard input over SSH to the raspberry pi3 with pynput function in python
我正在尝试使用 raspberry pi 3 和笔记本电脑上的 SSH 来控制小型汽车玩具。
我面临的挑战是,当我直接连接到 RPi(鼠标、键盘和显示器插入 RPI)时,一切正常,但是当我通过 SSH 连接连接到 RPi 时,这就是我所看到的输出: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()
我通过 SSH 连接到 RPI 的方式
ssh pi@(RPI_IP_ADDRESS)
上面一堆文本的错误:
Xlib.error.DisplayNameError: Bad display name ""
碰巧 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)
我最近遇到了类似的问题,我可以找到解决方案。
要通过 ssh 进行上述工作,需要打开 /etc/ssh/sshd_config 并取消注释以下行(如果它们被注释):
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
然后在远程 RPI 类型echo $DISPLAY
上。 结果应该是这样的:
localhost:10.0
运行/调试脚本时,应设置环境变量 DISPLAY=result_of_echo_$DISPLAY
Ps 不要忘记使用 X 服务器通过 ssh 连接 -> ssh user@address -X
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.