问题标签 [keyrelease]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
55 浏览

python - 树莓派 Python 按键释放检测问题

我正在尝试使用此代码(Python 3.7)获取按下哪个键,按下哪个键,释放哪个键以及何时释放它;

当我在 Raspberry Pi 上运行此代码并按下“r”键近一秒钟时,我得到了这个结果;

在此处输入图像描述

当我在 Windows 上运行此代码并按下“w”键近一秒钟时,我得到了这个结果;

在此处输入图像描述

无论按下多长时间,通常我都需要获取按下哪个键,按下一次的信息以及释放哪个键以及释放一次的信息。

但是正如您在这些图片中看到的那样,在 Windows 操作系统上,按键事件发生了多次,但释放事件仅发生了一次(更好的情况是,我无论如何都可以控制它以运行我的其他控制脚本)。

但是在 Raspberry Pi(Linux raspberrypi 5.10.63-v7+ #1488 SMP Thu Nov 18 16:14:44 GMT 2021 armv7l GNU/Linux)上,按键按下和释放事件接连发生多次,尽管您的手指仍然在按键上. 在这种情况下,我无法控制我的其他脚本,因为系统检测到该键被连续按下和释放。

我是先尝试使用 Python 原生库和命令,所以没有尝试其他键盘控制库。它必须以某种方式工作,它不能像这样有问题。

我错过了什么?

--------- 7 小时后 ------------

我发现 Raspberry Pi 上的这个问题与 VNC 连接有关。当您将键盘直接连接到 Raspberry Pi 时,它会像 Windows 一样做出反应,因此不会出现任何问题。但是当您使用 VNC 并远程连接到 Raspberr Pi 时,键盘事件的工作方式会有所不同。

我也尝试了 pynput 库,它在 VNC 上的工作方式相同,所以问题没有解决。

现在,我需要找到一种适用于 VNC 远程连接的好方法(VNC 配置来解决问题)或库。

-------- 1 小时后 ------------

直接把你的键盘连接到树莓派上,使用pynput库,按键和按键释放检测和Windows一样,可以说正常,但它应该测试更多时间,我尝试了1-5 sc。

如果你使用 Python 原生的 keypress 和 release 事件,在你按下 1 sc 之后它们仍然有同样的问题。到一个键,它会检测到一次按下和一次释放 :( 尚未解决。

---------- 1天后--------我找到了解决方法。我保留最后一次密钥释放事件的时间,如果在约 200 毫秒后没有发生新的密钥释放事件,则表示该密钥已真正释放。现在我可以通过 VNC 在 Raspberry Pi 上正常控制我的脚本了。