使用输入设备的 "Phys" 描述符大大简化了 XFree 中输入设备的配置,尤其是在使用大量显示器时。
由于 USB 设备以树状形式连接,您可以非常容易地指定键盘和鼠标设备绑定到指定 X 显示的方式。 您必须使用一个端口数量等于(或大于)X 显示数量的 USB 集线器,在这个集线器上连接更小的(2-4 端口)集线器(或带有集成集线器的键盘)。 小(集成)集线器的第一个端口连接键盘,第二个端口连接鼠标(如果有空闲端口,您可以将 usb-audio 设备连接到它们 :) )。 如果主 USB 集线器是第一个 USB 设备,这将导致以下 usb-id 布局
![]() | 注意 |
---|---|
在以下解释和示例中,我使用辅助(集成)集线器上的第一个设备作为键盘设备,因为我的键盘在内部连接到集成集线器的第 1 个端口。 我假设这适用于大多数带有集成集线器的键盘,但如果您拥有的键盘使用不同的端口,则您需要进行小的调整。 |
在主集线器的第 1 个端口上
1.1 USB 集线器 (集成)
1.1.1 USB 键盘
1.1.2 USB 鼠标
(1.1.3 usb-audio/其他 usb 设备)
在第 2 个端口上
1.2 USB 集线器 (集成)
1.2.1 USB 键盘
1.2.2 USB 鼠标
(1.2.3 usb-audio/其他 usb 设备)
在第 3 个端口上
1.3 USB 集线器 (集成)
1.3.1 USB 键盘
1.3.2 USB 鼠标
(1.3.3 usb-audio/其他 usb 设备)
在第 4 个端口上
1.4 USB 集线器 (集成)
1.4.1 USB 键盘
1.4.2 USB 鼠标
(1.4.3 usb-audio/其他 usb 设备)
基于此,我们可以将连接到指定 USB 端口的所有设备绑定到给定的 X 服务器。
一个针对 4 用户系统使用 "Phys" 描述符与 Input Agent 和 USB 输入设备的示例。
![]() | 注意 |
---|---|
这里 USB 控制器的 PCI 功能被 *.* 屏蔽,因此它应该在 Backstreet Ruby 和 Ruby-2.6 下都能工作。 如果您使用多个 USB 控制器,则必须使用不同的掩码(例如 "usb-0*:xx.x-...")或指定完整的 PHYS_ID:。 对于 Backstreet Ruby,您应该具有 PHYS_ID "usb-00:xx.x-..." 对于 Ruby-2.6,您应该具有 PHYS_ID "usb-0000:00:xx.x-...." |
我们将在启动 X 时使用 "vt[n]" 参数,以及以下键盘的配置文件(/etc/hotplug/kbd.conf ):
# # keyboard configuration # # vt_name device_physicaly_location VT0 usb-*.*-1.1.1/input0 VT1 usb-*.*-1.2.1/input0 VT2 usb-*.*-1.3.1/input0 VT3 usb-*.*-1.4.1/input0 |
对于鼠标设备,配置文件(/etc/hotplug/mouse.conf)将如下所示
# # mouse device configuration # # sym_link device_physicaly_location mouse0br usb-*.*-1.1.2/input0 mouse1br usb-*.*-1.2.2/input0 mouse2br usb-*.*-1.3.2/input0 mouse3br usb-*.*-1.4.2/input0 |
并且我们必须调整 XFree 配置文件,以便 XFree 使用符号链接而不是实际设备。 如果您已经配置了独立的鼠标,您只需将 "br" 附加到每个鼠标设备。
将每个 "/dev/input/mouse[n]" 更改为 "/dev/input/mouse[n]br"。
对于第一个显示器
...... # ********************************************************************** # Pointer section # ********************************************************************** Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mouse0br" Option "ZAxisMapping" "4 5" # ChordMiddle is an option for some 3-button Logitech mice Option "Emulate3Buttons" # Option "ChordMiddle" EndSection ...... |
对于第二个显示器
...... # ********************************************************************** # Pointer section # ********************************************************************** Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mouse1br" Option "ZAxisMapping" "4 5" # ChordMiddle is an option for some 3-button Logitech mice Option "Emulate3Buttons" # Option "ChordMiddle" EndSection ...... |
等等。
或者在使用单个 XFree 配置文件的情况下
...... # ********************************************************************** # Pointer section # ********************************************************************** Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mouse0br" Option "ZAxisMapping" "4 5" # ChordMiddle is an option for some 3-button Logitech mice Option "Emulate3Buttons" # Option "ChordMiddle" EndSection Section "InputDevice" Identifier "Mouse2" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mouse1br" Option "ZAxisMapping" "4 5" # ChordMiddle is an option for some 3-button Logitech mice Option "Emulate3Buttons" # Option "ChordMiddle" EndSection ...... |
使用支持事件设备的 XFree 的 "Dev Phys" 选项和 USB 输入设备使我们能够为所有 X 服务器使用几乎相同的输入设备配置。 唯一的区别将是 usb-id 的一部分,它反映了主 USB 集线器的端口。
![]() | 注意 |
---|---|
以下示例适用于多个 XFree 配置文件,如果您使用单个 XFree 配置文件,则必须调整标识符。 |
第一个显示器的输入设备配置看起来像这样
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-1.1.1/input0" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "dvorak" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-1.1.2/input0" Option "ZAxisMapping" "4 5" EndSection |
第二个显示器的配置像这样
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-1.2.1/input0" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "dvorak" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-1.2.2/input0" Option "ZAxisMapping" "4 5" EndSection |
第三个显示器的配置像这样
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-1.3.1/input0" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "dvorak" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-1.3.2/input0" Option "ZAxisMapping" "4 5" EndSection |
等等。
您也可以使用 "?",这样无论您将主集线器插在哪里,所有显示器仍将具有所需的配置。
Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-?.1.1/input0" Option "AutoRepeat" "250 30" Option "XkbRules" "xfree86" Option "XkbModel" "pc101" Option "XkbLayout" "dvorak" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "evdev" Option "Dev Phys" "usb-*-?.1.2/input0" Option "ZAxisMapping" "4 5" EndSection |