diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 932dbb8..886aba6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,25 +2,10 @@ name: Build ZMK firmware on: workflow_dispatch: push: - paths: - - "config/**" + paths-ignore: + - "keymap-drawer/**" jobs: build: uses: zmkfirmware/zmk/.github/workflows/build-user-config.yml@main - draw: - uses: caksoylar/keymap-drawer/.github/workflows/draw-zmk.yml@main - permissions: - contents: write - with: - commit_message: "[Draw] ${{ github.event.head_commit.message }}" - amend_commit: false - install_branch: "main" - keymap_patterns: "config/*.keymap" - json_path: "config" - config_path: "keymap_drawer.config.yaml" # config file, ignored if not exists - output_folder: "keymap-drawer" - destination: "both" - parse_args: "" # map of extra args to pass to `keymap parse`, e.g. "corne:'-l Def Lwr Rse' cradio:''" - draw_args: "" # map of extra args to pass to `keymap draw`, e.g. "corne:'-k corne_rotated' cradio:'-k paroxysm'" diff --git a/.github/workflows/draw.yml b/.github/workflows/draw.yml new file mode 100644 index 0000000..3411ab0 --- /dev/null +++ b/.github/workflows/draw.yml @@ -0,0 +1,18 @@ +name: Draw Keymap +on: + workflow_dispatch: + push: + paths: + - "config/**" + - .github/workflows/draw.yml + - keymap_drawer.config.yaml + +jobs: + draw: + uses: caksoylar/keymap-drawer/.github/workflows/draw-zmk.yml@main + permissions: + contents: write + with: + commit_message: "[Draw] ${{ github.event.head_commit.message }}" + destination: "commit" + fail_on_error: ${{ fromJSON(true) }} diff --git a/.gitignore b/.gitignore index 36f5dd9..b2a2275 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ build/ zmk/ -zephyr/ modules/ tools/ .west/ \ No newline at end of file diff --git a/boards/arm/eyelash_sofle/Kconfig.board b/boards/arm/eyelash_sofle/Kconfig.board new file mode 100644 index 0000000..b0d53f2 --- /dev/null +++ b/boards/arm/eyelash_sofle/Kconfig.board @@ -0,0 +1,12 @@ +# +# Copyright (c) 2024 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +config BOARD_EYELASH_SOFLE_LEFT + bool "eyelash_sofle left" + depends on SOC_NRF52840_QIAA + +config BOARD_EYELASH_SOFLE_RIGHT + bool "eyelash_sofle right" + depends on SOC_NRF52840_QIAA diff --git a/config/boards/arm/sofle/Kconfig.defconfig b/boards/arm/eyelash_sofle/Kconfig.defconfig similarity index 69% rename from config/boards/arm/sofle/Kconfig.defconfig rename to boards/arm/eyelash_sofle/Kconfig.defconfig index 5025515..581e6c3 100644 --- a/config/boards/arm/sofle/Kconfig.defconfig +++ b/boards/arm/eyelash_sofle/Kconfig.defconfig @@ -1,23 +1,35 @@ # -# Copyright (c) 2022 Darryl deHaan +# Copyright (c) 2024 The ZMK Contributors # SPDX-License-Identifier: MIT # -if BOARD_SOFLE_LEFT +if BOARD_EYELASH_SOFLE_LEFT config ZMK_KEYBOARD_NAME - default "Sofle" + default "Eyelash Sofle" config ZMK_SPLIT_ROLE_CENTRAL default y -endif # BOARD_SOFLE_LEFT +endif # BOARD_EYELASH_SOFLE_LEFT -if BOARD_SOFLE_LEFT || BOARD_SOFLE_RIGHT +if BOARD_EYELASH_SOFLE_LEFT || BOARD_EYELASH_SOFLE_RIGHT config BOARD - default "sofle" + default "eyelash_sofle" + +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + depends on (BOARD_EYELASH_SOFLE_LEFT || BOARD_EYELASH_SOFLE_RIGHT) + +config BOARD_ENABLE_DCDC_HV + bool "Enable High Voltage DCDC converter" + default y + select SOC_DCDC_NRF52X_HV + depends on (BOARD_EYELASH_SOFLE_LEFT || BOARD_EYELASH_SOFLE_RIGHT) config ZMK_SPLIT default y @@ -66,8 +78,6 @@ endchoice endif -endif # BOARD_SOFLE_LEFT || BOARD_SOFLE_RIGHT - if ZMK_BACKLIGHT config PWM @@ -78,15 +88,4 @@ config LED_PWM endif # ZMK_BACKLIGHT -config BOARD_ENABLE_DCDC - bool "Enable DCDC mode" - select SOC_DCDC_NRF52X - default y - depends on (BOARD_SOFLE_LEFT || BOARD_SOFLE_RIGHT) - -config BOARD_ENABLE_DCDC_HV - bool "Enable High Voltage DCDC converter" - default y - select SOC_DCDC_NRF52X_HV - depends on (BOARD_SOFLE_LEFT || BOARD_SOFLE_RIGHT) - +endif # BOARD_EYELASH_SOFLE_LEFT || BOARD_EYELASH_SOFLE_RIGHT diff --git a/config/boards/arm/sofle/board.cmake b/boards/arm/eyelash_sofle/board.cmake similarity index 100% rename from config/boards/arm/sofle/board.cmake rename to boards/arm/eyelash_sofle/board.cmake diff --git a/boards/arm/eyelash_sofle/eyelash_sofle-layouts.dtsi b/boards/arm/eyelash_sofle/eyelash_sofle-layouts.dtsi new file mode 100644 index 0000000..87636b1 --- /dev/null +++ b/boards/arm/eyelash_sofle/eyelash_sofle-layouts.dtsi @@ -0,0 +1,75 @@ +#include + +/ { + eyelash_sofle_layout: eyelash_sofle_layout { + compatible = "zmk,physical-layout"; + display-name = "Layout"; + transform = <&default_transform>; + keys // w h x y rot rx ry + = <&key_physical_attrs 100 100 0 50 0 0 0> + , <&key_physical_attrs 100 100 100 50 0 0 0> + , <&key_physical_attrs 100 100 200 12 0 0 0> + , <&key_physical_attrs 100 100 300 0 0 0 0> + , <&key_physical_attrs 100 100 400 12 0 0 0> + , <&key_physical_attrs 100 100 500 12 0 0 0> + , <&key_physical_attrs 100 100 775 12 0 0 0> + , <&key_physical_attrs 100 100 1050 12 0 0 0> + , <&key_physical_attrs 100 100 1150 12 0 0 0> + , <&key_physical_attrs 100 100 1250 0 0 0 0> + , <&key_physical_attrs 100 100 1350 12 0 0 0> + , <&key_physical_attrs 100 100 1450 50 0 0 0> + , <&key_physical_attrs 100 100 1550 50 0 0 0> + , <&key_physical_attrs 100 100 0 150 0 0 0> + , <&key_physical_attrs 100 100 100 150 0 0 0> + , <&key_physical_attrs 100 100 200 112 0 0 0> + , <&key_physical_attrs 100 100 300 100 0 0 0> + , <&key_physical_attrs 100 100 400 112 0 0 0> + , <&key_physical_attrs 100 100 500 112 0 0 0> + , <&key_physical_attrs 100 100 775 212 0 0 0> + , <&key_physical_attrs 100 100 1050 112 0 0 0> + , <&key_physical_attrs 100 100 1150 112 0 0 0> + , <&key_physical_attrs 100 100 1250 100 0 0 0> + , <&key_physical_attrs 100 100 1350 112 0 0 0> + , <&key_physical_attrs 100 100 1450 150 0 0 0> + , <&key_physical_attrs 100 100 1550 150 0 0 0> + , <&key_physical_attrs 100 100 0 250 0 0 0> + , <&key_physical_attrs 100 100 100 250 0 0 0> + , <&key_physical_attrs 100 100 200 212 0 0 0> + , <&key_physical_attrs 100 100 300 200 0 0 0> + , <&key_physical_attrs 100 100 400 212 0 0 0> + , <&key_physical_attrs 100 100 500 212 0 0 0> + , <&key_physical_attrs 100 100 675 112 0 0 0> + , <&key_physical_attrs 100 100 1050 212 0 0 0> + , <&key_physical_attrs 100 100 1150 212 0 0 0> + , <&key_physical_attrs 100 100 1250 200 0 0 0> + , <&key_physical_attrs 100 100 1350 212 0 0 0> + , <&key_physical_attrs 100 100 1450 250 0 0 0> + , <&key_physical_attrs 100 100 1550 250 0 0 0> + , <&key_physical_attrs 100 100 0 350 0 0 0> + , <&key_physical_attrs 100 100 100 350 0 0 0> + , <&key_physical_attrs 100 100 200 312 0 0 0> + , <&key_physical_attrs 100 100 300 300 0 0 0> + , <&key_physical_attrs 100 100 400 312 0 0 0> + , <&key_physical_attrs 100 100 500 312 0 0 0> + , <&key_physical_attrs 100 100 875 112 0 0 0> + , <&key_physical_attrs 100 100 1050 312 0 0 0> + , <&key_physical_attrs 100 100 1150 312 0 0 0> + , <&key_physical_attrs 100 100 1250 300 0 0 0> + , <&key_physical_attrs 100 100 1350 312 0 0 0> + , <&key_physical_attrs 100 100 1450 350 0 0 0> + , <&key_physical_attrs 100 100 1550 350 0 0 0> + , <&key_physical_attrs 100 100 650 338 0 0 0> + , <&key_physical_attrs 100 100 200 412 0 0 0> + , <&key_physical_attrs 100 100 300 400 0 0 0> + , <&key_physical_attrs 100 100 400 412 0 0 0> + , <&key_physical_attrs 100 100 550 412 3000 500 412> + , <&key_physical_attrs 100 100 675 362 3000 500 412> + , <&key_physical_attrs 100 100 775 112 0 0 0> + , <&key_physical_attrs 100 100 875 362 (-3000) 1150 412> + , <&key_physical_attrs 100 100 1000 412 (-3000) 1150 412> + , <&key_physical_attrs 100 100 1150 412 0 0 0> + , <&key_physical_attrs 100 100 1250 400 0 0 0> + , <&key_physical_attrs 100 100 1350 412 0 0 0> + ; + }; +}; \ No newline at end of file diff --git a/config/boards/arm/sofle/sofle.dtsi b/boards/arm/eyelash_sofle/eyelash_sofle.dtsi similarity index 62% rename from config/boards/arm/sofle/sofle.dtsi rename to boards/arm/eyelash_sofle/eyelash_sofle.dtsi index 9fbd737..ab533e4 100644 --- a/config/boards/arm/sofle/sofle.dtsi +++ b/boards/arm/eyelash_sofle/eyelash_sofle.dtsi @@ -10,27 +10,31 @@ #include #include +#include "eyelash_sofle-layouts.dtsi" + / { - model = "sofle"; - compatible = "sofle"; + model = "eyelash_sofle"; + compatible = "eyelashperipherals,eyelash_sofle"; chosen { zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; zmk,kscan = &kscan0; - zephyr,display = &oled; - zephyr,console = &cdc_acm_uart; + zmk,battery = &vbatt; zmk,underglow = &led_strip; - zmk,matrix-transform = &default_transform; + zmk,physical-layout = &default_layout; zmk,backlight = &backlight; + zmk,physical-layout = &eyelash_sofle_layout; }; left_encoder: encoder_left { compatible = "alps,ec11"; label = "LEFT_ENCODER"; resolution = <4>; - steps = <40>; + steps = <40>; + a-gpios = <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; + b-gpios = <&gpio1 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; status = "disabled"; }; @@ -38,12 +42,25 @@ compatible = "zmk,keymap-sensors"; sensors = <&left_encoder>; }; - + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + wakeup-source; + diode-direction = "col2row"; + row-gpios + = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio0 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + }; + default_transform: keymap_transform_0 { compatible = "zmk,matrix-transform"; columns = <14>; rows = <5>; - map = < + map = < RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,7) RC(0,8) RC(0,9) RC(0,10) RC(0,11) RC(0,12) RC(0,13) RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,7) RC(1,8) RC(1,9) RC(1,10) RC(1,11) RC(1,12) RC(1,13) RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,7) RC(2,8) RC(2,9) RC(2,10) RC(2,11) RC(2,12) RC(2,13) @@ -51,6 +68,25 @@ RC(4,0) RC(4,1) RC(4,2) RC(4,3) RC(4,4) RC(4,5) RC(4,7) RC(4,8) RC(4,9) RC(4,10) RC(4,11) RC(4,12) >; }; + + ext-power { + compatible = "zmk,ext-power-generic"; + label = "EXT_POWER"; + control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; + init-delay-ms = <50>; + }; + + vbatt: vbatt { + compatible = "zmk,battery-nrf-vddh"; + init-delay-ms = <50>; + }; + + backlight: pwmleds { + compatible = "pwm-leds"; + pwm_led_0 { + pwms = <&pwm0 0 PWM_MSEC(1) PWM_POLARITY_NORMAL>; + }; + }; }; &adc { @@ -113,21 +149,6 @@ }; &pinctrl { - i2c0_default: i2c0_default { - group1 { - psels = , - ; - }; - }; - - i2c0_sleep: i2c0_sleep { - group1 { - psels = , - ; - low-power-enable; - }; - }; - spi3_default: spi3_default { group1 { psels = ; // WS2812_VEXT_DATA @@ -140,30 +161,35 @@ low-power-enable; }; }; -}; -&i2c0 { - status = "okay"; + spi0_default: spi0_default { + group1 { + psels = , + , + ; + }; + }; - compatible = "nordic,nrf-twi"; - pinctrl-0 = <&i2c0_default>; - pinctrl-1 = <&i2c0_sleep>; - pinctrl-names = "default", "sleep"; - oled: ssd1306@3c { - compatible = "solomon,ssd1306fb"; - reg = <0x3c>; - label = "DISPLAY"; - width = <128>; - height = <32>; - segment-offset = <0>; - page-offset = <0>; - display-offset = <0>; - multiplex-ratio = <31>; - segment-remap; - com-invdir; - com-sequential; - prechargep = <0x22>; - }; + spi0_sleep: spi0_sleep { + group1 { + psels = , + , + ; + low-power-enable; + }; + }; + + pwm0_default: pwm0_default { + group1 { + psels = ; + }; + }; + pwm0_sleep: pwm0_sleep { + group1 { + psels = ; + low-power-enable; + }; + }; }; &spi3 { @@ -189,9 +215,23 @@ color-mapping = ; }; }; + &pwm0 { status = "okay"; pinctrl-0 = <&pwm0_default>; pinctrl-1 = <&pwm0_sleep>; pinctrl-names = "default", "sleep"; }; + +zephyr_udc0: &usbd { + compatible = "nordic,nrf-usbd"; + status = "okay"; +}; + +nice_view_spi: &spi0 { + compatible = "nordic,nrf-spim"; + pinctrl-0 = <&spi0_default>; + pinctrl-1 = <&spi0_sleep>; + pinctrl-names = "default", "sleep"; + cs-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; +}; \ No newline at end of file diff --git a/config/sofle.keymap b/boards/arm/eyelash_sofle/eyelash_sofle.keymap similarity index 90% rename from config/sofle.keymap rename to boards/arm/eyelash_sofle/eyelash_sofle.keymap index c21ce49..9e4f762 100644 --- a/config/sofle.keymap +++ b/boards/arm/eyelash_sofle/eyelash_sofle.keymap @@ -1,4 +1,3 @@ -#include #include #include #include @@ -6,14 +5,23 @@ #include #include +#include + +/* + + &mmv_input_listener { + input-processors = <&zip_xy_scaler 2 1>; + }; + + &msc_input_listener { + input-processors = <&zip_xy_scaler 2 1>; + }; + + */ + #define ZMK_MOUSE_DEFAULT_MOVE_VAL 1200 // 600 #define ZMK_MOUSE_DEFAULT_SCRL_VAL 20 // 10 -#define U_MS_U &mmv MOVE_UP -#define U_MS_D &mmv MOVE_DOWN -#define U_MS_L &mmv MOVE_LEFT -#define U_MS_R &mmv MOVE_RIGHT -#define ZMK_MOUSE_DEFAULT_MOVE_VAL 1200 // 600 -#define ZMK_MOUSE_DEFAULT_SCRL_VAL 20 // 10 + / { behaviors { @@ -70,7 +78,7 @@ layer_2 { bindings = < &kp TILDE &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &mmv MOVE_UP &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &trans -&trans &bt BT_CLR &bt BT_CLR_ALL &trans &trans &trans &mmv MOVE_DOWN &trans &trans &kp F11 &kp F12 &kp UNDER &kp PLUS +&studio_unlock &bt BT_CLR &bt BT_CLR_ALL &trans &trans &trans &mmv MOVE_DOWN &trans &trans &kp F11 &kp F12 &kp UNDER &kp PLUS &trans &out OUT_USB &out OUT_BLE &trans &trans &trans &mmv MOVE_LEFT &trans &trans &trans &trans &kp LBRC &kp RBRC &trans &sys_reset &trans &bootloader &trans &trans &mmv MOVE_RIGHT &trans &trans &sys_reset &soft_off &bootloader &trans &trans &trans &trans &trans &trans &trans &mkp LCLK &trans &trans &trans &trans &trans diff --git a/config/boards/arm/sofle/sofle.yaml b/boards/arm/eyelash_sofle/eyelash_sofle.yaml similarity index 66% rename from config/boards/arm/sofle/sofle.yaml rename to boards/arm/eyelash_sofle/eyelash_sofle.yaml index 9bb7e5f..af61e3f 100644 --- a/config/boards/arm/sofle/sofle.yaml +++ b/boards/arm/eyelash_sofle/eyelash_sofle.yaml @@ -1,6 +1,6 @@ -identifier: sofle -name: Solfe -url: https://github.com/tokyo2006/zmk-config-sofle +identifier: eyelash_sofle +name: Eyelash Sofle +url: https://github.com/a741725193/zmk-sofle type: mcu arch: arm toolchain: diff --git a/boards/arm/eyelash_sofle/eyelash_sofle.zmk.yml b/boards/arm/eyelash_sofle/eyelash_sofle.zmk.yml new file mode 100644 index 0000000..3ced4cb --- /dev/null +++ b/boards/arm/eyelash_sofle/eyelash_sofle.zmk.yml @@ -0,0 +1,15 @@ +file_format: "1" +id: eyelash_sofle +name: Eyelash Sofle +url: https://github.com/a741725193/zmk-sofle +type: board +arch: arm +features: + - keys + - display +outputs: + - usb + - ble +siblings: + - eyelash_sofle_left + - eyelash_sofle_right \ No newline at end of file diff --git a/boards/arm/eyelash_sofle/eyelash_sofle_left.dts b/boards/arm/eyelash_sofle/eyelash_sofle_left.dts new file mode 100644 index 0000000..645be84 --- /dev/null +++ b/boards/arm/eyelash_sofle/eyelash_sofle_left.dts @@ -0,0 +1,25 @@ +/* +* +* Copyright (c) 2021 Darryl deHaan +* SPDX-License-Identifier: MIT +* +*/ + +#include "eyelash_sofle.dtsi" + +&kscan0 { + col-gpios + = <&gpio0 22 GPIO_ACTIVE_HIGH> + , <&gpio0 29 GPIO_ACTIVE_HIGH> + , <&gpio0 3 GPIO_ACTIVE_HIGH> + , <&gpio0 28 GPIO_ACTIVE_HIGH> + , <&gpio0 30 GPIO_ACTIVE_HIGH> + , <&gpio0 21 GPIO_ACTIVE_HIGH> + , <&gpio0 23 GPIO_ACTIVE_HIGH> + ; +}; + +&left_encoder { + status = "okay"; +}; + diff --git a/config/boards/arm/sofle/sofle_left_defconfig b/boards/arm/eyelash_sofle/eyelash_sofle_left_defconfig similarity index 97% rename from config/boards/arm/sofle/sofle_left_defconfig rename to boards/arm/eyelash_sofle/eyelash_sofle_left_defconfig index 1ae3626..77004f3 100644 --- a/config/boards/arm/sofle/sofle_left_defconfig +++ b/boards/arm/eyelash_sofle/eyelash_sofle_left_defconfig @@ -5,7 +5,7 @@ CONFIG_SOC_SERIES_NRF52X=y CONFIG_SOC_NRF52840_QIAA=y -CONFIG_BOARD_SOFLE_LEFT=y +CONFIG_BOARD_EYELASH_SOFLE_LEFT=y CONFIG_ZMK_SLEEP=y diff --git a/boards/arm/eyelash_sofle/eyelash_sofle_right.dts b/boards/arm/eyelash_sofle/eyelash_sofle_right.dts new file mode 100644 index 0000000..b6484bd --- /dev/null +++ b/boards/arm/eyelash_sofle/eyelash_sofle_right.dts @@ -0,0 +1,24 @@ +/* +* +* Copyright (c) 2021 Darryl deHaan +* SPDX-License-Identifier: MIT +* +*/ +#include "eyelash_sofle.dtsi" + +&kscan0 { + col-gpios + = <&gpio0 22 GPIO_ACTIVE_HIGH> + , <&gpio0 29 GPIO_ACTIVE_HIGH> + , <&gpio0 3 GPIO_ACTIVE_HIGH> + , <&gpio0 28 GPIO_ACTIVE_HIGH> + , <&gpio0 30 GPIO_ACTIVE_HIGH> + , <&gpio0 21 GPIO_ACTIVE_HIGH> + , <&gpio0 23 GPIO_ACTIVE_HIGH> + ; +}; + +&default_transform { + col-offset = <7>; +}; + diff --git a/boards/arm/eyelash_sofle/eyelash_sofle_right_defconfig b/boards/arm/eyelash_sofle/eyelash_sofle_right_defconfig new file mode 100644 index 0000000..fd7be4d --- /dev/null +++ b/boards/arm/eyelash_sofle/eyelash_sofle_right_defconfig @@ -0,0 +1,40 @@ +# +# Copyright (c) 2024 The ZMK Contributors +# SPDX-License-Identifier: MIT +# + +CONFIG_SOC_SERIES_NRF52X=y +CONFIG_SOC_NRF52840_QIAA=y +CONFIG_BOARD_EYELASH_SOFLE_RIGHT=y + +# Enable 32kHz crystal +CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y +CONFIG_CLOCK_CONTROL_NRF_K32SRC_30PPM=y + +# Enable MPU +CONFIG_ARM_MPU=y + +# enable pinctrl +CONFIG_PINCTRL=y + +# enable GPIO +CONFIG_GPIO=y + +# Enable SPI +CONFIG_SPI=y + +# Enable writing to flash +CONFIG_USE_DT_CODE_PARTITION=y +CONFIG_BUILD_OUTPUT_UF2=y +CONFIG_MPU_ALLOW_FLASH_WRITE=y +CONFIG_NVS=y +CONFIG_SETTINGS_NVS=y +CONFIG_FLASH=y +CONFIG_FLASH_PAGE_LAYOUT=y +CONFIG_FLASH_MAP=y + +CONFIG_ZMK_USB=n +CONFIG_ZMK_BLE=y + +#EXT POWER +CONFIG_ZMK_EXT_POWER=y diff --git a/build.yaml b/build.yaml index c01ade1..3eb32f2 100644 --- a/build.yaml +++ b/build.yaml @@ -1,10 +1,13 @@ +--- include: - - - board: nice_nano_v2 + - board: eyelash_sofle_left + shield: nice_view + - board: eyelash_sofle_right + shield: nice_view_custom + - board: eyelash_sofle_left + shield: nice_view + snippet: studio-rpc-usb-uart + cmake-args: -DCONFIG_ZMK_STUDIO=y + artifact-name: eyelash_sofle_studio_left + - board: eyelash_sofle_left shield: settings_reset - - board: sofle_left - shield: nice_view_adapter nice_view - artifact-name: sofle_left_nice_view - - board: sofle_right - shield: nice_view_adapter nice_view_custom - artifact-name: sofle_right_nice_view diff --git a/config/Kconfig b/config/Kconfig deleted file mode 100644 index fb7a992..0000000 --- a/config/Kconfig +++ /dev/null @@ -1,12 +0,0 @@ -# -# Copyright (c) 2022 The ZMK Contributors -# SPDX-License-Identifier: MIT -# - -config BOARD_SOFLE_LEFT - bool - -config BOARD_SOFLE_RIGHT - bool - - diff --git a/config/boards/arm/sofle/Kconfig.board b/config/boards/arm/sofle/Kconfig.board deleted file mode 100644 index f0bde60..0000000 --- a/config/boards/arm/sofle/Kconfig.board +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (c) 2022 Darryl deHaan -# SPDX-License-Identifier: MIT -# - -config BOARD_SOFLE_LEFT - bool "sofle left" - depends on SOC_NRF52840_QIAA - - -config BOARD_SOFLE_RIGHT - bool "sofle right" - depends on SOC_NRF52840_QIAA - - - - diff --git a/config/boards/arm/sofle/sofle.conf b/config/boards/arm/sofle/sofle.conf deleted file mode 100644 index 3e44e03..0000000 --- a/config/boards/arm/sofle/sofle.conf +++ /dev/null @@ -1,29 +0,0 @@ -# go to sleep after one hour (1*60*60*1000ms) -# CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=3600000 - -# Turn on logging, and set ZMK logging to debug output -# CONFIG_ZMK_USB_LOGGING=n -# -# Copyright (c) 2022 Darryl deHaan -# SPDX-License-Identifier: MIT -# - -CONFIG_ZMK_SLEEP=y - - -CONFIG_WS2812_STRIP=y -CONFIG_ZMK_RGB_UNDERGLOW=y -CONFIG_ZMK_RGB_UNDERGLOW_EXT_POWER=y -CONFIG_ZMK_RGB_UNDERGLOW_ON_START=n -CONFIG_ZMK_RGB_UNDERGLOW_BRT_MAX=90 - -CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_IDLE=y -CONFIG_ZMK_RGB_UNDERGLOW_AUTO_OFF_USB=y -CONFIG_ZMK_RGB_UNDERGLOW_HUE_START=160 -CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=3 - -#CONFIG_ZMK_HID_CONSUMER_REPORT_USAGES_BASIC=y -CONFIG_ZMK_MOUSE=y - -CONFIG_BOARD_ENABLE_DCDC=y - diff --git a/config/boards/arm/sofle/sofle.zmk.yml b/config/boards/arm/sofle/sofle.zmk.yml deleted file mode 100644 index 7391313..0000000 --- a/config/boards/arm/sofle/sofle.zmk.yml +++ /dev/null @@ -1,15 +0,0 @@ -file_format: "1" -id: sofle -name: Sofle -url: https://github.com/tokyo2006/zmk-config-sofle -type: board -arch: arm -features: - - keys - - display -outputs: - - usb - - ble -siblings: - - sofle_left - - sofle_right \ No newline at end of file diff --git a/config/boards/arm/sofle/sofle_left.dts b/config/boards/arm/sofle/sofle_left.dts deleted file mode 100644 index e067872..0000000 --- a/config/boards/arm/sofle/sofle_left.dts +++ /dev/null @@ -1,85 +0,0 @@ -/* -* -* Copyright (c) 2021 Darryl deHaan -* SPDX-License-Identifier: MIT -* -*/ - -#include "sofle.dtsi" -#include - -/{ - chosen { - zmk,battery = &vbatt; - zmk,backlight = &backlight; - - }; - - kscan0: kscan { - compatible = "zmk,kscan-gpio-matrix"; - wakeup-source; - diode-direction = "col2row"; - row-gpios - = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio0 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio0 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - ; - - col-gpios - = <&gpio0 3 GPIO_ACTIVE_HIGH> - , <&gpio0 28 GPIO_ACTIVE_HIGH> - , <&gpio0 30 GPIO_ACTIVE_HIGH> - , <&gpio0 21 GPIO_ACTIVE_HIGH> - , <&gpio0 23 GPIO_ACTIVE_HIGH> - , <&gpio0 22 GPIO_ACTIVE_HIGH> - ; - }; - - ext-power { - compatible = "zmk,ext-power-generic"; - label = "EXT_POWER"; - control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; - init-delay-ms = <50>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-nrf-vddh"; - }; -backlight: pwmleds { - compatible = "pwm-leds"; - pwm_led_0 { - pwms = <&pwm0 0 PWM_MSEC(1) PWM_POLARITY_NORMAL>; - }; - }; - -}; - -&left_encoder { - a-gpios = <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; - b-gpios = <&gpio1 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; - status = "okay"; -}; -&pinctrl { - // Other pinctrl definitions for other hardware - pwm0_default: pwm0_default { - group1 { - psels = ; - }; - }; - pwm0_sleep: pwm0_sleep { - group1 { - psels = ; - low-power-enable; - - }; - }; -}; -&pwm0 { - status = "okay"; - pinctrl-0 = <&pwm0_default>; - pinctrl-1 = <&pwm0_sleep>; - pinctrl-names = "default", "sleep"; -}; - diff --git a/config/boards/arm/sofle/sofle_right.dts b/config/boards/arm/sofle/sofle_right.dts deleted file mode 100644 index fc36122..0000000 --- a/config/boards/arm/sofle/sofle_right.dts +++ /dev/null @@ -1,104 +0,0 @@ -/* -* -* Copyright (c) 2021 Darryl deHaan -* SPDX-License-Identifier: MIT -* -*/ -#include "sofle.dtsi" -#include - -/{ - chosen { - zmk,battery = &vbatt; - zmk,backlight = &backlight; - }; - - kscan0: kscan { - compatible = "zmk,kscan-gpio-matrix"; - wakeup-source; - diode-direction = "col2row"; - row-gpios - = <&gpio0 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio0 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio0 12 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio0 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - , <&gpio1 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> - ; - - col-gpios - = <&gpio0 22 GPIO_ACTIVE_HIGH> - , <&gpio0 29 GPIO_ACTIVE_HIGH> - , <&gpio0 3 GPIO_ACTIVE_HIGH> - , <&gpio0 28 GPIO_ACTIVE_HIGH> - , <&gpio0 30 GPIO_ACTIVE_HIGH> - , <&gpio0 21 GPIO_ACTIVE_HIGH> - , <&gpio0 23 GPIO_ACTIVE_HIGH> - ; - }; - - ext-power { - compatible = "zmk,ext-power-generic"; - label = "EXT_POWER"; - control-gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>; - init-delay-ms = <50>; - }; - - vbatt: vbatt { - compatible = "zmk,battery-nrf-vddh"; - init-delay-ms = <50>; - }; -backlight: pwmleds { - compatible = "pwm-leds"; - pwm_led_0 { - pwms = <&pwm0 0 PWM_MSEC(1) PWM_POLARITY_NORMAL>; - }; - }; - -}; -&default_transform { - col-offset = <7>; -}; - -&spi3 { - compatible = "nordic,nrf-spim"; - status = "okay"; - - pinctrl-0 = <&spi3_default>; - pinctrl-1 = <&spi3_sleep>; - pinctrl-names = "default", "sleep"; - - led_strip: ws2812@0 { - compatible = "worldsemi,ws2812-spi"; - - /* SPI */ - reg = <0>; /* ignored, but necessary for SPI bindings */ - spi-max-frequency = <4000000>; - - /* WS2812 */ - chain-length = <7>; /* 6 keys have underglow at the moment */ - spi-one-frame = <0x70>; - spi-zero-frame = <0x40>; - - color-mapping = ; - }; -}; -&pinctrl { - // Other pinctrl definitions for other hardware - pwm0_default: pwm0_default { - group1 { - psels = ; - }; - }; - pwm0_sleep: pwm0_sleep { - group1 { - psels = ; - low-power-enable; - }; - }; -}; -&pwm0 { - status = "okay"; - pinctrl-0 = <&pwm0_default>; - pinctrl-1 = <&pwm0_sleep>; - pinctrl-names = "default", "sleep"; -}; diff --git a/config/boards/arm/sofle/sofle_right_defconfig b/config/boards/arm/sofle/sofle_right_defconfig deleted file mode 100644 index 02c2cfd..0000000 --- a/config/boards/arm/sofle/sofle_right_defconfig +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright (c) 2022 Darryl deHaan -# SPDX-License-Identifier: MIT -# - -CONFIG_SOC_SERIES_NRF52X=y -CONFIG_SOC_NRF52840_QIAA=y -CONFIG_BOARD_SOFLE_RIGHT=y -CONFIG_ZMK_SLEEP=y - - - - -# Enable MPU -CONFIG_ARM_MPU=y - -# enable pinctrl -CONFIG_PINCTRL=y - -# enable GPIO -CONFIG_GPIO=y - -# Enable SPI -CONFIG_SPI=y - -# Enable writing to flash -CONFIG_USE_DT_CODE_PARTITION=y -CONFIG_BUILD_OUTPUT_UF2=y -CONFIG_MPU_ALLOW_FLASH_WRITE=y -CONFIG_NVS=y -CONFIG_SETTINGS_NVS=y -CONFIG_FLASH=y -CONFIG_FLASH_PAGE_LAYOUT=y -CONFIG_FLASH_MAP=y - -# Enable 32kHz crystal -CONFIG_CLOCK_CONTROL_NRF_K32SRC_XTAL=y -CONFIG_CLOCK_CONTROL_NRF_K32SRC_30PPM=y - -CONFIG_ZMK_USB=n -CONFIG_ZMK_BLE=y - -# enable display drivers -CONFIG_ZMK_DISPLAY=y - - - - -#CONFIG_ZMK_DISPLAY_WORK_QUEUE_DEDICATED=y -#CONFIG_ZMK_DISPLAY_DEDICATED_THREAD_STACK_SIZE=2048 -#CONFIG_LV_Z_BITS_PER_PIXEL=1 -#CONFIG_LV_COLOR_DEPTH_1=y -#CONFIG_LV_DPI_DEF=145 -#CONFIG_LV_Z_VDB_SIZE=100 -#CONFIG_LV_USE_THEME_MONO=y -#CONFIG_LV_COLOR_CHROMA_KEY_HEX=0x00FF00 -#CONFIG_ZMK_LV_FONT_DEFAULT_SMALL_MONTSERRAT_16=y -#CONFIG_LV_FONT_MONTSERRAT_26=y -#CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26=y - -#EXT POWER -CONFIG_ZMK_EXT_POWER=y - -#BLE-passkey -CONFIG_ZMK_BLE_PASSKEY_ENTRY=n - -#BLE-clean -CONFIG_ZMK_BLE_CLEAR_BONDS_ON_START=n - -#usb-name -CONFIG_USB_DEVICE_MANUFACTURER="sofle" - -CONFIG_BT_CTLR_TX_PWR_PLUS_8=y -CONFIG_ZMK_HID_REPORT_TYPE_NKRO=n -CONFIG_ZMK_MOUSE=y - diff --git a/config/boards/shields/nice_view_adapter/Kconfig.defconfig b/config/boards/shields/nice_view_adapter/Kconfig.defconfig deleted file mode 100644 index e69de29..0000000 diff --git a/config/boards/shields/nice_view_adapter/Kconfig.shield b/config/boards/shields/nice_view_adapter/Kconfig.shield deleted file mode 100644 index e465bd0..0000000 --- a/config/boards/shields/nice_view_adapter/Kconfig.shield +++ /dev/null @@ -1,2 +0,0 @@ -config SHIELD_NICE_VIEW_ADAPTER - def_bool $(shields_list_contains,nice_view_adapter) \ No newline at end of file diff --git a/config/boards/shields/nice_view_adapter/boards/sofle_left.overlay b/config/boards/shields/nice_view_adapter/boards/sofle_left.overlay deleted file mode 100644 index 982bc32..0000000 --- a/config/boards/shields/nice_view_adapter/boards/sofle_left.overlay +++ /dev/null @@ -1,29 +0,0 @@ -&pinctrl { - spi0_default: spi0_default { - group1 { - psels = , - , - ; - }; - }; - spi0_sleep: spi0_sleep { - group1 { - psels = , - , - ; - low-power-enable; - }; - }; -}; - -nice_view_spi: &spi0 { - compatible = "nordic,nrf-spim"; - pinctrl-0 = <&spi0_default>; - pinctrl-1 = <&spi0_sleep>; - pinctrl-names = "default", "sleep"; - cs-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; -}; - -&i2c0 { - status = "disabled"; -}; \ No newline at end of file diff --git a/config/boards/shields/nice_view_adapter/boards/sofle_right.overlay b/config/boards/shields/nice_view_adapter/boards/sofle_right.overlay deleted file mode 100644 index 982bc32..0000000 --- a/config/boards/shields/nice_view_adapter/boards/sofle_right.overlay +++ /dev/null @@ -1,29 +0,0 @@ -&pinctrl { - spi0_default: spi0_default { - group1 { - psels = , - , - ; - }; - }; - spi0_sleep: spi0_sleep { - group1 { - psels = , - , - ; - low-power-enable; - }; - }; -}; - -nice_view_spi: &spi0 { - compatible = "nordic,nrf-spim"; - pinctrl-0 = <&spi0_default>; - pinctrl-1 = <&spi0_sleep>; - pinctrl-names = "default", "sleep"; - cs-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; -}; - -&i2c0 { - status = "disabled"; -}; \ No newline at end of file diff --git a/config/boards/shields/nice_view_adapter/nice_view_adapter.conf b/config/boards/shields/nice_view_adapter/nice_view_adapter.conf deleted file mode 100644 index 0c70257..0000000 --- a/config/boards/shields/nice_view_adapter/nice_view_adapter.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_SSD1306=n -CONFIG_ZMK_DISPLAY_STATUS_SCREEN_CUSTOM=y diff --git a/config/boards/shields/nice_view_adapter/nice_view_adapter.overlay b/config/boards/shields/nice_view_adapter/nice_view_adapter.overlay deleted file mode 100644 index e69de29..0000000 diff --git a/config/boards/shields/nice_view_adapter/nice_view_adapter.zmk.yml b/config/boards/shields/nice_view_adapter/nice_view_adapter.zmk.yml deleted file mode 100644 index 3d44235..0000000 --- a/config/boards/shields/nice_view_adapter/nice_view_adapter.zmk.yml +++ /dev/null @@ -1,7 +0,0 @@ -file_format: "1" -id: nice_view_adapter -name: nice!view adapter -type: shield -url: https://nicekeyboards.com/nice-view -requires: [i2c_oled] -exposes: [nice_view_header] \ No newline at end of file diff --git a/config/sofle.conf b/config/eyelash_sofle.conf similarity index 96% rename from config/sofle.conf rename to config/eyelash_sofle.conf index 98bb5fe..724c9a6 100644 --- a/config/sofle.conf +++ b/config/eyelash_sofle.conf @@ -2,7 +2,7 @@ CONFIG_ZMK_IDLE_SLEEP_TIMEOUT=3600000 # Turn on logging, and set ZMK logging to debug output -# CONFIG_ZMK_USB_LOGGING=n +CONFIG_ZMK_USB_LOGGING=n # # Copyright (c) 2022 Darryl deHaan # SPDX-License-Identifier: MIT @@ -42,7 +42,3 @@ CONFIG_ZMK_BACKLIGHT=y CONFIG_ZMK_BACKLIGHT_BRT_START=100 CONFIG_ZMK_BACKLIGHT_ON_START=y CONFIG_ZMK_BACKLIGHT_AUTO_OFF_IDLE=n - - - - diff --git a/config/sofle.json b/config/eyelash_sofle.json similarity index 99% rename from config/sofle.json rename to config/eyelash_sofle.json index af80b4b..db61d03 100644 --- a/config/sofle.json +++ b/config/eyelash_sofle.json @@ -1,6 +1,6 @@ { - "id": "sofle", - "name": "Sofle", + "id": "eyelash_sofle", + "name": "Eyelash Sofle", "layouts": { "default_layout": { "name": "default_layout", diff --git a/config/eyelash_sofle.keymap b/config/eyelash_sofle.keymap new file mode 100644 index 0000000..9e4f762 --- /dev/null +++ b/config/eyelash_sofle.keymap @@ -0,0 +1,90 @@ +#include +#include +#include +#include +#include +#include + +#include + +/* + + &mmv_input_listener { + input-processors = <&zip_xy_scaler 2 1>; + }; + + &msc_input_listener { + input-processors = <&zip_xy_scaler 2 1>; + }; + + */ + +#define ZMK_MOUSE_DEFAULT_MOVE_VAL 1200 // 600 +#define ZMK_MOUSE_DEFAULT_SCRL_VAL 20 // 10 + + +/ { + behaviors { + mmv { + acceleration-exponent = <1>; // 1 + time-to-max-speed-ms = <900>; // 40 + delay-ms = <0>; // 0 + }; + + msc { + acceleration-exponent = <1>; // 0 + time-to-max-speed-ms = <400>; // 500 + delay-ms = <0>; // 10 + }; + }; + + scroll_encoder: scroll_encoder { + compatible = "zmk,behavior-sensor-rotate"; + #sensor-binding-cells = <0>; + bindings = <&msc SCRL_DOWN>, <&msc SCRL_UP>; + + tap-ms = <30>; + }; + + keymap { + compatible = "zmk,keymap"; + + layer0 { + bindings = < +&kp ESC &kp N1 &kp N2 &kp N3 &kp N4 &kp N5 &kp UP_ARROW &kp N6 &kp N7 &kp N8 &kp N9 &kp N0 &kp BACKSPACE +&kp TAB &kp Q &kp W &kp E &kp R &kp T &kp DOWN_ARROW &kp Y &kp U &kp I &kp O &kp P &kp BSLH +&kp CAPS &kp A &kp S &kp D &kp F &kp G &kp LEFT_ARROW &kp H &kp J &kp K &kp L &kp SEMI &kp APOS +&kp LSHFT &kp Z &kp X &kp C &kp V &kp B &kp RIGHT_ARROW &kp N &kp M &kp COMMA &kp DOT &kp FSLH &kp ENTER +&kp C_MUTE &kp LCTRL &kp LEFT_GUI &kp LEFT_ALT &mo 1 &kp SPACE &kp ENTER &kp SPACE &kp ENTER &mo 2 &kp RIGHT_SHIFT &kp DELETE + >; + + sensor-bindings = <&inc_dec_kp C_VOLUME_UP C_VOL_DN>; + display-name = "LAYER0"; + }; + + layer_1 { + bindings = < +&kp GRAVE &kp F1 &kp F2 &kp F3 &kp F4 &kp F5 &mmv MOVE_UP &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &trans +&trans &kp GRAVE &mkp LCLK &mkp MCLK &mkp RCLK &mkp MB4 &mmv MOVE_DOWN &kp PG_UP &kp END &kp UP &kp HOME &kp MINUS &kp EQUAL +&trans &kp TILDE &trans &trans &trans &mkp MB5 &mmv MOVE_LEFT &kp PG_DN &kp LEFT &kp DOWN &kp RIGHT &kp LEFT_BRACKET &kp RIGHT_BRACKET +&trans &rgb_ug RGB_OFF &rgb_ug RGB_ON &rgb_ug RGB_EFF &rgb_ug RGB_EFR &rgb_ug RGB_SPI &mmv MOVE_RIGHT &rgb_ug RGB_BRI &rgb_ug RGB_BRD &kp INSERT &kp F11 &kp F12 &trans +&kp C_MUTE &trans &trans &trans &trans &trans &mkp LCLK &trans &trans &trans &trans &trans + >; + + display-name = "layer1"; + sensor-bindings = <&scroll_encoder>; + }; + + layer_2 { + bindings = < +&kp TILDE &bt BT_SEL 0 &bt BT_SEL 1 &bt BT_SEL 2 &bt BT_SEL 3 &bt BT_SEL 4 &mmv MOVE_UP &kp F6 &kp F7 &kp F8 &kp F9 &kp F10 &trans +&studio_unlock &bt BT_CLR &bt BT_CLR_ALL &trans &trans &trans &mmv MOVE_DOWN &trans &trans &kp F11 &kp F12 &kp UNDER &kp PLUS +&trans &out OUT_USB &out OUT_BLE &trans &trans &trans &mmv MOVE_LEFT &trans &trans &trans &trans &kp LBRC &kp RBRC +&trans &sys_reset &trans &bootloader &trans &trans &mmv MOVE_RIGHT &trans &trans &sys_reset &soft_off &bootloader &trans +&trans &trans &trans &trans &trans &trans &mkp LCLK &trans &trans &trans &trans &trans + >; + + sensor-bindings = <&scroll_encoder>; + }; + }; +}; diff --git a/config/west.yml b/config/west.yml index dfc20f8..d30075c 100644 --- a/config/west.yml +++ b/config/west.yml @@ -1,16 +1,25 @@ manifest: remotes: - name: zmkfirmware - url-base: https://github.com/petejohanson + url-base: https://github.com/zmkfirmware + # Additional modules containing boards/shields/custom code can be listed here as well. + # See: + # - https://zmk.dev/docs/features/modules + # - https://docs.zephyrproject.org/3.5.0/develop/west/manifest.html#projects - name: gpeye url-base: https://github.com/GPeye + - name: petejohanson + url-base: https://github.com/petejohanson projects: - - name: zmk - remote: zmkfirmware - revision: feat/pointers-move-scroll - import: app/west.yml - - name: urchin-peripheral-animation + - name: eyelash_sofle + url: https://github.com/a741725193/zmk-sofle + revision: refactor + - name: mario-peripheral-animation remote: gpeye revision: main + - name: zmk + remote: petejohanson + revision: feat/pointers-with-input-processors + import: app/west.yml self: path: config diff --git a/zephyr/module.yml b/zephyr/module.yml new file mode 100644 index 0000000..165b623 --- /dev/null +++ b/zephyr/module.yml @@ -0,0 +1,3 @@ +build: + settings: + board_root: .