Wooting keyboard for Linux users: technical tips
This article is about using the Wooting One analog mechanical keyboard on Linux.
(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:
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.
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
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