570 lines
10 KiB
Text
570 lines
10 KiB
Text
# Copyright (c) 2020 The ZMK Contributors
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
mainmenu "ZMK Firmware"
|
|
|
|
menu "ZMK"
|
|
|
|
menu "Basic Keyboard Setup"
|
|
|
|
config ZMK_KEYBOARD_NAME
|
|
string "Keyboard Name"
|
|
|
|
config USB_DEVICE_PRODUCT
|
|
default ZMK_KEYBOARD_NAME
|
|
|
|
config BT_DEVICE_NAME
|
|
default ZMK_KEYBOARD_NAME
|
|
|
|
config USB_DEVICE_VID
|
|
default 0x1D50
|
|
|
|
config USB_DEVICE_PID
|
|
default 0x615E
|
|
|
|
config USB_DEVICE_MANUFACTURER
|
|
default "ZMK Project"
|
|
|
|
menu "HID"
|
|
|
|
choice ZMK_HID_REPORT_TYPE
|
|
prompt "HID Report Type"
|
|
|
|
config ZMK_HID_REPORT_TYPE_HKRO
|
|
bool "#-Key Roll Over (HKRO) HID Report"
|
|
help
|
|
Enable # key roll over for HID report. This selection is "boot keyboard" compatible
|
|
but limits the total number of possible keys to report as held to #.
|
|
|
|
config ZMK_HID_REPORT_TYPE_NKRO
|
|
bool "Full N-Key Roll Over (NKRO) HID Report"
|
|
help
|
|
Enable full N-Key Roll Over for HID output. This selection will prevent the keyboard
|
|
from working with some BIOS/UEFI versions that only support "boot keyboard" support.
|
|
This option also prevents using some infrequently used higher range HID usages.
|
|
|
|
endchoice
|
|
|
|
if ZMK_HID_REPORT_TYPE_HKRO
|
|
|
|
config ZMK_HID_KEYBOARD_REPORT_SIZE
|
|
int "# Keyboard Keys Reportable"
|
|
default 6
|
|
|
|
endif
|
|
|
|
config ZMK_HID_CONSUMER_REPORT_SIZE
|
|
int "# Consumer Keys Reportable"
|
|
default 6
|
|
|
|
|
|
choice ZMK_HID_CONSUMER_REPORT_USAGES
|
|
prompt "HID Report Type"
|
|
|
|
config ZMK_HID_CONSUMER_REPORT_USAGES_FULL
|
|
bool "Full Consumer HID Usage Support"
|
|
help
|
|
Enable full Consumer usage ID values to be sent to hosts. Allows for less
|
|
frequently used usages, but has compatibability issues with some host OSes.
|
|
|
|
config ZMK_HID_CONSUMER_REPORT_USAGES_BASIC
|
|
bool "Basic Consumer HID Usage Support"
|
|
help
|
|
Enable Consumer usage ID values up to "Playback Speed - Slow" to be sent to
|
|
hosts. Allows for broader compatibability with more host OSes.
|
|
|
|
endchoice
|
|
|
|
menu "Output Types"
|
|
|
|
config ZMK_USB
|
|
bool "USB"
|
|
select USB
|
|
select USB_DEVICE_STACK
|
|
select USB_DEVICE_HID
|
|
|
|
if ZMK_USB
|
|
|
|
config USB_NUMOF_EP_WRITE_RETRIES
|
|
default 10
|
|
|
|
config USB_HID_POLL_INTERVAL_MS
|
|
default 1
|
|
|
|
#ZMK_USB
|
|
endif
|
|
|
|
menuconfig ZMK_BLE
|
|
bool "BLE (HID over GATT)"
|
|
select BT
|
|
select BT_SMP
|
|
select BT_SMP_SC_PAIR_ONLY
|
|
select BT_SMP_APP_PAIRING_ACCEPT
|
|
select BT_PERIPHERAL
|
|
select BT_DIS
|
|
select BT_BAS
|
|
select BT_SETTINGS
|
|
select SETTINGS
|
|
|
|
if ZMK_BLE
|
|
|
|
config SYSTEM_WORKQUEUE_STACK_SIZE
|
|
default 2048
|
|
|
|
config ZMK_BLE_THREAD_STACK_SIZE
|
|
int "BLE notify thread stack size"
|
|
default 512
|
|
|
|
config ZMK_BLE_THREAD_PRIORITY
|
|
int "BLE notify thread priority"
|
|
default 5
|
|
|
|
config ZMK_BLE_KEYBOARD_REPORT_QUEUE_SIZE
|
|
int "Max number of keyboard HID reports to queue for sending over BLE"
|
|
default 20
|
|
|
|
config ZMK_BLE_CONSUMER_REPORT_QUEUE_SIZE
|
|
int "Max number of consumer HID reports to queue for sending over BLE"
|
|
default 5
|
|
|
|
config ZMK_BLE_CLEAR_BONDS_ON_START
|
|
bool "Configuration that clears all bond information from the keyboard on startup."
|
|
default n
|
|
|
|
# HID GATT notifications sent this way are *not* picked up by Linux, and possibly others.
|
|
config BT_GATT_NOTIFY_MULTIPLE
|
|
default n
|
|
|
|
config BT_GATT_AUTO_SEC_REQ
|
|
default n
|
|
|
|
config BT_DEVICE_APPEARANCE
|
|
default 961
|
|
|
|
config ZMK_BLE_PASSKEY_ENTRY
|
|
bool "Experimental: Requiring typing passkey from host to pair BLE connection"
|
|
default n
|
|
|
|
config BT_PERIPHERAL_PREF_MIN_INT
|
|
default 6
|
|
|
|
config BT_PERIPHERAL_PREF_MAX_INT
|
|
default 12
|
|
|
|
config BT_PERIPHERAL_PREF_LATENCY
|
|
default 30
|
|
|
|
config BT_PERIPHERAL_PREF_TIMEOUT
|
|
default 400
|
|
|
|
#ZMK_BLE
|
|
endif
|
|
|
|
#Output Types
|
|
endmenu
|
|
|
|
# HID
|
|
endmenu
|
|
|
|
menu "Split Support"
|
|
|
|
config ZMK_SPLIT
|
|
bool "Split keyboard support"
|
|
|
|
if ZMK_SPLIT
|
|
|
|
menuconfig ZMK_SPLIT_BLE
|
|
bool "Split keyboard support via BLE transport"
|
|
depends on ZMK_BLE
|
|
default y
|
|
select BT_USER_PHY_UPDATE
|
|
select BT_AUTO_PHY_UPDATE
|
|
|
|
if ZMK_SPLIT_BLE
|
|
|
|
menuconfig ZMK_SPLIT_BLE_ROLE_CENTRAL
|
|
bool "Central"
|
|
select BT_CENTRAL
|
|
select BT_GATT_CLIENT
|
|
select BT_GATT_AUTO_DISCOVER_CCC
|
|
|
|
if ZMK_SPLIT_BLE_ROLE_CENTRAL
|
|
|
|
config ZMK_SPLIT_BLE_CENTRAL_POSITION_QUEUE_SIZE
|
|
int "Max number of key position state events to queue when received from peripherals"
|
|
default 5
|
|
|
|
config ZMK_BLE_SPLIT_CENTRAL_SPLIT_RUN_STACK_SIZE
|
|
int "BLE split central write thread stack size"
|
|
default 512
|
|
|
|
config ZMK_BLE_SPLIT_CENTRAL_SPLIT_RUN_QUEUE_SIZE
|
|
int "Max number of behavior run events to queue to send to the peripheral(s)"
|
|
default 5
|
|
|
|
endif
|
|
|
|
if !ZMK_SPLIT_BLE_ROLE_CENTRAL
|
|
|
|
config ZMK_SPLIT_BLE_PERIPHERAL_STACK_SIZE
|
|
int "BLE split peripheral notify thread stack size"
|
|
default 650
|
|
|
|
config ZMK_SPLIT_BLE_PERIPHERAL_PRIORITY
|
|
int "BLE split peripheral notify thread priority"
|
|
default 5
|
|
|
|
config ZMK_SPLIT_BLE_PERIPHERAL_POSITION_QUEUE_SIZE
|
|
int "Max number of key position state events to queue to send to the central"
|
|
default 10
|
|
|
|
config ZMK_USB
|
|
default n
|
|
|
|
config BT_MAX_PAIRED
|
|
default 1
|
|
|
|
config BT_MAX_CONN
|
|
default 1
|
|
|
|
config BT_PERIPHERAL_PREF_MAX_INT
|
|
default 6
|
|
|
|
#!ZMK_SPLIT_BLE_ROLE_CENTRAL
|
|
endif
|
|
|
|
#ZMK_SPLIT_BLE
|
|
endif
|
|
|
|
#ZMK_SPLIT
|
|
endif
|
|
|
|
if ZMK_BLE
|
|
|
|
if ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL
|
|
|
|
config BT_MAX_CONN
|
|
default 6
|
|
|
|
config BT_MAX_PAIRED
|
|
default 6
|
|
|
|
#ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL
|
|
endif
|
|
|
|
if !ZMK_SPLIT_BLE
|
|
|
|
config BT_MAX_CONN
|
|
default 5
|
|
|
|
config BT_MAX_PAIRED
|
|
default 5
|
|
|
|
#!ZMK_SPLIT_BLE
|
|
endif
|
|
|
|
#ZMK_BLE
|
|
endif
|
|
|
|
#Split Support
|
|
endmenu
|
|
|
|
#Basic Keyboard Setup
|
|
endmenu
|
|
|
|
menu "Display/LED Options"
|
|
|
|
rsource "src/display/Kconfig"
|
|
|
|
menuconfig ZMK_RGB_UNDERGLOW
|
|
bool "RGB Adressable LED Underglow"
|
|
select LED_STRIP
|
|
|
|
if ZMK_RGB_UNDERGLOW
|
|
|
|
# This default value cuts down on tons of excess .conf files, if you're using GPIO, manually disable this
|
|
config SPI
|
|
default y
|
|
|
|
config ZMK_RGB_UNDERGLOW_EXT_POWER
|
|
bool "RGB underglow toggling also controls external power"
|
|
default y
|
|
|
|
config ZMK_RGB_UNDERGLOW_BRT_MIN
|
|
int "RGB underglow minimum brightness in percent"
|
|
range 0 100
|
|
default 0
|
|
|
|
config ZMK_RGB_UNDERGLOW_BRT_MAX
|
|
int "RGB underglow maximum brightness in percent"
|
|
range ZMK_RGB_UNDERGLOW_BRT_MIN 100
|
|
default 100
|
|
|
|
config ZMK_RGB_UNDERGLOW_HUE_STEP
|
|
int "RGB underglow hue step in degrees"
|
|
range 0 359
|
|
default 10
|
|
|
|
config ZMK_RGB_UNDERGLOW_SAT_STEP
|
|
int "RGB underglow saturation step in percent"
|
|
range 0 100
|
|
default 10
|
|
|
|
config ZMK_RGB_UNDERGLOW_BRT_STEP
|
|
int "RGB underglow brightness step in percent"
|
|
range 0 100
|
|
default 10
|
|
|
|
config ZMK_RGB_UNDERGLOW_HUE_START
|
|
int "RGB underglow start hue value in degrees"
|
|
range 0 359
|
|
default 0
|
|
|
|
config ZMK_RGB_UNDERGLOW_SAT_START
|
|
int "RGB underglow start saturations value in percent"
|
|
range 0 100
|
|
default 100
|
|
|
|
config ZMK_RGB_UNDERGLOW_BRT_START
|
|
int "RGB underglow start brightness value in percent"
|
|
range ZMK_RGB_UNDERGLOW_BRT_MIN ZMK_RGB_UNDERGLOW_BRT_MAX
|
|
default ZMK_RGB_UNDERGLOW_BRT_MAX
|
|
|
|
config ZMK_RGB_UNDERGLOW_SPD_START
|
|
int "RGB underglow start animation speed value"
|
|
range 1 5
|
|
default 3
|
|
|
|
config ZMK_RGB_UNDERGLOW_EFF_START
|
|
int "RGB underglow start effect int value related to the effect enum list"
|
|
range 0 3
|
|
default 0
|
|
|
|
config ZMK_RGB_UNDERGLOW_ON_START
|
|
bool "RGB underglow starts on by default"
|
|
default y
|
|
|
|
#ZMK_RGB_UNDERGLOW
|
|
endif
|
|
|
|
menuconfig ZMK_BACKLIGHT
|
|
bool "LED backlight"
|
|
select LED
|
|
|
|
if ZMK_BACKLIGHT
|
|
|
|
config ZMK_BACKLIGHT_BRT_STEP
|
|
int "Brightness step in percent"
|
|
range 1 100
|
|
default 20
|
|
|
|
config ZMK_BACKLIGHT_BRT_START
|
|
int "Default brightness in percent"
|
|
range 1 100
|
|
default 40
|
|
|
|
config ZMK_BACKLIGHT_ON_START
|
|
bool "Default backlight state"
|
|
default y
|
|
|
|
config ZMK_BACKLIGHT_AUTO_OFF_IDLE
|
|
bool "Turn off backlight when keyboard goes into idle state"
|
|
|
|
config ZMK_BACKLIGHT_AUTO_OFF_USB
|
|
bool "Turn off backlight when USB is disconnected"
|
|
|
|
#ZMK_BACKLIGHT
|
|
endif
|
|
|
|
#Display/LED Options
|
|
endmenu
|
|
|
|
menu "Power Management"
|
|
|
|
config ZMK_IDLE_TIMEOUT
|
|
int "Milliseconds of inactivity before entering idle state (OLED shutoff, etc)"
|
|
default 30000
|
|
|
|
config ZMK_SLEEP
|
|
bool "Enable deep sleep support"
|
|
imply USB
|
|
|
|
if ZMK_SLEEP
|
|
|
|
config PM_DEVICE
|
|
default y
|
|
|
|
config ZMK_IDLE_SLEEP_TIMEOUT
|
|
int "Milliseconds of inactivity before entering deep sleep"
|
|
default 900000
|
|
|
|
#ZMK_SLEEP
|
|
endif
|
|
|
|
config ZMK_EXT_POWER
|
|
bool "Enable support to control external power output"
|
|
default y
|
|
|
|
#Power Management
|
|
endmenu
|
|
|
|
menu "Combo options"
|
|
|
|
config ZMK_COMBO_MAX_PRESSED_COMBOS
|
|
int "Maximum number of currently pressed combos"
|
|
default 4
|
|
|
|
config ZMK_COMBO_MAX_COMBOS_PER_KEY
|
|
int "Maximum number of combos per key"
|
|
default 5
|
|
|
|
config ZMK_COMBO_MAX_KEYS_PER_COMBO
|
|
int "Maximum number of keys per combo"
|
|
default 4
|
|
|
|
#Combo options
|
|
endmenu
|
|
|
|
menu "Behavior Options"
|
|
|
|
config ZMK_BEHAVIORS_QUEUE_SIZE
|
|
int "Maximum number of behaviors to allow queueing from a macro or other complex behavior"
|
|
default 64
|
|
|
|
endmenu
|
|
|
|
menu "Advanced"
|
|
|
|
menu "Initialization Priorities"
|
|
|
|
if USB_DEVICE_STACK
|
|
|
|
config ZMK_USB_INIT_PRIORITY
|
|
int "USB Init Priority"
|
|
default 50
|
|
|
|
#USB
|
|
endif
|
|
|
|
if ZMK_BLE || ZMK_SPLIT_BLE
|
|
|
|
config ZMK_BLE_INIT_PRIORITY
|
|
int "BLE Init Priority"
|
|
default 50
|
|
|
|
#ZMK_BLE || ZMK_SPLIT_BLE
|
|
endif
|
|
|
|
#Initialization Priorities
|
|
endmenu
|
|
|
|
menu "KSCAN Settings"
|
|
|
|
config ZMK_KSCAN_EVENT_QUEUE_SIZE
|
|
int "Size of the event queue for KSCAN events to buffer events"
|
|
default 4
|
|
|
|
#KSCAN Settings
|
|
endmenu
|
|
|
|
menu "USB Logging"
|
|
|
|
config ZMK_USB_LOGGING
|
|
bool "Enable USB CDC ACM logging to help debug"
|
|
select LOG
|
|
select USB
|
|
select USB_DEVICE_STACK
|
|
select USB_CDC_ACM
|
|
select SERIAL
|
|
select CONSOLE
|
|
select UART_INTERRUPT_DRIVEN
|
|
select UART_LINE_CTRL
|
|
select UART_CONSOLE
|
|
select USB_UART_CONSOLE
|
|
|
|
if ZMK_USB_LOGGING
|
|
|
|
config ZMK_LOG_LEVEL
|
|
default 4
|
|
|
|
# We do this to avoid log loop where logging to USB generates more log messages.
|
|
config USB_CDC_ACM_LOG_LEVEL
|
|
default 1
|
|
|
|
config USB_CDC_ACM_RINGBUF_SIZE
|
|
default 1024
|
|
|
|
config LOG_BUFFER_SIZE
|
|
default 8192
|
|
|
|
config LOG_STRDUP_BUF_COUNT
|
|
default 16
|
|
|
|
config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
|
|
default 1000
|
|
|
|
#ZMK_USB_LOGGING
|
|
endif
|
|
|
|
#USB Logging
|
|
endmenu
|
|
|
|
if SETTINGS
|
|
|
|
config ZMK_SETTINGS_SAVE_DEBOUNCE
|
|
int "Milliseconds to debounce settings saves"
|
|
default 60000
|
|
|
|
#SETTINGS
|
|
endif
|
|
|
|
config ZMK_BATTERY_REPORT_INTERVAL
|
|
depends on ZMK_BLE
|
|
int "Battery level report interval in seconds"
|
|
default 60
|
|
|
|
#Advanced
|
|
endmenu
|
|
|
|
#ZMK
|
|
endmenu
|
|
|
|
config HEAP_MEM_POOL_SIZE
|
|
default 8192
|
|
|
|
config KERNEL_BIN_NAME
|
|
default "zmk"
|
|
|
|
config REBOOT
|
|
default y
|
|
|
|
config USB_DEVICE_STACK
|
|
default y if HAS_HW_NRF_USBD
|
|
|
|
config ZMK_WPM
|
|
bool "Calculate WPM"
|
|
default n
|
|
|
|
config SENSOR
|
|
default y
|
|
|
|
choice CBPRINTF_IMPLEMENTATION
|
|
default CBPRINTF_NANO
|
|
|
|
endchoice
|
|
|
|
module = ZMK
|
|
module-str = zmk
|
|
source "subsys/logging/Kconfig.template.log_config"
|
|
|
|
rsource "boards/Kconfig"
|
|
rsource "boards/shields/*/Kconfig.defconfig"
|
|
rsource "boards/shields/*/Kconfig.shield"
|
|
|
|
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.defconfig"
|
|
osource "$(ZMK_CONFIG)/boards/shields/*/Kconfig.shield"
|
|
|
|
|
|
source "Kconfig.zephyr"
|
|
|