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

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

下面是pynput的测试程序:

python 复制代码
 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 listener
          return False
   
  with 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使用的是那种版本图形系统呢?
powershell 复制代码
echo $XDG_SESSION_TYPE

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

  1. 切换到xorg系统
  • 在登录界面,点击用户名后不要立即输入密码。如果已经登录,先"注销",再登录。
  • 找到右下角,齿轮图标或"Session"下拉菜单,选择"Ubuntu on Xorg"或类似的选项。
  • 输入密码并登录。
  1. 使用1中提到的办法测试,是否使用的x11图形系统,输出x11即可。
  2. 使用pynput进行测试。
相关推荐
是Yu欸32 分钟前
先让 T1 Pro 传回一张好用的图:JPEG 抓拍、RTSP 视频与方向校正
python·机器人·音视频
伞伞悦读35 分钟前
【第60期】特征值不是重要性:Python 特征分解与 PCA 的前置判断
python
2601_9679801142 分钟前
Python之wxPython模块的安装
linux·windows·python·wxpython·gui设计·1024程序员节
云南新人和数采集团1 小时前
DeepSeek Harness 开源贡献手记:从入门到合入主线
python·开源·github
信誓旦旦的程序猿2 小时前
【Python量化实战宝典 #20】动量、反转择时手册:趋势跟随与均值回归(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
好焊孙辉2 小时前
从六代螺柱焊机到AI质检:鸿栢科技的螺柱焊国产化路径
人工智能·python·科技·fpga开发
benchmark_cc2 小时前
个人量化系统搭建:如何利用 QuantDash 实现 A 股日 K 线前复权数据的高效获取与质量校验?
python·数据分析·pandas·量化交易·股票数据·quantdash
hhb_6182 小时前
Python异步队列实战:高效处理耗时任务
开发语言·python
2601_962885722 小时前
一个接口取 A 股+美股+港股:多市场数据方案对比
python
SEO_juper2 小时前
Node.js 全站死链检测工具:从 sitemap 出发一次找全 404
开发语言·人工智能·python·node.js·seo·外贸独立站