【问题标题】:Cannot use keyboard within Qt app without sudo在没有 sudo 的情况下无法在 Qt 应用程序中使用键盘
【发布时间】:2015-09-18 15:35:52
【问题描述】:

我有一个在 BeagleBone Black 上运行的经过交叉编译的嵌入式 Qt 应用程序。它工作正常,但有一件事 - 如果我不直接在 BeagleBone Black 上运行,它不接受键盘输入,前面有 sudo。这是一个问题,因为:

  • 我无法远程调试应用程序并使用连接的键盘,因为它不起作用,
  • 当应用程序位于 rc.local 文件中以在启动时启动时,我无法使用键盘(即使在那里使用了 sudo)。

目前这对我来说很重要,我很长时间都找不到解决问题的方法。对于这方面的所有帮助,我真的很感激。

我的/etc/enviroment 内容在这里:

QWS_MOUSE_PROTO=IntelliMouse:/dev/input/mouse0
QWS_KEYBOARD=LinuxInput:/dev/tty
TSLIB_CONFFILE=/etc/ts.conf
TSLIB_PLUGINDIR=/usr/lib/ts

虽然我已经为QWS_KEYBOARD 尝试了许多不同的配置。我想使用的键盘是/dev/input/event1

【问题讨论】:

  • 然后检查 /dev/input/event1 的权限?
  • crwxrwxrwx 1 root root 13, 65 Mar 1 21:45 event1
  • 您需要 Qt 的调试版本,并且您需要跟踪平台代码以找出键盘访问失败的原因。这可能是一个非常简单的问题来解决。我不明白为什么如果键盘不起作用,远程调试将不起作用。您从主机而不是目标控制调试器。
  • 我不是这个意思。只有当我在板上运行应用程序并输入sudo ./myapp -qws 时,键盘才能工作。如果我使用远程 pc 上的 ssh 远程调试或运行同一行,它们的键盘将不起作用。我可以按键盘键,但它们没有在应用程序中注册,而是在应用程序后面进入控制台(没有 x 服务器)。我不知道如何解决这个问题。最大的问题是,当我从 rc.local' using sudo ./myapp -qws` 运行应用程序时,键盘也无法正常工作......如果应用程序看不到它,我该如何调试键盘输入?
  • 我会在 myapp 上运行 strace,然后看看它对 /dev/input/event1 做了什么。

标签: c++ linux qt keyboard beagleboneblack


【解决方案1】:

我也面临这个问题。但在我的情况下,我使用从 Windows 操作系统到 raspberry / beaglebone 的远程桌面。

我的解决方案(确保你至少知道如何在树莓派中配置 ssh):

  1. 在 raspberry / beaglebone / 其他嵌入式 linux 上安装 xrdp (sudo apt-get install xrdp)
  2. 在 PC 中安装 xming(搜索 sourceforge)
  3. 打开XLaunch,选择多个窗口>不启动客户端>剪贴板>完成
  4. 打开putty>>会话,输入主机名/IP地址, putty >> SSH >> X11 >> 检查“启用 X11 转发” putty >> 点击打开按钮
  5. 登录 ssh 然后输入 qcreator

现在键盘应该没问题了

【讨论】:

  • 这并不能完全解决问题,因为必须将 X 转移到主机上,并且在调试时仍然无法在目标上使用它。另外我认为您正在目标上运行 qt creator....
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
相关资源
最近更新 更多