如何在 Xorg (GNOME) 中使用 SteelSeries Cataclysm MMO 游戏鼠标的所有按钮?

如何在 Xorg (GNOME) 中使用 SteelSeries Cataclysm MMO 游戏鼠标的所有按钮?

我在 Gentoo 上的鼠标有问题。普通按钮(左/右/滚轮和上一个/下一个)可以工作,但 x 无法识别其他按钮。我尝试了一下xev,使用它们没有任何作用。

我正在运行 Gnome Shell 3.6。

我尝试配置 /etc/X11/xorg.conf.d/10-evdev.conf 来添加设备:

Section "InputDevice"
        Identifier "GamingMouse"
        Driver "evdev"
        Option "Name" "SteelSeries World of Warcraft: Cataclysm MMO Gaming Mouse"
        Option "Protocol" "ExplorerPS/2"
        Option "Buttons" "16"
        Option "ZAxisMapping" "4 5"
        Option "ButtonMapping" "1 2 3 6 7 8 9 10 11 12 13 14 15 16"
EndSection

但这并没有改变什么。我还尝试在输入类中添加这些选项:

Section "InputClass"
        Identifier "evdev pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "Protocol" "ExplorerPS/2"
        Option "Buttons" "16"
        Option "ZAxisMapping" "4 5"
        Option "ButtonMapping" "1 2 3 6 7 8 9 10 11 12 13 14 15 16"
EndSection

但同样,它没有奏效。

有人有办法让这些按钮起作用吗?

编辑#1

一些更多信息与xinput.我曾经xinput收集过一些更多信息:

$ xinput -list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SteelSeries World of Warcraft: Cataclysm MMO Gaming Mouse id=8    [slave  pointer  (2)]
⎜   ↳ SteelSeries World of Warcraft: Cataclysm MMO Gaming Mouse id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ SteelSeries World of Warcraft: Cataclysm MMO Gaming Mouse id=9    [slave  keyboard (3)]
    ↳ G15 Gaming Keyboard                       id=11   [slave  keyboard (3)]
    ↳ G15 Gaming Keyboard                       id=12   [slave  keyboard (3)]
    ↳ G15 GamePanel LCD                         id=13   [slave  keyboard (3)]
    ↳ Logitech Logitech G930 Headset            id=14   [slave  keyboard (3)]

获取按钮映射

$ xinput get-button-map 8
1 2 3 4 5 6 7 8 9 10 11 12 13 

$ xinput get-button-map 10
1 2 3 4 5 6 7 

$ xinput get-button-map 4 
1 2 3 4 5 6 7 8 9 10 

$ xinput get-button-map 9
device has no buttons

列表道具

$ xinput list-props 8
Device 'SteelSeries World of Warcraft: Cataclysm MMO Gaming Mouse':
    Device Enabled (139):   1
    Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (263): 0
    Device Accel Constant Deceleration (264):   1.000000
    Device Accel Adaptive Deceleration (265):   1.000000
    Device Accel Velocity Scaling (266):    10.000000
    Device Product ID (256):    4152, 4896
    Device Node (257):  "/dev/input/event2"
    Evdev Axis Inversion (267): 0, 0
    Evdev Axes Swap (269):  0
    Axis Labels (270):  "Rel X" (149), "Rel Y" (150), "Rel Vert Wheel" (262)
    Button Labels (271):    "Button Left" (142), "Button Middle" (143), "Button Right" (144), "Button Wheel Up" (145), "Button Wheel Down" (146), "Button Horiz Wheel Left" (147), "Button Horiz Wheel Right" (148), "Button Side" (260), "Button Extra" (261), "Button Unknown" (259), "Button Unknown" (259), "Button Unknown" (259), "Button Unknown" (259)
    Evdev Middle Button Emulation (272):    0
    Evdev Middle Button Timeout (273):  50
    Evdev Third Button Emulation (274): 0
    Evdev Third Button Emulation Timeout (275): 1000
    Evdev Third Button Emulation Button (276):  3
    Evdev Third Button Emulation Threshold (277):   20
    Evdev Wheel Emulation (278):    0
    Evdev Wheel Emulation Axes (279):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (280):    10
    Evdev Wheel Emulation Timeout (281):    200
    Evdev Wheel Emulation Button (282): 4
    Evdev Drag Lock Buttons (283):  0

$ xinput list-props 10
Device 'SteelSeries World of Warcraft: Cataclysm MMO Gaming Mouse':
    Device Enabled (139):   1
    Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (263): 0
    Device Accel Constant Deceleration (264):   1.000000
    Device Accel Adaptive Deceleration (265):   1.000000
    Device Accel Velocity Scaling (266):    10.000000
    Device Product ID (256):    4152, 4896
    Device Node (257):  "/dev/input/event4"
    Evdev Axis Inversion (267): 0, 0
    Evdev Axes Swap (269):  0
    Axis Labels (270):  "Rel X" (149), "Rel Y" (150), "Rel Horiz Wheel" (285)
    Button Labels (271):    "Button 0" (284), "Button Unknown" (259), "Button Unknown" (259), "Button Wheel Up" (145), "Button Wheel Down" (146), "Button Horiz Wheel Left" (147), "Button Horiz Wheel Right" (148)
    Evdev Middle Button Emulation (272):    0
    Evdev Middle Button Timeout (273):  50
    Evdev Third Button Emulation (274): 0
    Evdev Third Button Emulation Timeout (275): 1000
    Evdev Third Button Emulation Button (276):  3
    Evdev Third Button Emulation Threshold (277):   20
    Evdev Wheel Emulation (278):    0
    Evdev Wheel Emulation Axes (279):   0, 0, 4, 5
    Evdev Wheel Emulation Inertia (280):    10
    Evdev Wheel Emulation Timeout (281):    200
    Evdev Wheel Emulation Button (282): 4
    Evdev Drag Lock Buttons (283):  0

