- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
与我之前的帖子“No input enabled while running QT app in docker container on Raspberry PI”相关的问题:在 Raspberry Pi 3 (Ubuntu Mate) 上运行的 docker 容器 (Ubuntu 16.04) 中的 libinput 似乎存在问题:libinput-list-devices 在我运行时不返回任何内容在容器中运行它,而当我在 RP3 本身上运行时它会返回正确的设备。我对 Linux 上的 UI 还很陌生,所以可能会遗漏一些简单的东西——感谢任何帮助。
最佳答案
默认情况下,Docker 容器无法访问任何主机设备。 Libinput 告诉您真相——容器无法看到连接到主机的任何输入设备。
您可以使用 --device
参数将特定设备暴露给您的容器 docker run
。您可以使用 --privileged
标志公开主机上的所有 设备,这会禁用 Docker 实现的大部分保护措施(即,应谨慎使用).
例如,在我的主机上我有:
# ls /
by-id event0 event10 event12 event14 event16 event3 event5 event7 event9 mouse0
by-path event1 event11 event13 event15 event2 event4 event6 event8 mice
如果我启动一个普通容器,这些设备都不可见:
# docker run -it --rm fedora bash
[root@9582799320ff /]# ls /dev/input
ls: cannot access '/dev/input': No such file or directory
但是如果我将该设备暴露给容器:
# docker run -it --rm --device /dev/input/event3 fedora bash
我明白了:
[root@bcca19a2341b /]# ls /dev/input/
event3
我可以打开该设备并与之交互。
请注意,即使像这样公开输入设备,发现(例如,libinput list-devices
)如果没有额外的配置。 libput list-devices
命令依赖于/run/udev/data
中的信息,这些信息没有暴露在默认情况下的容器。您可以使用 -v
参数公开它docker 运行
:
# docker run -it --rm --device /dev/input/event3 \
-v /run/udev/data:/run/udev/data fedora bash
现在发现有效:
[root@e897d760a147 /]# libinput list-devices
Device: daskeyboard
Kernel: /dev/input/event3
Group: 1
Seat: seat0, default
Capabilities: keyboard
Tap-to-click: n/a
Tap-and-drag: n/a
Tap drag lock: n/a
Left-handed: n/a
Nat.scrolling: n/a
Middle emulation: n/a
Calibration: n/a
Scroll methods: none
Click methods: none
Disable-w-typing: n/a
Accel profiles: n/a
Rotation: n/a
关于linux - libinput 在 docker 容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50789172/
我想从我的触摸板上获取原始的多点触控数据。 我试过使用 libevdev 但我的成功是有限的,我不能做我想做的事。我发现了 libinput 可能更抽象,并发现了如何使用它来自动获取手势(例如使用 l
与我之前的帖子“No input enabled while running QT app in docker container on Raspberry PI”相关的问题:在 Raspberry
在 wayland 上没有 libinput 的配置文件。这通常不是问题,因为桌面环境(例如 Gnome)通常提供一种配置设备的方法。但是,无法为触控板设备启用中间点击模拟。默认情况下(使用按钮区域以
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在运行 Fedora 22;我正在尝试使用 uinput 创建一个非常简单的键盘宏脚本,该脚本将跨显示服务器(和控制台)工作。 正在关注 this post我想出了如何成功地做到这一点 in co
我是一名优秀的程序员,十分优秀!