News and research

Progress report #9


10 March 2023  <- Previous  Next ->


Firmware 0.88.0

We released Firmware 0.88.0 for the Alpakka controller, with plenty of improvements and fixes:

Automatic touch threshold

In previous releases we implemented the option to manually adjust the touch surface sensitivity threshold, this was important to support different electrically conductive materials and different setups. Now we are adding an auto value which detects and adjusts the threshold automagically. This is now the default value, but manual threshold values are still available through the Tune settings.

Any button to engage gyro

Now is possible to use any button to enable the gyro, this may be important for builds without a conductive touch surface, or for accessibility reasons. For example, if we want to use the R4 to trigger the gyro, we can define the profile as:

profile.gyro = Gyro_(
  GYRO_MODE_TOUCH_ON,
  PIN_R4,               <---
  ACTIONS(MOUSE_X),
  ACTIONS(MOUSE_Y),
  ACTIONS(KEY_NONE)
);

Per-profile deadzone and overlap

Now the thumbstick section for each profile can define the deazone either DEADZONE_FROM_CONFIG or as a custom value from 0 to 1 that will override the global value from the config.

Additionally each profile thumbstick section can define an overlap value, which is how much the 4 directions overlap with each other, with a range of values from -1 to 1.

Better axis mapping

Previously the thumbstick axis mapping was only able to handle one-axis-per-axis, so for example:

  • Physical thumbstick input axis LX => Gamepad output axis LX.

But now it is possible to assign different axis to each of the physical thumbstick directions independently, for example, the same axis but inverted would look like:

  • Physical thumbstick input axis LZ- (left) => Gamepad output axis LY+.
  • Physical thumbstick input axis LZ+ (right) => Gamepad output axis LY-.

Another example would be using up and down as the analog triggers:

  • Physical thumbstick input axis LY+ (up)=> Gamepad output axis ZR (RT).
  • Physical thumbstick input axis LY- (down) => Gamepad output axis ZL (LT).

Or any other combination of axis and their inverted variants.

Macros

A basic implementation of macros (sequence of keystrokes or buttons) is available now. This is an important accessibility feature that we will improve over time, for now the limitations are:

  • Not able to use modifier keys (control, shift, alt).
  • Not able to set custom interval of the keystrokes (it is fixed to 10 milliseconds).
  • Not being able to use multiple macros in parallel.

These macros can be defined as a set of actions in the profiles (like when defining any other group of keys or buttons), but including PROC_MACRO as the first action will make them trigger sequentially, this is how the new quick chat phrases are defined (see later):

ACTIONS(PROC_MACRO, KEY_H, KEY_E, KEY_L, KEY_L, KEY_O)),  // Hello.

Profile changes and additions

  • In all profiles:
    • Home => gamepad-home (instead of shift-tab).
  • In Console profile:
    • Select-2 => M.
    • Start-2 => N.
  • In Home profile:
    • Thumbstick axis X- => Quick chat macro no.
    • Thumbstick axis X+ => Quick chat macro yes.
    • Thumbstick axis Y- => Quick chat macro thanks.
    • Thumbstick axis Y- => Quick chat macro gg.

Fixes

  • Scrollwheel up and down can be mapped to any button now.
  • LED was not blinking correctly when the requested profile was the same than the current profile.

Research notes about gyro ratcheting and flick stick

We wrote a new blog entry about our experience and learnings with different gyro methods: Gyro ratcheting and flick stick.


Thanks a lot for the support!
- M&M <3