splitkb.com

I'm experiencing latency or dropped keystrokes

Steps to follow when input is slower or missing entirely.

When to use

You should use this document when you're using and/or experiencing the following.

Products

This page applies to the following products:

  • Any split keyboard being sold at splitkb.com.

Situations

Use this page when:

  • You're typing, but the output is showing up slower than you'd expect.
  • You're typing, but keystrokes don't reliably output what you'd expect them to.

Expected outcome

After following the instructions on this page:

  • Your keyboard outputs what you expect it to at a reliable speed.

Keyboard without a display

If your keyboard kit supports the use of a display and if you're using QMK or Vial firmware, the firmware will have the display enabled by default. This allows you to use a display without having to tinker with the firmware.

However, if you're not using a display, then your keyboard will be looking for it very frequently, and it will wait until it times out before moving on. This can cause lag, especially on split keyboards where both halves can get stuck waiting for a display to connect.

If this is the case for you, find your keyboard's info.json file, and find the following:

"oled": true,

You'll want to change that true into false, then recompile your firmware and flash it to both controllers. It should resolve your latency issues.

Custom code

If you've implemented custom code, try to flash the default firmware files to your keyboard to see if the issue persists. You can find the default files using our Firmware Finder.

Custom code can impact performance greatly, sometimes in unexpected ways. In particular, be mindful of the following:

  • Code that is executed on every matrix scan can be executed over a thousand times per second. Even small operations that you wouldn't think much of, can add up greatly over time, so you may want to change your code to execute on a different hook instead, or have it execute only every nth loop by keeping track of a counter.
  • Display animations can greatly diminish performance. Data written to the display is done synchronously, so the matrix scanning code has to wait for the data transfer to the display to finish before resuming its work. If you do use animations, try to minimize the impact by executing it at a slower refresh rate, or by limiting the effective area of the animation, where the size is determined by the product of the length and height in pixels (and not just the written pixels, but the total bounding area).
  • RGB animations can impact performance as well, with some animations requiring more processing power than others. Usually, animations are not the problem, but if you've also implemented custom code then it can add up. Consider turning off your animation to see if it resolves the issue.

Wireless keyboards

If you're using your keyboard wirelessly, the prime cause of latency and dropped inputs is an unstable connection. To improve your Bluetooth connection:

  • Make sure to stay close enough to your host device. If you're connected to a device that's several meters away, the connection may not be good enough.
  • Make sure to keep enough distance from USB 3.0 devices, in particular external hard drives. The USB 3.0 protocol uses frequencies that interfere with Bluetooth, which can cause an unstable connection.
  • Keep the antennea clear. If the antenna of either the controller or the host device is obscured, it can impact the connection. Many plastics won't pose an issue, but metals such as aluminium may impact the reliability of the connection.

If can also help to have a look at ZMK's Connection Issues page.


Questions? Help us improve!
Do you have questions after reading the documentation? Do you have feedback about this page, or about the documentation in general? Please send us an email. You can use the buttons below which will open your mail client or app with a template, or send your mail to support@splitkb.com.