Wooting keyboard for Linux users: technical tips

This article is about using the Wooting One analog mechanical keyboard on Linux.

Initial setup

(Information as of Wootility v2.3.3)

If you just got the keyboard and downloaded the latest Wootility software, it is possible that it will be unable to detect the keyboard. From what I heard from technical support, I figure that this is because somewhere along the way the software lost the ability to communicate with old versions of keyboard firmware (and it has old firmware from the factory). So the solution is to get an old version (v2.1.0) of the software, run it with sudo and go through the restore procedure which includes a firmware update. Then latest software will work properly.


XInput does not work!

From what I understand, the keyboard is supposed to be detected as 3 devices: keyboard, DirectInput gamepad, XInput gamepad. When you switch between DirectInput and XInput, the other type of gamepad becomes inactive (stays at all zeros) rather than disappearing. On Linux there is no XInput device detected, though you can still select it in Wootility. So all you can do is select DirectInput and deal with its cryptic action names. After you've mapped some keyboard keys to some actions, you can launch a diagnostic application to see them being registered. Some options are:

  • evtest (see device path below)
  • AntiMicro
  • "Joystick – System Settings Module" for KDE

Understanding DirectInput

The weirdness of the actions goes a bit beyond their names, as some of the actions can't even generate any events! The following shows all the events that the DirectInput actions generate (as of Linux 4.16). As a bonus, in the right column this image also contains a mapping from event names to XBox controller buttons (you'll see the relevance of that later).

Getting back XInput

The next problem you'll face is that most games don't support DirectInput... Luckily, there is software that can create a fake XBox controller from it, called xboxdrv. We'll have to be a bit creative assigning the events because there isn't always a direct equivalent, so you'll see some disagreements with the previous image.

xboxdrv config

Now, for an xboxdrv config in accordance to this image. You can apply it by running:

xboxdrv --config wooting.xboxdrv --evdev /dev/input/by-id/usb-Wooting_*-event-joystick
wooting.xboxdrv[xboxdrv]
evdev = /dev/input/by-id/usb-Wooting_WootingOne-if05-event-joystick
mimic-xpad = true
silent = true

[axismap]
-Y1 = Y1
-Y2 = Y2

[evdev-absmap]
ABS_Y  = Y1
ABS_X  = X1
ABS_RY = Y2
ABS_RX = X2
ABS_Z  = DPAD_Y
ABS_RZ = DPAD_X
ABS_GAS = LT
ABS_RUDDER = RT

[evdev-keymap]
BTN_SOUTH  = A
BTN_EAST   = B
BTN_NORTH  = X
BTN_WEST   = Y
BTN_TL     = LB
BTN_TR     = RB
BTN_SELECT = Back
BTN_START  = Start
# BTN_C =
BTN_Z = Guide
BTN_TL2 = TL
BTN_TR2 = TR

You will need this process running at all times when playing games. At least it does not require sudo.

Don't disable XInput!

XInput doesn't work anyway, but when I flipped this switch, the keyboard became undetectable and I couldn't find a way to fix it using just Linux.


See also: Wooting for Linux users: review

Created
Comments powered by Disqus