3.5. 键盘编号(检测顺序)

在接下来的章节中,您将读到关于第 1 键盘、第 2 键盘等等的内容,所以在这里我将解释第 n 键盘的含义。

当检测到一个键盘设备时,它会被绑定到一个空闲的 VT(假设有空闲的 VT)。第一个被检测到的键盘将被绑定到 VT0 (tty1-tty16),第二个绑定到 VT1 (tty17),第三个绑定到 VT2 (tty18)。

Note注意
 

bruby 补丁的旧版本(2003 年 10 月 7 日之前发布)使用

第一个被检测到的键盘 => VT0 (tty0-tty7)

第二个 => VT1 (tty8-tty15)

第三个 => VT2 (tty16-tty23)

检测键盘的顺序取决于您的内核配置

但是有一些注意事项

大多数 USB 键盘将自身表示为多个键盘;常见的是,多媒体键或数字小键盘将自身标识为不同的键盘设备。因此,如果您运行的内核集成了 USB 输入,并且有一个带有多媒体键的 USB 键盘和一个 PS2 键盘,则 USB 键盘将被绑定到 VT0(真实键盘)和 VT1(多媒体键),PS2 键盘将被绑定到 VT2(如果您有足够的简易控制台)。

有几种方法可以解决这些问题。在这里我将解释最容易理解的方法。这肯定不是最好的方法,但却是最简短的解释,我只是想向您说明问题并没有那么大。更好的解决方案将在后面的章节中介绍。

您所需要做的就是使用 dumbcon=n 启动 Backstreet Ruby/Ruby 内核,其中 n 是您的 AT/PS2 键盘数量加上您的 USB 键盘数量乘以 2(我假设这是一个 USB 键盘注册的最大接口数)的总和,这样所有键盘都将被绑定到一个 VT。现在您应该找出真实键盘(不包括多媒体键的键盘)绑定到哪些 VT,并使用适当的 tty 范围启动 X。感谢 Backstreet Ruby 中集成的 proc 接口,您可以轻松找到键盘到 VT 的分配。每个 VT 都会创建一个文件/proc/bus/console/[n]/keyboard(n 是 VT 的编号,对于 VT0,n 将为 00,对于 VT1 - 01,...,对于 VT11 - 11);读取此文件将为您提供分配的键盘。

[root@svetljo root]# cat /proc/bus/console/*/*
usb-00:10.1-1.1/input0
usb-00:10.1-1.1/input1
isa0060/serio0/input0
告诉我们

现在我们可以在具有真实键盘的 VT 上启动 X,在本例中为 VT0 和 VT2。

当然,在这个只有 2 个键盘(一个 USB 和一个 PS2)的简单示例中,通过使用具有主 PS2 输入支持的内核可以轻松避免这个问题。PS2 键盘将首先被检测到并绑定到 VT0,USB 键盘将随后被检测到,并且它的真实键盘接口将被绑定到 VT1,因此不需要额外的简易控制台(用于 USB 键盘的多媒体接口)。