O2 User Manual

This manual covers the O2 keyboard. It was adapted from the Round 1 Beta testing manual.

Kit contents

You will also need:

Assembly

  1. Plug the GX connection cable into both keyboard halves.
  2. Align each keyboard half over its wrist rest, with the keyboard on top, and gently press it down.

The GX connection cable is hot-pluggable, but disconnecting it while the keyboard is powered is not recommended.

Connection

  1. Connect either keyboard half to your computer.
  2. Do not move the joysticks for two seconds after connecting the keyboard. Their readings are automatically recentered during this time to prevent drift.
  3. Open the gamepad tester. OS Keyboard should appear, and the resting joystick readings should be within 1% of center.

OS Keyboard detected by the gamepad tester

  1. Rotate both joysticks through their full range. They should reach the edges of the tester display.
  2. Press each joystick down. The left joystick should trigger button B10, and the right joystick should trigger button B11.

Whenever you reconnect the keyboard, remember not to move the joysticks for the first two seconds.

Reflashing the firmware

Firmware updates provide new features and bug fixes. Flash both keyboard halves when updating.

  1. Disconnect the keyboard half you want to flash.
  2. Hold its top-left key: Esc on the left half or 6 on the right half with the default keymap.
  3. While holding the key, connect the keyboard half to your computer.
  4. Confirm that a drive named RPI-RP2 appears.
  5. Drag the .uf2 firmware file onto the drive. The drive should disconnect automatically, and the keyboard should reconnect.
  6. If the keyboard behaves unexpectedly, disconnect and reconnect it.
  7. Repeat these steps for the other half.

Using VIA

The O2 configurator is our customized VIA app. It remaps keys, configures layers, and includes the Joystick pane for monitoring both joysticks and editing their mouse speed curves. Use desktop Chrome or Microsoft Edge with the keyboard connected over USB.

  1. Open the O2 configurator.
  2. Select Authorize device and choose your O2 in the browser's device picker. The O2 definition is already included; no JSON import is needed.
  3. Use Configure for keymaps and keyboard settings, Joystick for the live monitor and speed-curve editor, or Key Tester to check inputs.

If you use another VIA app, import this keyboard's via.json:

  1. Open Settings and enable Show Design tab.

Show Design tab enabled in VIA settings

  1. Open Design, select Load Draft Definition, and load via.json.

Load the latest via.json again after a firmware update adds new features.

  1. Open Configure and authorize the keyboard.

Default keymap

The default O2 keymap

Switch Mode (SWM) is a custom key that changes both joysticks between Keys Mode and Mouse Mode. Its Switch Mode Behavior setting supports two options:

Switch Mode key in VIA

Controller Mode is selected separately. To move SWM to another key, find it in VIA's Custom tab.

The Custom tab also contains the Controller Button keycodes.

O2 custom keycodes in VIA

The bottom section of the default keymap shows the keys produced by each joystick in Keys Mode. The key in the center of each cross is produced by Joystick Down.

Keys Mode

Joystick Key Count divides each joystick into one to four directional key regions. O2 defaults to four regions per joystick.

Outside Gaming Mode, non-spacebar keys have a sticky effect: a key remains held until the joystick is released. For example, move the left joystick left and then sweep it clockwise to the top to hold both Ctrl and Shift. You can then press S to send Ctrl+Shift+S.

In Gaming Mode, keys are not sticky. In the same example, Ctrl is released when the joystick moves from left to top.

Press Ctrl+SWM to toggle Gaming Mode.

Activation Threshold controls how far a joystick must move before it sends a keypress. The minimum is 15%, and the maximum is 90%. Joystick Key Alignment selects Center-aligned or Edge-aligned directional key regions:

Key activation settings in VIA

Center-aligned and edge-aligned joystick regions

Mouse Mode

Each joystick acts as an independent mouse. Each side's sensitivity can be set from 0.5× to 2× the default sensitivity.

Left and right mouse sensitivity settings in VIA

Moving either mouse enables QMK's Pointing Device Auto Mouse feature, which uses layer 9 in VIA. The Auto Mouse Layer stays active while the mouse is moving and for the configured Auto Mouse Timeout afterward. The timeout can be set from 0.3 to 4.0 seconds. By default, the J, K, and L positions on the right half become the left, middle, and right mouse buttons.

Default mouse buttons on the Auto Mouse layer

In Mouse Mode, joystick press follows the active QMK/VIA keymap, just like other keys. To use it as a mouse button while Auto Mouse is active, assign MS_BTN1, MS_BTN2, or another action to that joystick's Joystick Down position on layer 9. It has no fixed left-click action. When Auto Mouse is inactive, the currently active layer determines the assignment. Controller Mode retains its native controller-button behavior.

Controller Mode

Layer 10 is a full controller-simulation layer. Switching to this layer automatically changes the joysticks to Controller Mode. By default, ESDF on the left half becomes the D-pad, while IJKL on the right half becomes ABXY.

Default controller layer in VIA

Controller Buttons are also available in VIA's Custom tab. Their numbers correspond to this layout:

Controller button-number mapping

8-way Mode

8-way Mode applies only to the left joystick and must be enabled manually in VIA. At a 45-degree angle, the joystick presses both adjacent keys. Use VIA's Key Tester to see the behavior. 8-way Keys selects WASD or ESDF.

8-way Keys setting in VIA

Miscellaneous settings

Disable Windows Key in Gaming Mode

Enable this option to prevent accidental Windows-key presses while gaming.

Disable Windows Key in Gaming Mode setting

SOCD Mode

SOCD, also known as Snap Tap, automatically releases a direction when its opposite direction is pressed. For example, when A is held in WASD mode, pressing D automatically releases A. The feature supports WASD and ESDF layouts, or it can be turned off.

SOCD Mode setting

Manual mode selection

You can change each joystick's mode independently. SWM still changes both joysticks together between Keys Mode and Mouse Mode.

Manual joystick mode settings in VIA

Core joystick settings

These settings control Joystick Key Count, axis inversion, and axis mapping. Legacy Mode provides compatibility with a Legacy O2. These settings normally do not need to be changed.

Core joystick settings in VIA

Recenter Joysticks

Select Recenter Joysticks to recalibrate the neutral position manually. Make sure both joysticks are at rest before doing this.

Recenter Joysticks setting in VIA

Restore Defaults

Select Restore Defaults to restore the settings provided by the installed keymap.