当前位置: 首页 > 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进行测试。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 百度飞将 paddle ,实现贝叶斯神经网络 bayesue neure network bnn,aistudio公开项目 复现效果不好
  • Oracle SQL和PL/SQL中SQL%ROWCOUNT和SQL%FOUND属性
  • STM32
  • 【Linux】冯诺依曼概念以及操作系统基础概念
  • Hadoop 下载
  • 集运系统需要与哪些硬件设备集成?
  • QString如何追加字符串
  • 视频安防监控LntonAIServer安防管理平台抖动检测和过亮过暗检测
  • 电工基础知识
  • Mental-LLM——通过在线文本数据利用大型语言模型进行心理健康预测
  • 【路径规划】 使用计算机视觉和机器人操纵器绘制肖像
  • 1-6 图像覆盖掩膜 opencv树莓派4B 入门系列笔记
  • 金融、互联网等领域手机三要素API接口的应用
  • 计算氨基酸残基之间的键角和二面角
  • 基于Python爬虫的淘宝服装数据分析项目
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 《深入 React 技术栈》
  • 【mysql】环境安装、服务启动、密码设置
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CentOS 7 防火墙操作
  • GitUp, 你不可错过的秀外慧中的git工具
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Vue 动态创建 component
  • 利用DataURL技术在网页上显示图片
  • 扑朔迷离的属性和特性【彻底弄清】
  • 赢得Docker挑战最佳实践
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • #Linux(make工具和makefile文件以及makefile语法)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (160)时序收敛--->(10)时序收敛十
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (3)STL算法之搜索
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (javaweb)Http协议
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (三分钟)速览传统边缘检测算子
  • (四)js前端开发中设计模式之工厂方法模式
  • (一)SpringBoot3---尚硅谷总结
  • (转)setTimeout 和 setInterval 的区别
  • ****三次握手和四次挥手
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .mysql secret在哪_MySQL如何使用索引
  • .NET NPOI导出Excel详解
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .Net 垃圾回收机制原理(二)
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • @RequestParam详解
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具