Options

The following options are available in settings.yaml.

Timing options

These timing options control how the firmware recognizes switch presses and releases as chords.

Option Description Required? Value
chord_delay How quickly all the switches in a chord must be pressed for them to be recognized as a single chord. Increase it if you often fail to press whole chords at once. Decrease it if you often type too quickly and accidentally combine separate presses into a single chord. Required Milliseconds
held_delay How long a switch must be held down before it will be reused in future chords. Required Milliseconds

Examples of timing options

This timing diagram shows a few examples of switch-pressing scenarios, to illustrate the meanings of the different delay options. Assume that pressing one switch sends p, pressing another sends m, and pressing them both at once sends z.

keys    |
sent:   | timer name:     states of switches and timers over time:
________|________________________________________________________________
        |                 |-m----------|
        |                         |-p---|
   z    |
        | chord_delay     <..........>
        | held_delay      <.........................>
________|________________________________________________________________
        |                 |-m------------------|
        |                                 |-p---|
  mp    |
        | chord_delay     <..........>
        | held_delay      <.........................>
________|________________________________________________________________
        |                 |-m----------------------------------|
        |                                                 |-p---|
  mz    |
        | chord_delay     <..........>
        | held_delay      <.........................>
________|________________________________________________________________

Note that the chord_delay and held_delay timers reset after every new switch is pressed. This reset is not shown in the diagrams, because it's not relevant to these examples. It does mean that if you're pressing a large chord with many switches, you don't need to press all of them within chord_delay milliseconds - you just can't wait longer than that in between any two presses.

Hardware options

The correct values of these options are determined by the keyboard's hardware. They should not be changed, unless you are building/modifying your own keyboard harware.

Option Description Required? Value
board_name The name of the microcontroller board used inside the keyboard. Required TEENSY_LC, FEATHER_M0_BLE
row_pins The microcontroller pins connected to each row in the switch matrix, split up by hand. Required
column_pins The microcontroller pins connected to each column in the switch matrix, split up by hand. Required
kmap_format The format of the chord blocks in the .kmap files. Each pair of numbers represents the row and column pins of one switch. The number of switches on each line must match the number of dots on each line of the kmap blocks. Required.
rgb_led_pins The microcontroller pins connected to the red, green, and blue channels of a RGB LED, if one is present. Optional, LED disabled by default [pin, pin, pin]
battery_level_pin The microcontroller pin used to sense battery voltage, if a battery is present. Optional, battery sensing disabled by default pin
use_standby_interrupts Use interrupts to detect presses instead of polling the switches. Interrupts are preferred, but require hardware support and may not be available for all boards and pin assignments. Optional, default true true or false

Other options

Option Description Required? Value
debug_messages How much debugging info to send over the serial connection. Messages can be viewed in the Arduino serial monitor. Optional, default None None, Some, All
output_directory Where to save the auto-generated .cpp/.h files containing the firmware configuration. Optional, default pipit-firmware path
word_space_position Whether to automatically add space to the beginning or end of chorded words, or not at all. Recommended value is Before. Optional, default Before Before, After, None
enable_led_typing_feedback If true, flash the LED when a unrecognized chord is typed. Optional, default false true, false
enable_audio_typing_feedback If true, send a short serial message whenever a chord is typed. The host computer can listen for this message and produce a sound (see audio) Optional, default false true, false