将鼠标和键盘重新映射到游戏手柄

自万圣节以来,我一直非常喜欢Ubuntu上的Frictional Games’Amnesia。 我的下一个目标是获得他们拥有的其他产品。

不幸的是,这个游戏没有游戏手柄设置(还有许多其他设置)。 我知道有像rejoystick这样的软件可以将键盘键映射到游戏手柄。 但是,由于这款游戏采用了鼠标,是否有解决方案来映射两者?

提前致谢。

更新:我在playdeb.net上找到了QJoypad。 它允许键盘和鼠标的映射。 不幸的是,进入Amnesia后我似乎仍然遇到鼠标问题。

按照Grumbel的回答 ,我在他的链接的支持下尝试了xboxdrv解决方案,特别是这个页面 :

1.从Ubuntu软件中心安装xboxdrv 0.8.2

如果需要,还可以安装uinputjoydev 。 我这样做了sudo modprobe uinput + sudo modprobe joydev

2.需要知道游戏手柄的事件

启动udevadm monitor --udev ,然后插入游戏手柄:

 $ udevadm monitor --udev monitor will print the received events for: UDEV - the event which udev sends out after rule processing UDEV [6722.377700] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1 (usb) UDEV [6722.383264] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0 (usb) UDEV [6722.383333] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003 (hid) UDEV [6722.383389] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/0003:046D:C218.0003/hidraw/hidraw1 (hidraw) UDEV [6722.387123] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10 (input) UDEV [6722.399284] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/event8 (input) UDEV [6722.412128] add /devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input10/js0 (input) 

我得出结论,我的游戏手柄的事件是/ dev / input / event8

3.显示游戏手柄的每个键,轴,按钮的名称。

我们的想法是启动xboxdrv并测试每个按钮并在纸上记录结果。

 $ sudo xboxdrv --evdev /dev/input/event8 --evdev-debug Your Xbox/Xbox360 controller should now be available as: /dev/input/js1 /dev/input/event9 Press Ctrl-c to quit, use '--silent' to suppress the event output EV_ABS ABS_X 128 EV_ABS ABS_Y 128 ... 

在我的情况下,结果是: 在此处输入图像描述

4.设置配置文件

创建一个xboxdrv-mouse.ini文件以设置XY轴和鼠标左键和右键。
在这里,我设置了鼠标左键的游戏手柄按钮2和鼠标右键的3

 [xboxdrv] evdev=/dev/input/event8 silent=true [evdev-absmap] ABS_X=x1 ABS_Y=y1 [ui-axismap] x1=REL_X:10 y1=REL_Y:-10 [evdev-keymap] BTN_THUMB=a BTN_THUMB2=b [ui-buttonmap] a=BTN_LEFT b=BTN_RIGHT # EOF # 

请注意,REl_X和REL_Y的值似乎定义了鼠标的速度,通过定义负值,它反转了轴(请参阅此处了解REL_Y)

另一个具有更多按钮定义的示例

 [xboxdrv] evdev=/dev/input/event8 silent=true [evdev-absmap] ABS_X=x1 ABS_Y=y1 ABS_HAT0X=x2 ABS_HAT0Y=y2 [ui-axismap] x1=REL_X:10 y1=REL_Y:-10 x2=KEY_LEFT:KEY_RIGHT y2=KEY_DOWN:KEY_UP [evdev-keymap] BTN_TRIGGER=x BTN_TOP=y BTN_THUMB=a BTN_THUMB2=b BTN_PINKIE=rt BTN_BASE2=rb BTN_TOP2=lt BTN_BASE=lb BTN_BASE3=back BTN_BASE4=start [ui-buttonmap] x=KEY_KPENTER y=KEY_SPACE a=BTN_LEFT b=BTN_RIGHT rt=KEY_KP8 rb=KEY_KP2 lt=KEY_KP6 lb=KEY_KP4 back=KEY_LEFTSHIFT start=KEY_RIGHTCTRL # EOF # 

5.启动它

 sudo xboxdrv --config xboxdrv-mouse.ini 

要避免使用sudo启动它,请创建一个udev规则 。

结论

它工作正常,对我来说是最好的解决方案。

解决方案是QJoyPad。 正如我在关于这个问题的更新中所述,它确实允许键盘和鼠标的映射。

Amnesia在配置上有点奇怪,因为根据他们的论坛 ,游戏使用相对鼠标移动。 解决方案是在输入export SDL_VIDEO_X11_DGAMOUSE=0后通过终端启动游戏。 这样做后,我用鼠标测试工作正常。

顺便说一下,我在QJoyPad上使用的控制器是Logitech Dual Action。

要将游戏手柄映射到鼠标,请尝试js2mouse 。

在Ubuntu 11.10中,qjoypad似乎无法正常工作,因为在通知区域中左键单击其图标会触发右键单击菜单,无法访问设置。 但是,您可以使用Rejoystick(也可在PlayDeb中使用)。 第一次运行它(运行rejoystick )时,将键分配给游戏手柄的按钮,然后保存。 接下来你运行rejoystick -d并且你不会得到一个GUI,rejoystick在后台运行并将使用你的游戏手柄按钮来分配键。

我肯定会推荐AntiMicro ,它从已停产的QJoyPad停止的地方开始。 我正在使用它来从我的沙发上玩Civ V,我很喜欢它的每一分钟。 它很容易设置和使用(是的,它可以让你映射键盘和鼠标 – 包括左/右滚轮滚动)。