From 6109d0245a506c78d9d667eb35a1d6f1489713fc Mon Sep 17 00:00:00 2001 From: Merlinov <64584348+Merlinov@users.noreply.github.com> Date: Wed, 8 Feb 2023 21:31:48 +0300 Subject: [PATCH] Add files via upload --- app/CMakeLists.txt | 78 ++++++------ app/Kconfig | 312 +++++++++++++++++++-------------------------- 2 files changed, 170 insertions(+), 220 deletions(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 3da50b57..b70ba2f0 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -1,16 +1,18 @@ cmake_minimum_required(VERSION 3.13.1) set(CONFIG_APPLICATION_DEFINED_SYSCALL true) +list(APPEND BOARD_ROOT ${CMAKE_SOURCE_DIR}) +list(APPEND DTS_ROOT ${CMAKE_SOURCE_DIR}) # Add our custom Zephyr module for drivers w/ syscalls, etc. list(APPEND DTS_ROOT ${CMAKE_SOURCE_DIR}/drivers/zephyr) -set(ZephyrBuildConfiguration_ROOT ${CMAKE_SOURCE_DIR}/cmake) - list(APPEND ZEPHYR_EXTRA_MODULES ${CMAKE_CURRENT_SOURCE_DIR}/drivers ) +include(cmake/zmk_config.cmake) + # Find Zephyr. This also loads Zephyr's build system. find_package(Zephyr REQUIRED HINTS ../zephyr) project(zmk) @@ -20,30 +22,38 @@ zephyr_linker_sources(RODATA include/linker/zmk-events.ld) # Add your source file to the "app" target. This must come after # find_package(Zephyr) which defines the target. target_include_directories(app PRIVATE include) -target_sources(app PRIVATE src/stdlib.c) +target_sources_ifdef(CONFIG_ZMK_SLEEP app PRIVATE src/power.c) target_sources(app PRIVATE src/activity.c) target_sources(app PRIVATE src/kscan.c) target_sources(app PRIVATE src/matrix_transform.c) +target_sources(app PRIVATE src/hid.c) +target_sources(app PRIVATE src/mouse/key_listener.c) +target_sources(app PRIVATE src/mouse/main.c) +target_sources(app PRIVATE src/mouse/tick_listener.c) target_sources(app PRIVATE src/sensors.c) target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/wpm.c) target_sources(app PRIVATE src/event_manager.c) target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/ext_power_generic.c) target_sources(app PRIVATE src/events/activity_state_changed.c) target_sources(app PRIVATE src/events/position_state_changed.c) +target_sources(app PRIVATE src/events/layer_state_changed.c) +target_sources(app PRIVATE src/events/keycode_state_changed.c) +target_sources(app PRIVATE src/events/modifiers_state_changed.c) +target_sources(app PRIVATE src/events/endpoint_selection_changed.c) target_sources(app PRIVATE src/events/sensor_event.c) +target_sources(app PRIVATE src/events/mouse_button_state_changed.c) +target_sources(app PRIVATE src/events/mouse_move_state_changed.c) +target_sources(app PRIVATE src/events/mouse_tick.c) +target_sources(app PRIVATE src/events/mouse_scroll_state_changed.c) target_sources_ifdef(CONFIG_ZMK_WPM app PRIVATE src/events/wpm_state_changed.c) -target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/events/usb_conn_state_changed.c) -target_sources(app PRIVATE src/behaviors/behavior_reset.c) -target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c) -if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL) - target_sources(app PRIVATE src/hid.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/ble_active_profile_changed.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/battery_state_changed.c) +target_sources_ifdef(CONFIG_USB app PRIVATE src/events/usb_conn_state_changed.c) +if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) target_sources(app PRIVATE src/behaviors/behavior_key_press.c) - target_sources_ifdef(CONFIG_ZMK_BEHAVIOR_KEY_TOGGLE app PRIVATE src/behaviors/behavior_key_toggle.c) + target_sources(app PRIVATE src/behaviors/behavior_reset.c) target_sources(app PRIVATE src/behaviors/behavior_hold_tap.c) target_sources(app PRIVATE src/behaviors/behavior_sticky_key.c) - target_sources(app PRIVATE src/behaviors/behavior_caps_word.c) - target_sources(app PRIVATE src/behaviors/behavior_key_repeat.c) - target_sources(app PRIVATE src/behaviors/behavior_macro.c) target_sources(app PRIVATE src/behaviors/behavior_momentary_layer.c) target_sources(app PRIVATE src/behaviors/behavior_mod_morph.c) target_sources(app PRIVATE src/behaviors/behavior_outputs.c) @@ -52,39 +62,29 @@ if ((NOT CONFIG_ZMK_SPLIT) OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL) target_sources(app PRIVATE src/behaviors/behavior_transparent.c) target_sources(app PRIVATE src/behaviors/behavior_none.c) target_sources(app PRIVATE src/behaviors/behavior_sensor_rotate_key_press.c) + target_sources(app PRIVATE src/behaviors/behavior_mouse_key_press.c) + target_sources(app PRIVATE src/behaviors/behavior_mouse_move.c) + target_sources(app PRIVATE src/behaviors/behavior_mouse_scroll.c) + target_sources_ifdef(CONFIG_ZMK_EXT_POWER app PRIVATE src/behaviors/behavior_ext_power.c) target_sources(app PRIVATE src/combo.c) - target_sources(app PRIVATE src/behaviors/behavior_tap_dance.c) - target_sources(app PRIVATE src/behavior_queue.c) - target_sources(app PRIVATE src/conditional_layer.c) - target_sources(app PRIVATE src/endpoints.c) - target_sources(app PRIVATE src/events/endpoint_selection_changed.c) - target_sources(app PRIVATE src/hid_listener.c) target_sources(app PRIVATE src/keymap.c) - target_sources(app PRIVATE src/events/layer_state_changed.c) - target_sources(app PRIVATE src/events/modifiers_state_changed.c) - target_sources(app PRIVATE src/events/keycode_state_changed.c) - - if (CONFIG_ZMK_BLE) - target_sources(app PRIVATE src/events/ble_active_profile_changed.c) - target_sources(app PRIVATE src/behaviors/behavior_bt.c) - target_sources(app PRIVATE src/ble.c) - target_sources(app PRIVATE src/hog.c) - endif() endif() - target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/behaviors/behavior_rgb_underglow.c) -target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/behaviors/behavior_backlight.c) - -target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/events/battery_state_changed.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/behaviors/behavior_bt.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/ble.c) target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/battery.c) - -target_sources_ifdef(CONFIG_ZMK_SPLIT app PRIVATE src/events/split_peripheral_status_changed.c) -add_subdirectory(src/split) - -target_sources_ifdef(CONFIG_USB_DEVICE_STACK app PRIVATE src/usb.c) -target_sources_ifdef(CONFIG_ZMK_USB app PRIVATE src/usb_hid.c) +if (CONFIG_ZMK_SPLIT_BLE AND (NOT CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL)) + target_sources(app PRIVATE src/split_listener.c) + target_sources(app PRIVATE src/split/bluetooth/service.c) +endif() +if (CONFIG_ZMK_SPLIT_BLE AND CONFIG_ZMK_SPLIT_BLE_ROLE_CENTRAL) + target_sources(app PRIVATE src/split/bluetooth/central.c) +endif() +target_sources_ifdef(CONFIG_USB app PRIVATE src/usb.c) +target_sources_ifdef(CONFIG_ZMK_BLE app PRIVATE src/hog.c) target_sources_ifdef(CONFIG_ZMK_RGB_UNDERGLOW app PRIVATE src/rgb_underglow.c) -target_sources_ifdef(CONFIG_ZMK_BACKLIGHT app PRIVATE src/backlight.c) +target_sources(app PRIVATE src/endpoints.c) +target_sources(app PRIVATE src/hid_listener.c) target_sources(app PRIVATE src/main.c) add_subdirectory(src/display/) diff --git a/app/Kconfig b/app/Kconfig index 358d5d14..d68e4a5a 100644 --- a/app/Kconfig +++ b/app/Kconfig @@ -25,69 +25,7 @@ config USB_DEVICE_PID config USB_DEVICE_MANUFACTURER default "ZMK Project" -config BT_DIS_PNP_VID - default 0x1D50 - -config BT_DIS_PNP_PID - default 0x615E - -config BT_DIS_MODEL - default ZMK_KEYBOARD_NAME - -config BT_DIS_MANUF - 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" +menu "HID Output Types" config ZMK_USB bool "USB" @@ -100,9 +38,6 @@ if ZMK_USB config USB_NUMOF_EP_WRITE_RETRIES default 10 -config USB_HID_POLL_INTERVAL_MS - default 1 - #ZMK_USB endif @@ -139,6 +74,10 @@ 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_MOUSE_REPORT_QUEUE_SIZE + int "Max number of mouse HID reports to queue for sending over BLE" + default 20 + config ZMK_BLE_CLEAR_BONDS_ON_START bool "Configuration that clears all bond information from the keyboard on startup." default n @@ -147,9 +86,6 @@ config ZMK_BLE_CLEAR_BONDS_ON_START config BT_GATT_NOTIFY_MULTIPLE default n -config BT_GATT_AUTO_SEC_REQ - default n - config BT_DEVICE_APPEARANCE default 961 @@ -157,29 +93,105 @@ config ZMK_BLE_PASSKEY_ENTRY bool "Experimental: Requiring typing passkey from host to pair BLE connection" default n -config BT_PERIPHERAL_PREF_MIN_INT +#ZMK_BLE +endif + +#HID Output Types +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 + +if ZMK_SPLIT_BLE + +menuconfig ZMK_SPLIT_BLE_ROLE_CENTRAL + bool "Central" + select BT_CENTRAL + select BT_GATT_CLIENT + +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 + +endif + +if !ZMK_SPLIT_BLE_ROLE_CENTRAL + +config ZMK_SPLIT_BLE_PERIPHERAL_STACK_SIZE + int "BLE split peripheral notify thread stack size" + default 512 + +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_GAP_AUTO_UPDATE_CONN_PARAMS + default n + +#!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_PERIPHERAL_PREF_MAX_INT - default 12 +config BT_MAX_PAIRED + default 6 -config BT_PERIPHERAL_PREF_LATENCY - default 30 +#ZMK_SPLIT_BLE && ZMK_SPLIT_BLE_ROLE_CENTRAL +endif -config BT_PERIPHERAL_PREF_TIMEOUT - default 400 +if !ZMK_SPLIT_BLE + +config BT_MAX_CONN + default 5 + +config BT_MAX_PAIRED + default 5 + +#!ZMK_SPLIT_BLE +endif #ZMK_BLE endif -#Output Types +#Split Support endmenu -# HID -endmenu - -rsource "src/split/Kconfig" - #Basic Keyboard Setup endmenu @@ -187,7 +199,7 @@ menu "Display/LED Options" rsource "src/display/Kconfig" -menuconfig ZMK_RGB_UNDERGLOW +config ZMK_RGB_UNDERGLOW bool "RGB Adressable LED Underglow" select LED_STRIP @@ -201,102 +213,55 @@ 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 + int "RGB underglow hue step in degrees of 360" default 10 config ZMK_RGB_UNDERGLOW_SAT_STEP - int "RGB underglow saturation step in percent" - range 0 100 + int "RGB underglow sturation step in percent" 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 + int "RGB underglow start hue value from 0-359" default 0 config ZMK_RGB_UNDERGLOW_SAT_START - int "RGB underglow start saturations value in percent" - range 0 100 + int "RGB underglow start saturations value from 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 + int "RGB underglow start brightness value from 0-100" + default 100 config ZMK_RGB_UNDERGLOW_SPD_START - int "RGB underglow start animation speed value" - range 1 5 + int "RGB underglow start animation speed value from 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 -config ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE - bool "Turn off RGB underglow when keyboard goes into idle state" - -config ZMK_RGB_UNDERGLOW_AUTO_OFF_USB - bool "Turn off RGB underglow when USB is disconnected" - depends on USB_DEVICE_STACK - #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 "Mouse Options" + +rsource "src/mouse/Kconfig" + +#Mouse Options +endmenu + menu "Power Management" config ZMK_IDLE_TIMEOUT @@ -309,6 +274,10 @@ config ZMK_SLEEP if ZMK_SLEEP +choice SYS_PM_POLICY + default PM_POLICY_APP +endchoice + config PM_DEVICE default y @@ -340,36 +309,14 @@ 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 - -DT_COMPAT_ZMK_BEHAVIOR_KEY_TOGGLE := zmk,behavior-key-toggle - -config ZMK_BEHAVIOR_KEY_TOGGLE - bool - default $(dt_compat_enabled,$(DT_COMPAT_ZMK_BEHAVIOR_KEY_TOGGLE)) - -config ZMK_MACRO_DEFAULT_WAIT_MS - int "Default time to wait (in milliseconds) before triggering the next behavior in macros" - default 15 - -config ZMK_MACRO_DEFAULT_TAP_MS - int "Default time to wait (in milliseconds) between the press and release events of a tapped behavior in macros" - default 30 - +#Display/LED Options endmenu menu "Advanced" menu "Initialization Priorities" -if USB_DEVICE_STACK +if USB config ZMK_USB_INIT_PRIORITY int "USB Init Priority" @@ -396,6 +343,12 @@ config ZMK_KSCAN_EVENT_QUEUE_SIZE int "Size of the event queue for KSCAN events to buffer events" default 4 +config ZMK_KSCAN_MOCK_DRIVER + bool "Enable mock kscan driver to simulate key presses" + +config ZMK_KSCAN_COMPOSITE_DRIVER + bool "Enable composite kscan driver to combine kscan devices" + #KSCAN Settings endmenu @@ -419,22 +372,24 @@ 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 USB_CDC_ACM_DEVICE_NAME + default "CDC_ACM" + +config USB_CDC_ACM_DEVICE_COUNT + default 1 + +config UART_CONSOLE_ON_DEV_NAME + default "CDC_ACM_0" + 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 @@ -450,11 +405,6 @@ config ZMK_SETTINGS_SAVE_DEBOUNCE #SETTINGS endif -config ZMK_BATTERY_REPORT_INTERVAL - depends on ZMK_BLE - int "Battery level report interval in seconds" - default 60 - #Advanced endmenu @@ -470,7 +420,7 @@ config KERNEL_BIN_NAME config REBOOT default y -config USB_DEVICE_STACK +config USB default y if HAS_HW_NRF_USBD config ZMK_WPM