我试图从控制台启动 Xev,它总是给出“无法打开显示”,我需要作为另一个用户从控制台启动 xev(我使用须藤 -u '#1000'去做这个)。
我知道 xev 有一个“显示”参数(xev-显示)但我只是不知道如何使用它。
如何从 X11 环境外部的控制台启动 xev?
答案1
所有 X11 程序都会在环境变量指示的显示屏上打开窗口DISPLAY
。因此:
sudo -u 1000 env DISPLAY=:0 xev
或者就此而言,因为您可以以与 X 服务器不同的用户身份运行程序,只需
DISPLAY=:0 xev
:NUMBER
是本地显示的符号;大多数情况下,控制台上运行的X11服务器是最先启动的,最终编号为0。您可以echo "$DISPLAY"
在该显示器上的终端中运行,检查显示器编号是否正确。:0.0
相当于(可以省略:0
尾随)。.0
如果您以与 X 服务器不同的用户身份运行程序,有时即使以同一用户身份运行程序,也可能需要设置XAUTHORITY
环境变量。该变量指向一个包含密码的文件(称为曲奇饼)应用程序必须传递到 X 服务器。要从 中查看正确的值XAUTHORITY
,请echo $XAUTHORITY
在该显示屏上运行;如果未设置,则默认值是~/.Xauthority
其中~
代表用户的主目录。
DISPLAY
如果您需要以编程方式查找和的值XAUTHORITY
,请参阅在远程 X 显示器上打开窗口(为什么“无法打开显示器”)?
至少几乎所有。从技术上来说,他们可以不这样做,但程序员需要积极工作才能不这样做,而参数-display
是一种远非普遍的约定。
答案2
你应该试试:
xev --display localhost:0.0
假设 X 实际上正在运行。
答案3
下面的命令非常有用:
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
但你需要设置 DISPLAY 变量,它与你在 xev 机器上的位置有关。
笔记:当您应用 DISPALY 变量时,您的位置是非法的,或者您没有对计算机的任何本地访问权限。