看起来 id 8 中可以识别超过 7 个按钮,这似乎是一个好兆头,不是吗?那么我怎样才能只使用这个并过滤另一个呢?

答案1

问题不在于 X 级别 - 即使 USB 鼠标规格也只允许左右滚轮。

Catclysm 游戏鼠标具有用于鼠标和键盘的 USB 接口 - 您基本上需要告诉鼠标您希望哪些按钮与哪些击键相匹配。

唯一官方支持的方法是运行 Windows 虚拟机,使用 SteelSeries 官方支持的驱动程序上传并将您的配置加载到鼠标的板载内存中。

在花了一些时间对他们使用的协议进行逆向工程后,我编写了自己的驱动程序。它没有涵盖很多功能,但我想玩电脑游戏并管理我的窗口系统 - 它可以正常工作。看https://github.com/owenRiddy/cataclysm-mouse

答案2

我不是 100% 确定,但我在这个上找到了这个SteelSeries 网站的常见问题解答之一:

问:

在哪里可以获得适用于 Linux 平台的《魔兽世界》MMO 驱动程序。

A:

不幸的是,我们没有任何计划很快为 WoW 鼠标开发专有的 Linux 驱动程序,但我们很乐意协助任何社区驱动的努力,为 Linux 开发开源解决方案。

我不确定这是否是您的硬件,但它属于常见问题解答中的这一类别:“类别 » SteelSeries WoW:大灾变 MMO 游戏鼠标”。

调试鼠标

您可以使用以下工具来更深入地研究该鼠标,而不是仅使用xev.我正在使用笔记本电脑的指点设备,但您可以将此字符串替换为鼠标“SteelSeries World of Warcraft MMO Gaming Mouse”:

xinput-列表

$ xinput -list
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎜   ↳ TPPS/2 IBM TrackPoint                     id=13   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=9    [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                     id=10   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Sleep Button                              id=8    [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ ThinkPad Extra Buttons                    id=14   [slave  keyboard (3)]

xinput 获取按钮映射

$ xinput get-button-map ""SynPS/2 Synaptics TouchPad"
1 2 3 4 5 6 7 8 9 10 11 12 

xinput 列表属性

$ xinput list-props "SynPS/2 Synaptics TouchPad"
Device 'SynPS/2 Synaptics TouchPad':
    Device Enabled (124):   1
    Coordinate Transformation Matrix (126): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (249): 1
    Device Accel Constant Deceleration (250):   2.500000
    Device Accel Adaptive Deceleration (251):   1.000000
    Device Accel Velocity Scaling (252):    12.500000
    Synaptics Edges (268):  1781, 5579, 1646, 4582
    Synaptics Finger (269): 24, 29, 255
    Synaptics Tap Time (270):   180
    Synaptics Tap Move (271):   245
    Synaptics Tap Durations (272):  180, 180, 100
    Synaptics Tap FastTap (273):    0
    Synaptics Middle Button Timeout (274):  75
    Synaptics Two-Finger Pressure (275):    29
    Synaptics Two-Finger Width (276):   7
    Synaptics Scrolling Distance (277): 111, 111
    Synaptics Edge Scrolling (278): 1, 1, 0
    Synaptics Two-Finger Scrolling (279):   0, 0
    Synaptics Move Speed (280): 1.000000, 1.750000, 0.035842, 40.000000
    Synaptics Edge Motion Pressure (281):   29, 159
    Synaptics Edge Motion Speed (282):  1, 446
    Synaptics Edge Motion Always (283): 0
    Synaptics Off (284):    0
    Synaptics Locked Drags (285):   0
    Synaptics Locked Drags Timeout (286):   5000
    Synaptics Tap Action (287): 0, 0, 0, 0, 1, 3, 2
    Synaptics Click Action (288):   1, 1, 1
    Synaptics Circular Scrolling (289): 0
    Synaptics Circular Scrolling Distance (290):    0.100000
    Synaptics Circular Scrolling Trigger (291): 0
    Synaptics Circular Pad (292):   0
    Synaptics Palm Detection (293): 0
    Synaptics Palm Dimensions (294):    10, 199
    Synaptics Coasting Speed (295): 20.000000, 50.000000
    Synaptics Pressure Motion (296):    29, 159
    Synaptics Pressure Motion Factor (297): 1.000000, 1.000000
    Synaptics Grab Event Device (298):  1
    Synaptics Gestures (299):   1
    Synaptics Capabilities (300):   1, 0, 1, 0, 0, 1, 1
    Synaptics Pad Resolution (301): 105, 75
    Synaptics Area (302):   0, 0, 0, 0

xinput 查询状态

$ xinput query-state "SynPS/2 Synaptics TouchPad"
2 classes :
ButtonClass
    button[1]=up
    button[2]=up
    button[3]=up
    button[4]=up
    button[5]=up
    button[6]=up
    button[7]=up
    button[8]=up
    button[9]=up
    button[10]=up
    button[11]=up
    button[12]=up
ValuatorClass Mode=Relative Proximity=In
    valuator[0]=2267
    valuator[1]=4290

怎么办?

我确实找到了这个 Ubuntu 社区文档,标题为:许多按钮鼠标如何可能还有一些额外的事情需要尝试,但我认为如果您找不到支持它们的兼容驱动程序,那么您就无法让其余按钮正常工作。我在这里可能是错的(我希望我是为了你的缘故),但我不认为你能够在 Linux 下访问这些按钮。

参考

相关内容