我的一位客户有一个 Linux 系统,其详细信息如下:
Suse Linux 15
我插入了 Raritan 的 KVM-over-IP 设备 (DKX4-101),它引入了一个带键盘 + 鼠标的 USB 设备,处于绝对鼠标模式
。绝对鼠标模式是使用。
我可以通过 KVM 操控系统,但鼠标的行为就像是在相对鼠标模式。我 100% 确信 KVM 发送的是绝对鼠标坐标。我发现了一个描述Linux 中有一个旧式鼠标驱动程序 (mousedev),它使旧式应用程序通过 /dev/input/mice 使用 ps2 样式的接口,并且还可以将使用绝对鼠标坐标的鼠标转换为相对坐标。因此,我猜想 KVM 的绝对鼠标不是由应用程序直接使用的,而是通过基于 ps2 且不支持绝对鼠标模式的旧式 mousedev 接口进行“管道传输/转换”的。
我现在想要实现的是,在这个系统上,我可以使用带有 mousedev 的本地鼠标,而 KVM 使用支持绝对鼠标模式的“常规”驱动程序。我想保留 mousedev 方法,因为我的客户告诉我,我不应该在系统上更改任何东西(如果可能的话)。如果我更改了某些东西,它应该只是为 KVM 引入一些东西,而不应该更改任何东西,例如关于现有设备的已用驱动程序。
所以我想我的问题是:
- 这可能吗?
- 改变 xorg.conf 能实现这一点吗?
提前感谢您的帮助。我在下面附上了我能找到的所有相关配置文件/日志。
J.
以下是 udev 鼠标规则:
# serial ps/2 mouse
KERNELS=="input*", SUBSYSTEMS=="input", ATTRS(name)=="PS/2 Logitech Mouse", ATTRS(phys)=="isa0060/serio1/input0", SYMLINK+="input/pmouse0", MODE="0660", RUN="/usr/bin/killall -10 X"
# usb mouse
KERNELS=="mouse*", SUBSYSTEM=="input", ATTRS(name)=="USB*Mouse*", MODE="0660", SYMLINK="input/pmouse0", RUN="/usr/bin/killall -10 X"
以下是更通用的 evdev udev 规则
Section "InputClass"
Identifier "evdev pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
下面是更通用的 libinput udev 规则
Section "InputClass"
Identifier "libinput pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
Section "InputClass"
Identifier "libinput tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
EndSection
在 xorg.conf 中我发现了这个
...
Section "ServerLayout"
Identifier "NVidia"
Screen "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "ServerFlags"
Option "AutoAddDevices" "false"
Option "AutoEnableDevices" "true"
Option "AllowEmptyInput" "false"
EndSection
...
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "explorerps/2"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "no"
EndSection
当我运行 xinput list 时,KVM 设备上的鼠标没有显示出来
Virtual core pointer
Virtual core XTEST pointer
Mouse0
Virtual core keygoard
Virtual core XTEST keyboard
Keyboard0
当我运行 lsusb 时,我看到两个本地设备(键盘+鼠标)+ KVM:
lsusb
...
BUS 001 Device 012: ID 03f0:034a HP, Inc Elite Keyboard
BUS 001 Device 010: ID 03f0:134a HP, Inc Optical Mouse
Bus 002 Device 014: ID 14dd:1010 Raritan Computer, Inc. KX4-101
...
在 boot.msg 中,我看到了设备是如何注册的
input: Raritan KX4-101 as /devices/pci0000:00/0000:00:14,0/usb1/1-6/6:1.0/0003:1400:1010.0001/input/input1
hid-generic: 0003:1400:1010.0001: input.hidraw0: USB HID v1.01 Keyboard [Raritan KX4-101] on usb-0000:00:14.0-6/input0
input: Raritan KX4-101 as /devices/pci0000:00/0000:00:14,0/usb1/1-6/6:1.0/0003:1400:1010.0002/input/input2
hid-generic: 0003:1400:1010.0002: input.hidraw1: USB HID v1.01 Mouse [Raritan KX4-101] on usb-0000:00:14.0-6/input1
在 xorg.log 中我发现了以下内容:
(II) config/udev: Adding input device Raritan KX4-101 (/dev/input/mouse0)
(II) AutoAddDevices is off - not adding device.
(II) config/udev: Adding input device Raritan KX4-101 (/dev/input/event1)
(II) AutoAddDevices is off - not adding device.
...
(II) LoadModule: "mouse"
(II) Loading /usr/lib64/xorg/modules/input/mouse_drv.so
(II) Module mouse: vendor="X.Org Foundation"
compiled for 1.20.3, module version = 1.9.2
Module class: X.Org XInput Driver
ABI class: X.Org XInput driver, version 24.1
...
(II)Using input driver 'mouse' for 'Mouse1'
(**) Option "CorePointer"
(**) Mouse1: always reports core events
(**) Option "Protocol" "PS/2"
(**) Option "Device" "/dev/input/
在 /dev/input 中我发现了很多事件,最后
... input 13 ... mice
... input 13 ... mouse0
... input 13 ... mouse1
... input 13 ... mouse2
... input 13 ... mouse3
... input 13 ... mouse4
... root ... pmouse0 -> mouse3