X 中递增/递减虚拟控制台的键绑定

X 中递增/递减虚拟控制台的键绑定

可以通过按 ++(其中代表 、 等)来更改虚拟控制台(或Ctrl虚拟终端,VT )Alt。此外,当不运行时,可以按和 箭头键循环显示 VT(减少和增加虚拟终端)。FnFnF1F2XAltAltAlt

但是,如果X在其中一个 VT 上运行,则通常不会设置箭头键绑定,并且必须返回到Ctrl+ Alt+Fn才能更改为另一个 VT。

我通常更喜欢使用箭头绑定来更改 VT。为了避免必须在键绑定之间切换(++Ctrl表示带有 VT 的 VT ;箭头表示不带 VT 的 VT),可以绑定到什么命令来减少/增加 中的 VT ?AltFnXAlt←/→X

如果答案取决于系统,我正在运行 debian 并使用 dwm 和 openbox 作为窗口管理器。

答案1

我只能告诉你一个肮脏的解决方法。使用xbindkeys并添加到~/.xbindkeysrc

"sudo chvt $(($XDG_VTNR-1))"
   alt + c:113

"sudo chvt $(($XDG_VTNR+1))"
   alt + c:114

如果您没有 XDG_VTNR 变量,则必须对上一个/下一个 vt 进行硬编码。

你还必须让自己陷入/etc/sudoers

USER ALL=NOPASSWD:/bin/chvt

答案2

当您从 VT 切换到 X11 并返回时,保持不变的一件事是“低级”通用 Linux 输入设备处理子系统。 C 中有例子Linux USB 输入子系统第2部分在 Linux 杂志上。您的系统可能有一个Python库python-evdev包使这变得更容易。

要尝试什么是可能的,evtest可以用于简单地将事件转储到给定输入设备上,并且您可以使用脚本awk或类似脚本来跟踪您感兴趣的按键的状态,并让它发出chvt命令。

答案3

如果您处于 XLATE 模式,则可以使用 Alt+箭头键。如果没有,您可以使用以下命令激活它神奇的 sysrq 键:当 X 锁定时,内核中的逃生舱口。

首先,确保它已打开:

cat /proc/sys/kernel/sysrq

输出是一个数字,如果它是 1,或者设置了位掩码 0x4,则可以切换到 XLATE:x == 1 || x & 0x4来源

如果两者都不成立,您可以以 root 身份更改该数字:

echo 1 > /proc/sys/kernel/sysrq

在 Arch Linux 上我也可以这样做:

sysctl kernel.sysrq=1

最后,按Alt+SysRq+R或运行以下命令:

echo r > /proc/sysrq-trigger

您现在处于 XLATE 模式 - 您很幸运地拥有方便的按键绑定,直到您重新启动!对于可能的副作用,看到这个

有人请告诉我是否可以永久打开此功能。

相关内容