当前位置: 首页 > news >正文

解决Pynput不能在Ubuntu22.04上正常使用问题

pynput 是一个 Python 库,它提供了一套简单的接口来控制和监控输入设备,包括鼠标和键盘。这个库允许开发者编写跨平台的代码来处理输入事件,无需担心底层操作系统的差异。

下面是pynput的测试程序:

 from pynput.keyboard import Key, Listener                                                                                                                  def on_press(key):try:print(f'{key.char} pressed.')except AttributeError:print(f'{key} pressed.')def on_release(key):try:print(f'{key.char} released.')except AttributeError:print(f'{key} released.')if key == Key.esc:# Stop listenerreturn Falsewith Listener(on_press=on_press, on_release=on_release) as listener:listener.join()

该程序在windows 10系统测试没问题,在Ubuntu22.04系统却不能使用,不能正常输出按键值。

试了很多方法都不行,后来找到了问题的原因。
因为pynput需要需要图形环境的支持,Ubuntu系统下,其对xOrg支持的很好,但是对Wayland支持的不好,因为Wayland没有提供通用的输入监听机制。与 X Window 系统(X11)不同,Wayland 不允许应用程序全局监听输入事件。。Ubuntu 22.04默认使用的是Wayland,因此,想要正常使用pynput的话,需要切换到xOrg系统。按照如下步骤操作即可

  1. 那如何确定Ubuntu使用的是那种版本图形系统呢?
echo $XDG_SESSION_TYPE

如果输出是wayland,则表示当前使用的是Wayland。如果输出是x11,则表示使用的是Xorg。

  1. 切换到xorg系统
  • 在登录界面,点击用户名后不要立即输入密码。如果已经登录,先“注销”,再登录。
  • 找到右下角,齿轮图标或“Session”下拉菜单,选择“Ubuntu on Xorg”或类似的选项。
  • 输入密码并登录。
  1. 使用1中提到的办法测试,是否使用的x11图形系统,输出x11即可。
  2. 使用pynput进行测试。

http://www.mrgr.cn/news/19570.html

相关文章:

  • 【LabVIEW学习篇 - 17】:人机交互界面设计01
  • 轻松上手 | 基于RockyLinux 9.4安装部署Zabbix 7.0
  • 2024年最强图纸加密软件大揭秘!图纸加密软件推荐
  • lvs DR模式调试
  • 【Fastapi】使用APIRouter做路由管理
  • 189.轮转数组
  • HarmonyNext动画大全03-帧动画
  • 数据分析 设备一个月以来的参数变化
  • 【SM系列】简单说说SM2,SM3,SM4加密算法
  • 基于vue框架的朝阳保险公司营销管理系统0wamc(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • jdk11安装步骤(含安装包)
  • 0基础搭建本地私有知识库,给 GPT 插上翅膀,有手就行
  • java——项目开发团队分配管理软件
  • iOS viewWillAppear viewDidAppear viewDidLoad
  • Java_jdk安装配置~java入门
  • iOS P8证书推送测试
  • VMware下一文带你构建Apollo9.0运行环境
  • tomato靶机通关攻略
  • 基于 AT 固件测试 ESP32 设备作为 WiFi AP 模式创建 TCP Server 开启 UART-to-WiFi 透传模式的指令序列
  • 公司网站设计方案