RMK Internal Configuration
The [rmk] section defines configuration parameters used inside RMK. These parameters affect the firmware's behavior, memory usage, and performance. If you don't need to change these parameters, you can ignore this section.
Configuration Example
Parameter Details
Mouse-Related Configuration
mouse_key_interval: Mouse key interval in milliseconds, default value is 20. This parameter controls the mouse movement speed; lower values result in faster movement.mouse_wheel_interval: Mouse wheel interval in milliseconds, default value is 80. This parameter controls the scrolling speed; lower values result in faster scrolling.
Behavior Configuration
Info
Increasing the number of combos, forks, morses (tap dances), and macros will increase memory usage.
combo_max_num: Maximum number of combos that the keyboard can store, default value is 8. This value must be between 0 and 255.combo_max_length: Maximum number of keys that can be pressed simultaneously in a combo, default value is 4. This value must be between 0 and 16.fork_max_num: Maximum number of forks for conditional key actions, default value is 8. This value must be between 0 and 255.morse_max_num: Maximum number of morses that can be stored, default value is 8. This value must be between 0 and 255.morse_profile_max_num: Capacity of the morse profile table (the named profiles in[behavior.morse.profiles], referenced by morse and tap-hold keys), default value is 16. This value must be between 0 and 255.max_patterns_per_key: Maximum number of tap/hold patterns a morse key can handle, default value is 8. This value must be between 4 and 32. (Automatically raised to fit the largesttap_actions+hold_actions+morse_actionscount among the configured morse keys.)macro_space_size: Space size in bytes for storing macro sequences, default value is 256. This value must be between 0 and 65535.
Matrix Configuration
debounce_time: Default key debounce time in milliseconds, default value is 20.
Channel Configuration
In RMK there are several channels used for communication between tasks. The length of the channel can be adjusted. Larger channel size means more events can be buffered, but it will increase memory usage.
Per-event pub/sub channels (key events, battery events, etc.) are configured separately in the [event] section.
report_channel_size: The length of report channel, default value is 16. Used for buffering HID reports to be sent to the host.vial_channel_size: The length of the legacy Vial channel, default value is 4. Used only by Vial builds with BLE enabled, where it buffers Vial packets received over BLE.flash_channel_size: The length of flash channel, default value is 4. Used for buffering flash storage operations.
Rynk Protocol Configuration
These tune the Rynk protocol and rarely need changing.
protocol_macro_chunk_size: How many macro bytes a single macro transfer can carry, default value is 64. This value must be between 0 and 256. Smaller chunks use less firmware RAM but need more back-and-forth with the host.rynk_buffer_size: Size of Rynk's send/receive frame buffers in bytes. Payload capacity and bulk batch sizes derive from it. Default value is 488, which fills exactly two BLE notifications. This value must be between 0 and 65535.
Split Keyboard Configuration
split_peripherals_num: The number of split peripherals, default value is 0. If peripherals are specified inkeyboard.toml, this value is automatically set to the actual count. If you're using the Rust API without[[split.peripheral]]entries, set this manually to match your peripheral count. This value must be between 0 and 255; when thesplitfeature is enabled, it is raised to at least 1.
Wireless Configuration
ble_profiles_num: The number of available Bluetooth profiles, default value is 3. This parameter defines how many Bluetooth paired devices the keyboard can store. This value must be between 0 and 255.split_central_sleep_timeout_seconds: Sleep timeout for BLE split central in seconds, default value is 0 (disabled). When set to a non-zero value, the split central will enter sleep mode after this many seconds of inactivity to save power. Set to 0 to disable automatic sleep.dongle_pairing_window_secs: Length of one dongle pairing window in seconds, default value is 30. Used only by builds with thedonglefeature. A dongle without a bonded keyboard repeats the window until one pairs. A bonded dongle opens it exactly once, at power-on, and afterwards reconnects only its bonded keyboard.
Auto Mouse Layer Configuration
auto_mouse_layer_max_num: Maximum number of[[behavior.auto_mouse_layer]]entries. Auto-derived from your config if unset; set explicitly to override (e.g. when using the Rust API withoutkeyboard.toml).