如何从控制台启动 xev?

如何从控制台启动 xev?

我试图从控制台启动 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 变量时,您的位置是非法的,或者您没有对计算机的任何本地访问权限。

相关内容