diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 932dbb838..83941f12b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,25 +2,9 @@ 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 000000000..3411ab01a --- /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/build.yaml b/build.yaml index b801c8762..b3cb01c0c 100644 --- a/build.yaml +++ b/build.yaml @@ -4,8 +4,13 @@ include: - board: nice_nano_v2 shield: settings_reset - board: corne_left - shield: nice_view_adapter nice_view + shield: nice_view artifact-name: corne_left_nice_view - board: corne_right - shield: nice_view_adapter nice_view_custom + shield: nice_view_custom artifact-name: corne_right_nice_view + - board: corne_left + shield: nice_view + snippet: studio-rpc-usb-uart + cmake-args: -DCONFIG_ZMK_STUDIO=y -DCONFIG_ZMK_STUDIO_LOCKING=n + artifact-name: eyelash_corne_studio_left diff --git a/config/boards/arm/corne/Kconfig.defconfig b/config/boards/arm/corne/Kconfig.defconfig index 803c22791..771857770 100644 --- a/config/boards/arm/corne/Kconfig.defconfig +++ b/config/boards/arm/corne/Kconfig.defconfig @@ -16,6 +16,17 @@ endif # BOARD_CORNE_LEFT if BOARD_CORNE_LEFT || BOARD_CORNE_RIGHT +config BOARD_ENABLE_DCDC + bool "Enable DCDC mode" + select SOC_DCDC_NRF52X + default y + +config BOARD_ENABLE_DCDC_HV + bool "Enable High Voltage DCDC converter" + default y + select SOC_DCDC_NRF52X_HV + depends on (BOARD_CORNE_LEFT || BOARD_CORNE_RIGHT) + config BOARD default "corne" @@ -35,36 +46,25 @@ config USB_DEVICE_STACK endif # USB -if ZMK_DISPLAY +if USB -config I2C +config USB_NRFX default y -config SSD1306 +config USB_DEVICE_STACK default y -choice ZMK_DISPLAY_WORK_QUEUE - default ZMK_DISPLAY_WORK_QUEUE_DEDICATED -endchoice - -endif - -if SSD1306 - -config LV_Z_VDB_SIZE - default 64 +endif # USB -config LV_DPI_DEF - default 148 +if ZMK_BACKLIGHT -config LV_Z_BITS_PER_PIXEL - default 1 +config PWM + default y -choice LV_COLOR_DEPTH - default LV_COLOR_DEPTH_1 -endchoice +config LED_PWM + default y -endif +endif # ZMK_BACKLIGHT endif # BOARD_CORNE_LEFT || BOARD_CORNE_RIGHT diff --git a/config/boards/arm/corne/corne-layouts.dtsi b/config/boards/arm/corne/corne-layouts.dtsi new file mode 100644 index 000000000..f8b91c89c --- /dev/null +++ b/config/boards/arm/corne/corne-layouts.dtsi @@ -0,0 +1,61 @@ +#include + +/ { + corne_layout: corne_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 88 0 0 0> + , <&key_physical_attrs 100 100 100 88 0 0 0> + , <&key_physical_attrs 100 100 200 50 0 0 0> + , <&key_physical_attrs 100 100 300 38 0 0 0> + , <&key_physical_attrs 100 100 400 50 0 0 0> + , <&key_physical_attrs 100 100 500 75 0 0 0> + , <&key_physical_attrs 100 100 775 0 0 0 0> + , <&key_physical_attrs 100 100 1050 75 0 0 0> + , <&key_physical_attrs 100 100 1150 50 0 0 0> + , <&key_physical_attrs 100 100 1250 38 0 0 0> + , <&key_physical_attrs 100 100 1350 50 0 0 0> + , <&key_physical_attrs 100 100 1450 88 0 0 0> + , <&key_physical_attrs 100 100 1550 88 0 0 0> + , <&key_physical_attrs 100 100 0 188 0 0 0> + , <&key_physical_attrs 100 100 100 188 0 0 0> + , <&key_physical_attrs 100 100 200 150 0 0 0> + , <&key_physical_attrs 100 100 300 138 0 0 0> + , <&key_physical_attrs 100 100 400 150 0 0 0> + , <&key_physical_attrs 100 100 500 175 0 0 0> + , <&key_physical_attrs 100 100 775 200 0 0 0> + , <&key_physical_attrs 100 100 1050 175 0 0 0> + , <&key_physical_attrs 100 100 1150 150 0 0 0> + , <&key_physical_attrs 100 100 1250 138 0 0 0> + , <&key_physical_attrs 100 100 1350 150 0 0 0> + , <&key_physical_attrs 100 100 1450 188 0 0 0> + , <&key_physical_attrs 100 100 1550 188 0 0 0> + , <&key_physical_attrs 100 100 0 288 0 0 0> + , <&key_physical_attrs 100 100 100 288 0 0 0> + , <&key_physical_attrs 100 100 200 250 0 0 0> + , <&key_physical_attrs 100 100 300 238 0 0 0> + , <&key_physical_attrs 100 100 400 250 0 0 0> + , <&key_physical_attrs 100 100 500 275 0 0 0> + , <&key_physical_attrs 100 100 675 100 0 0 0> + , <&key_physical_attrs 100 100 1050 275 0 0 0> + , <&key_physical_attrs 100 100 1150 250 0 0 0> + , <&key_physical_attrs 100 100 1250 238 0 0 0> + , <&key_physical_attrs 100 100 1350 250 0 0 0> + , <&key_physical_attrs 100 100 1450 288 0 0 0> + , <&key_physical_attrs 100 100 1550 288 0 0 0> + , <&key_physical_attrs 100 100 650 325 0 0 0> + , <&key_physical_attrs 100 100 400 400 0 0 0> + , <&key_physical_attrs 100 100 550 400 3000 500 400> + , <&key_physical_attrs 100 150 675 350 3000 500 400> + , <&key_physical_attrs 100 100 875 100 0 0 0> + , <&key_physical_attrs 100 150 875 350 (-3000) 1150 400> + , <&key_physical_attrs 100 100 1000 400 (-3000) 1150 400> + , <&key_physical_attrs 100 100 1150 400 0 0 0> + , <&key_physical_attrs 100 100 775 100 0 0 0> + ; + }; +}; diff --git a/config/boards/arm/corne/corne.dtsi b/config/boards/arm/corne/corne.dtsi index a7a0fcdab..7ff685457 100644 --- a/config/boards/arm/corne/corne.dtsi +++ b/config/boards/arm/corne/corne.dtsi @@ -9,24 +9,28 @@ #include #include #include +#include "corne-layouts.dtsi" / { model = "corne"; - compatible = "corne"; + compatible = "peripherals,corne"; chosen { zephyr,code-partition = &code_partition; zephyr,sram = &sram0; zephyr,flash = &flash0; zmk,kscan = &kscan0; - zephyr,display = &oled; + zmk,battery = &vbatt; zephyr,console = &cdc_acm_uart; zmk,underglow = &led_strip; - zmk,matrix-transform = &default_transform; + zmk,physical-layout = &corne_layout; + zmk,backlight = &backlight; }; left_encoder: encoder_left { compatible = "alps,ec11"; + a-gpios = <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; + b-gpios = <&gpio1 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; label = "LEFT_ENCODER"; resolution = <4>; status = "disabled"; @@ -36,7 +40,20 @@ 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>; @@ -49,6 +66,26 @@ RC(4,7) >; }; + + 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>; + }; + }; + + }; &adc { @@ -74,6 +111,10 @@ }; }; +zephyr_udc0: &usbd { + status = "okay"; +}; + &flash0 { /* * For more information, see: @@ -111,17 +152,32 @@ }; &pinctrl { - i2c0_default: i2c0_default { + + spi0_default: spi0_default { group1 { - psels = , - ; + psels = , + , + ; }; }; - i2c0_sleep: i2c0_sleep { + spi0_sleep: spi0_sleep { group1 { - psels = , - ; + psels = , + , + ; + low-power-enable; + }; + }; + + pwm0_default: pwm0_default { + group1 { + psels = ; + }; + }; + pwm0_sleep: pwm0_sleep { + group1 { + psels = ; low-power-enable; }; }; @@ -140,30 +196,6 @@ }; }; -&i2c0 { - status = "okay"; - - 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>; - }; -}; - &spi3 { compatible = "nordic,nrf-spim"; status = "okay"; @@ -186,4 +218,19 @@ color-mapping = ; }; -}; \ No newline at end of file +}; + +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>; +}; + +&pwm0 { + status = "okay"; + pinctrl-0 = <&pwm0_default>; + pinctrl-1 = <&pwm0_sleep>; + pinctrl-names = "default", "sleep"; +}; diff --git a/config/boards/arm/corne/corne_left.dts b/config/boards/arm/corne/corne_left.dts index 6712a34c1..56fa75805 100644 --- a/config/boards/arm/corne/corne_left.dts +++ b/config/boards/arm/corne/corne_left.dts @@ -7,49 +7,17 @@ #include "corne.dtsi" -/{ - chosen { - zmk,battery = &vbatt; - - }; - - 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"; - }; - +&kscan0 { + 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> + ; }; &left_encoder { - a-gpios = <&gpio1 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; - b-gpios = <&gpio1 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; status = "okay"; -}; \ No newline at end of file +}; diff --git a/config/boards/arm/corne/corne_left_defconfig b/config/boards/arm/corne/corne_left_defconfig index 0b0fe7dbf..01983497c 100644 --- a/config/boards/arm/corne/corne_left_defconfig +++ b/config/boards/arm/corne/corne_left_defconfig @@ -41,21 +41,6 @@ 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 diff --git a/config/boards/arm/corne/corne_right.dts b/config/boards/arm/corne/corne_right.dts index 142aa1cdb..9de20a5b0 100644 --- a/config/boards/arm/corne/corne_right.dts +++ b/config/boards/arm/corne/corne_right.dts @@ -6,71 +6,18 @@ */ #include "corne.dtsi" -/{ - chosen { - zmk,battery = &vbatt; - }; - - 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>; - }; - +&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>; }; - -&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 = ; - }; -}; \ No newline at end of file diff --git a/config/boards/shields/nice_view/CMakeLists.txt b/config/boards/shields/nice_view/CMakeLists.txt deleted file mode 100644 index 694242b2e..000000000 --- a/config/boards/shields/nice_view/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -if(CONFIG_ZMK_DISPLAY AND CONFIG_NICE_VIEW_WIDGET_STATUS) - zephyr_library_include_directories(${CMAKE_SOURCE_DIR}/include) - zephyr_library_sources(custom_status_screen.c) - zephyr_library_sources(widgets/bolt.c) - zephyr_library_sources(widgets/util.c) - - if(NOT CONFIG_ZMK_SPLIT OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL) - zephyr_library_sources(widgets/status.c) - else() - zephyr_library_sources(widgets/art.c) - zephyr_library_sources(widgets/peripheral_status.c) - endif() -endif() diff --git a/config/boards/shields/nice_view/Kconfig.defconfig b/config/boards/shields/nice_view/Kconfig.defconfig deleted file mode 100644 index c31cec89f..000000000 --- a/config/boards/shields/nice_view/Kconfig.defconfig +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (c) 2023 The ZMK Contributors -# SPDX-License-Identifier: MIT - -if SHIELD_NICE_VIEW - -config LV_Z_VDB_SIZE - default 100 - -config LV_DPI_DEF - default 161 - -config LV_Z_BITS_PER_PIXEL - default 1 - -choice LV_COLOR_DEPTH - default LV_COLOR_DEPTH_1 -endchoice - -choice ZMK_DISPLAY_WORK_QUEUE - default ZMK_DISPLAY_WORK_QUEUE_DEDICATED -endchoice - -choice ZMK_DISPLAY_STATUS_SCREEN - default ZMK_DISPLAY_STATUS_SCREEN_CUSTOM -endchoice - -config LV_Z_MEM_POOL_SIZE - default 4096 if ZMK_DISPLAY_STATUS_SCREEN_CUSTOM - -config ZMK_DISPLAY_STATUS_SCREEN_CUSTOM - imply NICE_VIEW_WIDGET_STATUS - -config NICE_VIEW_WIDGET_STATUS - bool "Custom nice!view status widget" - select LV_FONT_MONTSERRAT_16 - select LV_USE_IMG - select LV_USE_CANVAS - -config NICE_VIEW_WIDGET_INVERTED - bool "Invert custom status widget colors" - -if !ZMK_SPLIT || ZMK_SPLIT_ROLE_CENTRAL - -config NICE_VIEW_WIDGET_STATUS - select LV_FONT_MONTSERRAT_18 - select LV_FONT_MONTSERRAT_14 - select LV_FONT_UNSCII_8 - select ZMK_WPM - -endif # !ZMK_SPLIT || ZMK_SPLIT_ROLE_CENTRAL - -config ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN - select LV_FONT_MONTSERRAT_26 - -endif # SHIELD_NICE_VIEW diff --git a/config/boards/shields/nice_view/Kconfig.shield b/config/boards/shields/nice_view/Kconfig.shield deleted file mode 100644 index fbe4fde87..000000000 --- a/config/boards/shields/nice_view/Kconfig.shield +++ /dev/null @@ -1,5 +0,0 @@ -# Copyright (c) 2022 The ZMK Contributors -# SPDX-License-Identifier: MIT - -config SHIELD_NICE_VIEW - def_bool $(shields_list_contains,nice_view) diff --git a/config/boards/shields/nice_view/README.md b/config/boards/shields/nice_view/README.md deleted file mode 100644 index 00abfbfab..000000000 --- a/config/boards/shields/nice_view/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# nice!view - -The nice!view is a low-power, high refresh rate display meant to replace I2C OLEDs traditionally used. - -This shield requires that an `&nice_view_spi` labeled SPI bus is provided with _at least_ MOSI, SCK, and CS pins defined. - -## Disable custom widget - -The nice!view shield includes a custom vertical widget. To use the built-in ZMK one, add the following item to your `.conf` file: - -``` -CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=y -CONFIG_ZMK_LV_FONT_DEFAULT_SMALL_MONTSERRAT_26=y -CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26=y -``` diff --git a/config/boards/shields/nice_view/custom_status_screen.c b/config/boards/shields/nice_view/custom_status_screen.c deleted file mode 100644 index c08da0eb5..000000000 --- a/config/boards/shields/nice_view/custom_status_screen.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include "widgets/status.h" - -#include -LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); - -#if IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_STATUS) -static struct zmk_widget_status status_widget; -#endif - -lv_obj_t *zmk_display_status_screen() { - - lv_obj_t *screen; - screen = lv_obj_create(NULL); - -#if IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_STATUS) - zmk_widget_status_init(&status_widget, screen); - lv_obj_align(zmk_widget_status_obj(&status_widget), LV_ALIGN_TOP_LEFT, 0, 0); -#endif - - return screen; -} diff --git a/config/boards/shields/nice_view/nice_view.conf b/config/boards/shields/nice_view/nice_view.conf deleted file mode 100644 index e6f9158f1..000000000 --- a/config/boards/shields/nice_view/nice_view.conf +++ /dev/null @@ -1,4 +0,0 @@ -# Enable nice!view -CONFIG_ZMK_DISPLAY=y -# Disable idle blanking -CONFIG_ZMK_DISPLAY_BLANK_ON_IDLE=n diff --git a/config/boards/shields/nice_view/nice_view.overlay b/config/boards/shields/nice_view/nice_view.overlay deleted file mode 100644 index e1965569f..000000000 --- a/config/boards/shields/nice_view/nice_view.overlay +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2022 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -&nice_view_spi { - status = "okay"; - nice_view: ls0xx@0 { - compatible = "sharp,ls0xx"; - spi-max-frequency = <1000000>; - reg = <0>; - width = <160>; - height = <68>; - }; -}; - -/ { - chosen { - zephyr,display = &nice_view; - }; -}; diff --git a/config/boards/shields/nice_view/nice_view.zmk.yml b/config/boards/shields/nice_view/nice_view.zmk.yml deleted file mode 100644 index 04b98a8ac..000000000 --- a/config/boards/shields/nice_view/nice_view.zmk.yml +++ /dev/null @@ -1,8 +0,0 @@ -file_format: "1" -id: nice_view -name: nice!view -type: shield -url: https://nicekeyboards.com/nice-view -requires: [nice_view_header] -features: - - display diff --git a/config/boards/shields/nice_view/widgets/art.c b/config/boards/shields/nice_view/widgets/art.c deleted file mode 100644 index 29a00eedd..000000000 --- a/config/boards/shields/nice_view/widgets/art.c +++ /dev/null @@ -1,442 +0,0 @@ -/* - * - * Copyright (c) 2023 Collin Hodge - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_BALLOON -#define LV_ATTRIBUTE_IMG_BALLOON -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_BALLOON uint8_t - balloon_map[] = { -#if CONFIG_NICE_VIEW_WIDGET_INVERTED - 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ - 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ -#else - 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ -#endif - - 0xfe, 0xaa, 0x0a, 0x2a, 0x9f, 0xff, 0xff, 0xff, 0xfa, 0xea, 0xaa, 0xae, 0xba, 0xff, 0xff, - 0xfb, 0xff, 0xf0, 0xf1, 0x55, 0x05, 0x15, 0x47, 0xff, 0xff, 0xff, 0xf5, 0xd5, 0x55, 0x5f, - 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xa4, 0xaa, 0x8a, 0x8a, 0xa1, 0xff, 0xff, 0xfb, 0xea, - 0xaa, 0xaa, 0xbe, 0xbf, 0xef, 0xfb, 0xfb, 0xff, 0xf0, 0x54, 0x55, 0x05, 0x45, 0x54, 0xff, - 0xff, 0x7d, 0x55, 0xd5, 0x75, 0x7f, 0x7f, 0xdf, 0xff, 0xff, 0xff, 0xf0, 0xae, 0x2a, 0x82, - 0xa0, 0xaa, 0x3f, 0xff, 0xfe, 0xaa, 0xea, 0xbb, 0xfe, 0xbf, 0xff, 0xfb, 0xfb, 0xfe, 0xf0, - 0x5f, 0x55, 0x01, 0x50, 0x54, 0x1f, 0xff, 0x7f, 0x55, 0xd5, 0x7f, 0xff, 0x7f, 0xd7, 0xff, - 0xfd, 0xfd, 0xf0, 0x2f, 0xff, 0x20, 0x28, 0x00, 0x0f, 0xff, 0xae, 0xaa, 0xaa, 0xbf, 0xff, - 0xff, 0xeb, 0xfb, 0xff, 0xff, 0xf0, 0x0e, 0x01, 0x50, 0x14, 0x00, 0x3f, 0xff, 0x57, 0x55, - 0xd5, 0x7f, 0xff, 0x7f, 0xd7, 0xfd, 0xff, 0xfd, 0xf0, 0x1e, 0x01, 0xa8, 0x0a, 0x00, 0xff, - 0xff, 0xaf, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xaf, 0xfb, 0xff, 0xff, 0xf0, 0x1f, 0xf9, 0x50, - 0x01, 0x03, 0xff, 0xff, 0x57, 0x55, 0xd5, 0x7d, 0xff, 0x7f, 0xdf, 0xfd, 0xff, 0xfd, 0xf0, - 0x9f, 0xf9, 0xa8, 0x00, 0x8f, 0xff, 0xfe, 0xaf, 0xaa, 0xaa, 0xff, 0xff, 0xfd, 0xbf, 0xfb, - 0xff, 0xfb, 0xf0, 0x5a, 0x01, 0x54, 0x00, 0x3f, 0xff, 0xff, 0x7f, 0x5d, 0xd5, 0xfd, 0xff, - 0xfd, 0xdf, 0xfd, 0xff, 0xfd, 0xf0, 0x8e, 0x01, 0xaa, 0x00, 0x7f, 0xff, 0xfe, 0xbf, 0xae, - 0xef, 0xff, 0xff, 0xfb, 0xef, 0xfb, 0xff, 0xfa, 0xf0, 0xcf, 0xff, 0xf4, 0x00, 0xf7, 0xff, - 0xff, 0x7f, 0x5d, 0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff, 0xff, 0xfd, 0xf0, 0xae, 0x01, 0x2a, - 0x00, 0xfb, 0xff, 0xff, 0xbf, 0xae, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfa, 0xf0, - 0xde, 0x01, 0x35, 0x01, 0xfb, 0xff, 0xff, 0x7f, 0x5d, 0xfd, 0xbf, 0xff, 0xff, 0xdf, 0xfd, - 0xff, 0xdd, 0xf0, 0xa7, 0xff, 0xea, 0x81, 0xfc, 0xff, 0x7f, 0xbe, 0xbe, 0xff, 0xe3, 0xff, - 0xff, 0xef, 0xff, 0xf9, 0x3e, 0xf0, 0x56, 0x01, 0x55, 0x41, 0xff, 0x7f, 0xff, 0xff, 0xfd, - 0xfd, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x7d, 0xf0, 0xa6, 0x01, 0x2a, 0x88, 0xfe, 0xff, - 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe0, 0x03, 0xff, 0xff, 0xfc, 0xfe, 0xf0, 0x52, 0x79, 0x15, - 0x44, 0x7d, 0xff, 0xff, 0xfd, 0x7f, 0xbd, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xf8, 0xfd, 0xf0, - 0x22, 0x69, 0x2a, 0xa0, 0x3d, 0xff, 0xff, 0xfa, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xe2, 0x48, - 0xfa, 0xff, 0xf0, 0x42, 0x59, 0x15, 0x54, 0x1b, 0xff, 0xff, 0xf7, 0xff, 0xbd, 0xf7, 0xff, - 0xff, 0x95, 0x55, 0x37, 0x7d, 0xf0, 0x02, 0x69, 0x0a, 0xa2, 0x1f, 0xfe, 0xff, 0xee, 0xff, - 0xff, 0xfc, 0xff, 0xff, 0x2a, 0x4a, 0x9f, 0xff, 0xf0, 0x03, 0xff, 0x55, 0x11, 0x4f, 0xff, - 0xff, 0x55, 0x7f, 0xfd, 0xff, 0x00, 0xfc, 0x55, 0x55, 0x4f, 0xff, 0xf0, 0x02, 0x01, 0xaa, - 0x88, 0x8f, 0xde, 0xff, 0xaa, 0xbf, 0xfe, 0xff, 0xff, 0x00, 0xa8, 0x02, 0xa7, 0xff, 0xf0, - 0x02, 0x01, 0x55, 0x55, 0x47, 0xff, 0x7f, 0xd5, 0x5f, 0xff, 0xff, 0xff, 0xc8, 0x47, 0x5c, - 0x53, 0xff, 0xf0, 0x82, 0x49, 0xaa, 0x8a, 0xa7, 0xfe, 0xff, 0xea, 0xbf, 0xff, 0xff, 0xff, - 0xb0, 0x3f, 0x5f, 0x89, 0xff, 0xf0, 0xc2, 0x49, 0x55, 0x45, 0x53, 0xff, 0xff, 0xf5, 0x5f, - 0xff, 0xff, 0xfe, 0x70, 0x7f, 0x5f, 0xe5, 0xff, 0xf0, 0xe2, 0x41, 0xa2, 0xa2, 0xab, 0xfe, - 0xfb, 0xfa, 0xaf, 0xef, 0xff, 0xf9, 0xe2, 0xbf, 0x5f, 0xfa, 0xff, 0xf0, 0xe2, 0x41, 0x51, - 0x51, 0x51, 0xff, 0x77, 0xfd, 0x57, 0xf9, 0xff, 0xe7, 0x85, 0x7f, 0x5f, 0xfc, 0xff, 0xf0, - 0xe3, 0xff, 0xf2, 0xa0, 0xa8, 0xff, 0xfb, 0xbe, 0xaf, 0xfe, 0x1e, 0x80, 0x6a, 0x80, 0x00, - 0x7e, 0xff, 0xb0, 0xe2, 0x60, 0x11, 0x50, 0x54, 0x7f, 0xff, 0xfd, 0x57, 0xff, 0xe0, 0x1f, - 0xc4, 0x15, 0x55, 0x06, 0x7f, 0x70, 0xee, 0x60, 0x18, 0xa8, 0x2a, 0x1f, 0xff, 0xfe, 0xaf, - 0xff, 0xe8, 0xf0, 0x00, 0x0a, 0x4a, 0xa8, 0x7f, 0xf0, 0xdf, 0xff, 0xf1, 0x54, 0x15, 0x43, - 0xff, 0xff, 0x5f, 0xff, 0xe8, 0x7b, 0xc0, 0x05, 0x55, 0x55, 0x7f, 0x70, 0xff, 0x81, 0x28, - 0xaa, 0x0a, 0xa1, 0xff, 0xfe, 0xbf, 0xf7, 0xea, 0x09, 0xe0, 0x0a, 0x4a, 0xaa, 0x7f, 0xf0, - 0xff, 0x81, 0x50, 0x54, 0x05, 0x54, 0x7f, 0xff, 0x7f, 0xfc, 0xe8, 0x4b, 0xc0, 0x05, 0x55, - 0x55, 0x7f, 0x70, 0xfe, 0x7f, 0x28, 0xaa, 0x00, 0xa8, 0xff, 0xfe, 0xbf, 0xff, 0x0a, 0xf0, - 0x00, 0x02, 0x4a, 0xa8, 0x7e, 0xb0, 0xfe, 0x7f, 0x14, 0x55, 0x00, 0x03, 0xff, 0xf7, 0x5f, - 0x7f, 0xe0, 0x1f, 0xc4, 0x01, 0x55, 0x06, 0x7f, 0x70, 0xff, 0x81, 0x08, 0x2a, 0x80, 0x07, - 0xff, 0xf6, 0xaf, 0xff, 0xfe, 0x80, 0x6a, 0x80, 0x00, 0x7e, 0xff, 0xb0, 0x7f, 0x81, 0x14, - 0x55, 0x40, 0x0f, 0xff, 0xed, 0x57, 0x7f, 0xff, 0xe7, 0x85, 0x55, 0x5f, 0xfc, 0xff, 0x70, - 0xbf, 0xff, 0xe8, 0x2a, 0xa8, 0x1f, 0xff, 0xf6, 0xae, 0xff, 0xff, 0xf9, 0xea, 0xaa, 0x5f, - 0xfa, 0xff, 0xf0, 0x5e, 0x01, 0x24, 0x15, 0x54, 0x3f, 0xff, 0xf5, 0x57, 0x7f, 0xfb, 0xfe, - 0xf0, 0x55, 0x5f, 0xe5, 0xff, 0x70, 0xbe, 0x01, 0x22, 0x2a, 0xa0, 0xff, 0xff, 0xba, 0xae, - 0xff, 0xfe, 0x1f, 0x30, 0x2a, 0x0f, 0x89, 0xbf, 0xf0, 0x5f, 0xff, 0xe5, 0x15, 0x41, 0xff, - 0xff, 0xd5, 0x57, 0x7f, 0xff, 0xe0, 0x48, 0x05, 0x54, 0x53, 0xff, 0xf0, 0xbe, 0x01, 0xa2, - 0x02, 0x03, 0xff, 0xff, 0xea, 0xaa, 0xbf, 0xff, 0xff, 0x80, 0x00, 0x02, 0xa7, 0xbf, 0xf0, - 0x5e, 0x01, 0x41, 0x00, 0x06, 0xfd, 0xff, 0xd5, 0x55, 0x5f, 0xff, 0xff, 0xfc, 0x00, 0x40, - 0x4f, 0xff, 0xf0, 0xbe, 0x49, 0x20, 0x80, 0x0f, 0x7f, 0xfe, 0xea, 0xaa, 0xbe, 0xff, 0xff, - 0xff, 0x00, 0x00, 0x1f, 0xbf, 0xf0, 0x7e, 0x49, 0x50, 0x00, 0x0f, 0x7f, 0xff, 0xd5, 0x55, - 0x5f, 0x83, 0xff, 0xff, 0x80, 0x40, 0x3f, 0xff, 0xf0, 0xfe, 0x41, 0x28, 0x00, 0x0f, 0xbf, - 0xff, 0xeb, 0xaa, 0xbf, 0xfc, 0x00, 0x03, 0xe0, 0x00, 0xff, 0xbf, 0xf0, 0xfe, 0x41, 0x14, - 0x00, 0x1f, 0xdf, 0xff, 0xd5, 0xd5, 0x57, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xdf, 0xf0, - 0xff, 0xff, 0x08, 0x00, 0x1f, 0x3f, 0xdf, 0xeb, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xbf, 0xf0, 0xfe, 0x01, 0x14, 0x40, 0x3e, 0xff, 0xbf, 0xf5, 0x55, 0x57, 0xdf, 0xff, - 0xf9, 0xff, 0xff, 0xff, 0xdf, 0xf0, 0xfe, 0x01, 0x0a, 0x20, 0x3f, 0xff, 0xdf, 0xfa, 0xaa, - 0xab, 0xbf, 0xff, 0xf3, 0xff, 0xff, 0xdf, 0xbf, 0xf0, 0xde, 0x7f, 0x05, 0x10, 0x7f, 0xff, - 0xff, 0xfd, 0x55, 0x55, 0xdf, 0xff, 0xe4, 0xff, 0xff, 0xbf, 0x7f, 0xf0, 0xee, 0x7e, 0x02, - 0x88, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xab, 0xbf, 0xff, 0xe3, 0xff, 0xbf, 0xbf, 0xbf, 0xf0, - 0xde, 0x05, 0x41, 0x54, 0x3f, 0xff, 0xff, 0xdd, 0x55, 0x55, 0xff, 0xff, 0xd7, 0xff, 0xdf, - 0x7f, 0x7f, 0xf0, 0xee, 0x06, 0xa2, 0xaa, 0x3f, 0xff, 0xff, 0xbe, 0xaa, 0xab, 0xbf, 0xff, - 0xf7, 0xff, 0xbf, 0x3f, 0xbf, 0xf0, 0xde, 0x7d, 0x55, 0x55, 0x1f, 0xfb, 0xff, 0xff, 0x55, - 0x55, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xbf, 0xff, 0xf0, 0xfe, 0x7f, 0xaa, 0xaa, 0x8f, 0xff, - 0xff, 0xba, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xdf, 0xbf, 0xf0, 0xfe, 0x01, 0x55, - 0x55, 0x47, 0xff, 0xff, 0xf7, 0xd5, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xfe, 0x01, 0xaa, 0xaa, 0xa1, 0xff, 0xff, 0xbf, 0xea, 0xab, 0xff, 0xff, 0xff, 0xff, 0xbf, - 0xff, 0xff, 0xf0, 0xff, 0xff, 0x55, 0x55, 0x54, 0xff, 0xff, 0x5f, 0xf5, 0x57, 0xff, 0xfd, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xda, 0xaa, 0xaa, 0xaa, 0x7f, 0xff, 0xbf, 0xfa, - 0xab, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0x9d, 0x55, 0x55, 0x00, 0xff, - 0xff, 0x7f, 0xfd, 0x57, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xbf, 0xa2, - 0xa8, 0x03, 0xff, 0xfb, 0xbf, 0xfa, 0xaa, 0xbf, 0xfb, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0x3f, 0xc0, 0x00, 0x07, 0xff, 0xff, 0x5f, 0xfd, 0x57, 0x57, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf0, 0xff, 0x3f, 0x80, 0x00, 0x0f, 0xff, 0xfb, 0xaf, 0xfe, 0xae, 0xaa, 0xfb, - 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 0xf6, 0x7f, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0x57, 0xfd, - 0x55, 0x55, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf0, -}; - -const lv_img_dsc_t balloon = { - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .header.always_zero = 0, - .header.reserved = 0, - .header.w = 140, - .header.h = 68, - .data_size = 1232, - .data = balloon_map, -}; - -#ifndef LV_ATTRIBUTE_IMG_MOUNTAIN -#define LV_ATTRIBUTE_IMG_MOUNTAIN -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_MOUNTAIN uint8_t - mountain_map[] = { -#if CONFIG_NICE_VIEW_WIDGET_INVERTED - 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ - 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ -#else - 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ -#endif - - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xa0, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x10, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf4, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0x10, 0x80, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x01, 0xfe, 0x03, 0xe0, 0x0f, 0x9e, 0x01, 0x90, - 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x00, 0xff, 0x07, 0xe0, 0x1f, - 0x9e, 0x00, 0x90, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x80, 0x00, 0x00, 0x7f, - 0x8f, 0xe0, 0x1f, 0xbe, 0x00, 0x90, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, - 0x00, 0x00, 0x3f, 0xcf, 0xf0, 0x1f, 0xbc, 0x00, 0x90, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xcf, 0xf0, 0x3f, 0xbc, 0x00, 0x90, 0x80, 0x7f, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x1f, 0xe7, 0xf0, 0x7f, 0x3c, 0x00, 0x90, - 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00, 0x0f, 0xe7, 0xf8, 0x7f, - 0x78, 0x01, 0xb0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0x00, 0x00, 0x00, 0x07, - 0xf3, 0xf8, 0x3f, 0x78, 0x03, 0xd0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0x00, - 0x00, 0x00, 0x07, 0xfb, 0xf8, 0x3f, 0xf8, 0x0f, 0x90, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, - 0xec, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfd, 0xfc, 0x3f, 0xf8, 0x0f, 0x10, 0xc0, 0x1e, 0xff, - 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x3f, 0xf0, 0x0e, 0x10, - 0xc0, 0x0c, 0x27, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x7f, - 0xf0, 0x1e, 0x30, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7f, 0xfe, 0x7f, 0xf3, 0xfc, 0x50, 0xe0, 0x00, 0x3f, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xf7, 0xf8, 0x90, 0xe0, 0x00, 0x7f, 0xfe, 0xb0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x7f, 0xe7, 0xf1, 0x90, 0xe0, 0x00, 0x7f, - 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x7f, 0xef, 0xe3, 0x90, - 0xf0, 0x00, 0x7f, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x7f, - 0xff, 0xe7, 0x90, 0xb0, 0x10, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xff, 0xbf, 0xff, 0xcf, 0x90, 0xf0, 0x30, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0xff, 0xf9, 0xff, 0x9f, 0x90, 0xb0, 0x30, 0xff, 0xff, 0xff, 0xf2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0x3e, 0x90, 0xf8, 0x70, 0xff, - 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf6, 0xfe, 0x7c, 0x90, - 0xf8, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf9, - 0xfe, 0xf8, 0x90, 0xa8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xff, 0xfd, 0xf3, 0x90, 0xdc, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfb, 0xef, 0x90, 0xf5, 0xac, 0xff, 0xff, 0xff, 0xfe, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x90, 0xff, 0xd6, 0x7f, - 0xff, 0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x90, - 0xff, 0xfa, 0x7f, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0xff, 0xff, 0x90, 0xdd, 0xff, 0x7f, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xea, 0xbf, 0x3f, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x10, 0xff, 0x4f, 0xbf, 0xf5, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x10, 0xff, 0xff, 0x9f, - 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, - 0xff, 0xb0, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xff, 0xff, 0x90, 0xcd, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x1f, 0xff, 0xff, 0x90, 0xb2, 0xe0, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7f, 0xff, 0xff, 0x90, 0xff, 0xc0, 0x3f, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xff, 0xff, 0x90, 0xfe, 0xc0, 0x7f, - 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x7c, 0x90, - 0xfd, 0x80, 0xff, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xff, - 0xff, 0xb8, 0x90, 0xff, 0x80, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3f, 0x87, 0xff, 0xff, 0xc8, 0x90, 0x9f, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7f, 0x1f, 0xff, 0xff, 0xe0, 0x90, 0x86, 0x01, 0xff, 0xff, 0xd0, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfe, 0x3f, 0xff, 0xff, 0xe0, 0x90, 0x80, 0x01, 0xff, - 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x83, 0xfe, 0x7f, 0xff, 0xff, 0xf0, 0x90, - 0x80, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7f, 0xc7, 0xee, 0x7f, 0xff, - 0xff, 0xf8, 0x90, 0x80, 0x1a, 0xbf, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0xff, 0xff, - 0xc6, 0x7f, 0xff, 0xff, 0xfc, 0x90, 0x80, 0x3f, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xf1, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xfe, 0x90, 0x80, 0x3f, 0xf8, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xe3, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x90, 0x80, 0x7f, 0xfe, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc7, 0xff, 0xfe, 0x18, 0xff, 0xef, 0xff, 0xff, 0x90, - 0x80, 0x7f, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x8f, 0xff, 0xfc, 0x7f, 0xff, 0xef, - 0xfd, 0xff, 0x90, 0x80, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0xff, 0xf8, - 0xff, 0xff, 0xef, 0xfc, 0xf7, 0x90, 0x80, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x3f, - 0x1f, 0xff, 0xf1, 0xff, 0xff, 0xcf, 0xfc, 0xe1, 0x90, 0x80, 0xff, 0xff, 0xff, 0xf4, 0x00, - 0x00, 0x00, 0x7f, 0x3f, 0xff, 0xe3, 0xff, 0xff, 0xcf, 0xfe, 0x60, 0x90, 0x81, 0xff, 0xff, - 0xff, 0xfe, 0x80, 0x00, 0x00, 0x7f, 0x3f, 0xff, 0xc7, 0xff, 0xff, 0xdf, 0xfe, 0x40, 0x90, - 0x81, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xfe, 0x3f, 0xff, 0xcf, 0xbf, 0xff, 0xdf, - 0xfe, 0x00, 0x90, 0x81, 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x07, 0xfe, 0x7f, 0xff, 0x8f, - 0x7f, 0xff, 0x9f, 0xfe, 0x00, 0x90, 0x80, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00, 0x1f, 0xfe, - 0x7f, 0xff, 0x1e, 0xff, 0xff, 0x91, 0xfe, 0x00, 0x90, 0x80, 0xff, 0xff, 0xfe, 0xc0, 0x00, - 0x00, 0x3f, 0xfc, 0x7f, 0xfe, 0x3c, 0xff, 0xff, 0x81, 0xff, 0x00, 0x90, 0x80, 0x7f, 0xff, - 0xec, 0x00, 0x00, 0x3c, 0xff, 0xf8, 0xff, 0xfc, 0x79, 0xfd, 0xff, 0x80, 0xff, 0x00, 0x90, - 0x80, 0x27, 0xff, 0x80, 0x00, 0x00, 0x7f, 0xff, 0xf9, 0xff, 0xfc, 0xf3, 0xfb, 0xff, 0x00, - 0xff, 0x00, 0x90, 0x80, 0x5f, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xff, 0xc8, 0xe7, - 0xf3, 0xff, 0x00, 0x7f, 0x00, 0x90, 0x80, 0xff, 0xff, 0xfd, 0x80, 0x01, 0xff, 0xff, 0xe3, - 0xff, 0x81, 0xcf, 0xf7, 0xff, 0x00, 0x7f, 0x00, 0x90, 0x80, 0xff, 0xff, 0xff, 0xd8, 0x03, - 0xff, 0xff, 0x87, 0xff, 0x03, 0x8f, 0xe7, 0xff, 0x00, 0x3f, 0x81, 0x90, 0x81, 0xff, 0xff, - 0xff, 0xfe, 0x83, 0xff, 0xfe, 0x0f, 0xfe, 0x3f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0x10, - 0x80, 0x00, 0x00, 0x00, 0x2f, 0xc6, 0x00, 0x00, 0x38, 0x00, 0x60, 0x00, 0x48, 0x00, 0x00, - 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x17, 0xf4, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, -}; - -const lv_img_dsc_t mountain = { - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .header.always_zero = 0, - .header.reserved = 0, - .header.w = 140, - .header.h = 68, - .data_size = 1232, - .data = mountain_map, -}; - -#ifndef LV_ATTRIBUTE_IMG_WUKONG -#define LV_ATTRIBUTE_IMG_WUKONG -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_WUKONG uint8_t wukong_map[] = { - 0x63, 0x63, 0x63, 0xff, /*Color of index 0*/ - 0x15, 0x15, 0x15, 0xff, /*Color of index 1*/ - - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xfe, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xf9, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xc0, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xe0, 0x17, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xe8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xf3, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xfb, 0x05, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x57, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa6, 0x8a, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0x01, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x00, 0x02, 0xbb, 0xff, 0xff, 0xf0, - 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x24, 0x04, 0x00, 0x00, 0x07, 0xff, 0xff, 0xf0, - 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x40, 0x00, 0x00, 0x01, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x06, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x01, 0xff, 0xf0, - 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x0a, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf0, - 0x7f, 0xff, 0xf8, 0x6f, 0xff, 0xff, 0xff, 0xf0, 0x0e, 0x30, 0x03, 0x06, 0x00, 0x01, 0x00, 0x01, 0xff, 0xf0, - 0xff, 0xff, 0xfe, 0x52, 0xff, 0xff, 0xff, 0xe0, 0xbe, 0xb8, 0x83, 0x1f, 0x00, 0x0e, 0x00, 0x00, 0x1f, 0xf0, - 0xff, 0xff, 0xfe, 0xb4, 0xaf, 0xff, 0xff, 0xa8, 0x7e, 0x0c, 0x4f, 0x07, 0xe0, 0x10, 0x00, 0x00, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xd0, 0x21, 0xff, 0xff, 0xfa, 0xbf, 0x82, 0x1f, 0xa7, 0xf0, 0x20, 0xaa, 0x00, 0xff, 0xf0, - 0xff, 0xff, 0xef, 0xf0, 0x00, 0x67, 0xff, 0xfd, 0x5e, 0x80, 0x1f, 0x37, 0xa8, 0x28, 0x3f, 0x00, 0x0b, 0xf0, - 0xff, 0xff, 0xdf, 0xee, 0x06, 0x01, 0xff, 0xfd, 0x7f, 0x00, 0x1f, 0x9f, 0xfe, 0x14, 0x00, 0xe0, 0x05, 0xf0, - 0xff, 0xfd, 0x7f, 0xff, 0x7e, 0x00, 0xff, 0xff, 0xea, 0xb4, 0x3f, 0xbf, 0xff, 0x57, 0xff, 0xdc, 0x0f, 0xf0, - 0xff, 0xd7, 0xd7, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xee, 0xa0, 0x3f, 0x9f, 0xfd, 0xbf, 0xff, 0xab, 0x03, 0xf0, - 0xff, 0xe9, 0x6d, 0x7f, 0xfc, 0x07, 0xff, 0xff, 0xff, 0x81, 0x3f, 0xbf, 0xff, 0xff, 0xfa, 0x36, 0x81, 0xf0, - 0xff, 0xfe, 0xaa, 0xbf, 0xfe, 0x03, 0xff, 0xff, 0xff, 0x60, 0x7f, 0xdf, 0xff, 0xff, 0xfd, 0xea, 0x03, 0xf0, - 0xff, 0xff, 0xf4, 0xaf, 0xff, 0x85, 0xff, 0xff, 0xff, 0x80, 0x7f, 0xef, 0xff, 0xff, 0xfa, 0xbf, 0x03, 0xf0, - 0xff, 0xff, 0xff, 0x0b, 0xff, 0xfd, 0xef, 0xff, 0xff, 0x88, 0xff, 0xef, 0xff, 0xff, 0xff, 0x50, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xa0, 0xff, 0xb4, 0xdf, 0xff, 0xff, 0xb4, 0xbf, 0xdf, 0xff, 0xff, 0xfd, 0x55, 0x0f, 0xf0, - 0xff, 0xf5, 0xfd, 0x75, 0x7f, 0xff, 0x5f, 0xff, 0xff, 0xf9, 0x7f, 0xff, 0xff, 0xff, 0xfa, 0xaa, 0xf7, 0xf0, - 0xff, 0xfa, 0xff, 0xfd, 0x7f, 0xff, 0xff, 0x7f, 0x7f, 0xf7, 0xbf, 0xff, 0xfe, 0x83, 0xd6, 0x51, 0x5f, 0xf0, - 0xff, 0xff, 0xbf, 0xef, 0xff, 0xff, 0xf6, 0xfb, 0xef, 0xff, 0xf5, 0xff, 0xfd, 0xff, 0xe8, 0x00, 0x2f, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xa6, 0x77, 0xfe, 0xb5, 0xbf, 0xff, 0x7a, 0xa0, 0x00, 0x1f, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xed, 0xff, 0xfb, 0x71, 0xbd, 0x0f, 0xd9, 0xcf, 0x7f, 0xaf, 0x40, 0x00, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xf9, 0xfe, 0xd7, 0xfc, 0x5e, 0x00, 0x3b, 0xea, 0x9f, 0xc5, 0xfa, 0x57, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xe9, 0xf1, 0x56, 0x80, 0x15, 0x7f, 0xf5, 0xa2, 0xaa, 0x83, 0xff, 0xf0, - 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xd0, 0x68, 0x1f, 0x40, 0x1b, 0x8f, 0xfe, 0x00, 0x00, 0x01, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x00, 0x97, 0x9c, 0x0f, 0x03, 0xff, 0x00, 0x00, 0x02, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x80, 0x00, 0x07, 0xff, 0xc3, 0xe0, 0xf4, 0x80, 0x00, 0x03, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0x5b, 0xff, 0xff, 0x80, 0x00, 0xab, 0xbf, 0xa7, 0xfa, 0x84, 0x00, 0x00, 0x1f, 0xff, 0xf0, - 0xbf, 0xff, 0xff, 0xef, 0x7f, 0xd4, 0x40, 0x00, 0x2f, 0xfe, 0xbf, 0x85, 0x40, 0x00, 0x03, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0x7f, 0xea, 0x20, 0x05, 0x5f, 0xff, 0xff, 0xa0, 0x10, 0x00, 0x3f, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0x77, 0xfd, 0xf2, 0xaa, 0x15, 0x6f, 0xff, 0xff, 0xfa, 0x1c, 0x08, 0x0f, 0xff, 0xff, 0xf0, - 0xed, 0xff, 0xff, 0xdf, 0xfe, 0xf8, 0xa8, 0x0a, 0xb7, 0xbf, 0xff, 0xff, 0x8f, 0xaf, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xee, 0xff, 0xfe, 0xaa, 0x1d, 0xef, 0x7f, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xef, 0xff, 0xfd, 0x7e, 0xab, 0x57, 0x7f, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xf3, 0xff, 0xfd, 0x5f, 0xdf, 0xae, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xdf, 0xff, 0xf7, 0xf5, 0xfe, 0xff, 0xaf, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xf5, 0x0b, 0xff, 0x5f, 0xbf, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xfd, 0x55, 0xff, 0xbf, 0xfb, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xfa, 0xab, 0xff, 0xbf, 0xbe, 0x51, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0x7f, 0xd7, 0xfd, 0xab, 0xff, 0xff, 0x78, 0x57, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xdf, 0x7f, 0xfe, 0xef, 0xff, 0xf7, 0xc0, 0xfd, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xfe, 0xfd, 0xff, 0xff, 0x7f, 0xff, 0xdc, 0x01, 0xd6, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xdd, 0xbd, 0xff, 0xfe, 0xff, 0xff, 0xc0, 0x07, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xbf, 0xff, 0xff, 0xff, 0xbf, 0xf6, 0xc0, 0x1f, 0xeb, 0xba, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xdf, 0xef, 0xff, 0xff, 0xff, 0xeb, 0x86, 0x3f, 0xfd, 0x57, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xcf, 0xff, 0xff, 0xcf, 0x51, 0x7f, 0x1d, 0xef, 0xea, 0xb5, 0x55, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, -}; - -const lv_img_dsc_t wukong = { - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .header.always_zero = 0, - .header.reserved = 0, - .header.w = 140, - .header.h = 68, - .data_size = 1232, - .data = wukong_map, -}; - - -#ifndef LV_ATTRIBUTE_IMG_LONGZHU -#define LV_ATTRIBUTE_IMG_LONGZHU -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_LONGZHU uint8_t longzhu_map[] = { - 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ - - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, - 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xab, 0x6d, 0xbb, 0x6d, 0xbb, 0x6d, 0xdb, 0x76, 0xef, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xb0, - 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0x7f, 0xbf, 0xfd, 0xff, 0xdf, 0xff, 0xef, 0xff, 0x7f, 0xdf, 0xbf, 0xf0, - 0xb6, 0xdb, 0x7d, 0xb6, 0xdb, 0x7d, 0xf5, 0xed, 0xb7, 0xb6, 0xf6, 0xdb, 0x7e, 0xdb, 0xf6, 0xfd, 0xff, 0xf0, - 0xff, 0xff, 0xf7, 0xff, 0xff, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xb0, - 0xde, 0xee, 0xff, 0xdf, 0x7d, 0xff, 0xff, 0xbf, 0x7b, 0x7f, 0xbf, 0xff, 0xdb, 0xfe, 0xdf, 0xdb, 0xbf, 0xf0, - 0xfb, 0xff, 0xbe, 0xf7, 0xdf, 0x6e, 0xfb, 0xed, 0xef, 0xdb, 0xf6, 0xdb, 0xff, 0x6f, 0xf6, 0xff, 0xfb, 0xf0, - 0xff, 0xbb, 0xfb, 0xdd, 0xf7, 0xff, 0xde, 0xff, 0xfd, 0xfe, 0xff, 0xff, 0x7f, 0xfb, 0xff, 0xff, 0x7f, 0xb0, - 0xbf, 0xff, 0xdf, 0xb7, 0xff, 0xdf, 0xff, 0xf7, 0x7f, 0xff, 0xbf, 0x7f, 0xdb, 0xff, 0x7f, 0x6d, 0xef, 0xf0, - 0xf6, 0xf7, 0x77, 0xdf, 0xbe, 0xfd, 0xbb, 0xdf, 0xf7, 0xd7, 0xed, 0xed, 0xff, 0xdf, 0xfb, 0xff, 0xfb, 0x70, - 0xff, 0xbf, 0xfd, 0xf7, 0xf7, 0xef, 0xfe, 0xfd, 0xdd, 0xfe, 0xff, 0xff, 0xfd, 0xf7, 0xbf, 0xdf, 0xbf, 0xe0, - 0xdb, 0xfe, 0xfd, 0xdd, 0xbf, 0xbe, 0xef, 0xef, 0xff, 0xbf, 0xff, 0x77, 0xb7, 0x7d, 0xee, 0xfe, 0xff, 0xf0, - 0xff, 0xdb, 0xdb, 0xf6, 0xfb, 0xfb, 0xfd, 0xfe, 0xff, 0xf7, 0xb7, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xed, 0xb0, - 0xff, 0x7f, 0xff, 0x5f, 0xdf, 0xff, 0xdf, 0xbb, 0xdb, 0x7d, 0xfd, 0xdf, 0xdf, 0xef, 0x7d, 0xdf, 0xff, 0xf0, - 0xb7, 0xff, 0x55, 0xeb, 0x7d, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xbf, 0xef, 0xfd, 0xbf, 0xf0, - 0xfd, 0xdb, 0xee, 0xbf, 0xff, 0xfe, 0xed, 0xef, 0x77, 0xb7, 0xb7, 0xbb, 0x7f, 0xfe, 0xff, 0xbf, 0xfd, 0xb0, - 0xff, 0xff, 0xfb, 0xd5, 0xdb, 0xff, 0xff, 0xbf, 0xfd, 0xfe, 0xfd, 0xff, 0xde, 0xf7, 0xfb, 0xef, 0x6f, 0xf0, - 0xdb, 0xbd, 0xbd, 0x6f, 0x7f, 0xdb, 0xdf, 0xfd, 0xdf, 0xff, 0xff, 0xed, 0xf7, 0xdf, 0xde, 0xfd, 0xff, 0x70, - 0xff, 0xef, 0xef, 0x75, 0xfe, 0xfe, 0xf6, 0xff, 0xfe, 0xdb, 0xb7, 0x7f, 0xff, 0xfd, 0xff, 0xff, 0xf7, 0xd0, - 0x77, 0x7f, 0xf5, 0xde, 0xb7, 0xff, 0xff, 0xf7, 0x7b, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0x77, 0xb7, 0xbf, 0xf0, - 0xff, 0xd6, 0xdf, 0x6f, 0xff, 0xb7, 0xdf, 0xbf, 0xef, 0xf7, 0xdd, 0xdb, 0xf7, 0xef, 0xff, 0xfe, 0xfb, 0x70, - 0xde, 0xff, 0xfb, 0xbb, 0xfe, 0xfe, 0xfe, 0xfd, 0xfe, 0xdf, 0x7f, 0xff, 0x7d, 0xfd, 0xfe, 0xef, 0xff, 0xf0, - 0xf7, 0xd5, 0xad, 0xff, 0x6f, 0xff, 0xf7, 0xff, 0xbf, 0xff, 0xef, 0x7f, 0xff, 0xbf, 0xb7, 0xfd, 0xdf, 0xf0, - 0xff, 0xfe, 0xff, 0xf7, 0xff, 0xb7, 0xbf, 0xb7, 0xff, 0xfe, 0xfd, 0xed, 0xee, 0xff, 0xff, 0xff, 0xf6, 0xd0, - 0xdb, 0x57, 0x57, 0x7f, 0xfb, 0xff, 0xff, 0xfe, 0xed, 0xb7, 0xdf, 0xfb, 0xbf, 0xed, 0xfe, 0xdf, 0x7f, 0xf0, - 0xff, 0xfa, 0xfd, 0xde, 0xdf, 0xfe, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfa, 0xbf, 0x77, 0xfb, 0xff, 0xf0, - 0xfd, 0xef, 0x5f, 0x77, 0xfe, 0xdf, 0xdf, 0xdf, 0xbf, 0xfd, 0xf7, 0xf6, 0xb7, 0xdf, 0xff, 0xff, 0xdb, 0x70, - 0x6f, 0x7a, 0xed, 0xdf, 0xf7, 0xfd, 0xff, 0xfd, 0xfb, 0x6f, 0xbf, 0x7b, 0xfd, 0x75, 0x6f, 0x6e, 0xff, 0xf0, - 0xff, 0xdf, 0xb7, 0x7f, 0x7f, 0xf7, 0xfd, 0xf7, 0xef, 0xff, 0xfa, 0xd6, 0xdf, 0xaf, 0xf5, 0xff, 0xf7, 0x60, - 0xfd, 0xed, 0xdd, 0xff, 0xff, 0xbf, 0xef, 0xbf, 0x7f, 0xfe, 0xe9, 0x6d, 0x7d, 0x69, 0x4f, 0xfb, 0xdf, 0xf0, - 0xdf, 0xbf, 0xbf, 0xdb, 0xed, 0xfe, 0xff, 0xff, 0xfd, 0xb7, 0xaa, 0xab, 0x17, 0xd5, 0x7a, 0xbf, 0x7d, 0xf0, - 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xef, 0xdf, 0xfe, 0xa5, 0x57, 0x45, 0x5a, 0xd7, 0xef, 0xff, 0xb0, - 0xf6, 0xef, 0xd6, 0xfe, 0xff, 0xdb, 0xbf, 0xfd, 0xff, 0xd4, 0xaa, 0x2c, 0x17, 0xfe, 0xaa, 0xbd, 0xef, 0xf0, - 0xdf, 0xfe, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xf7, 0x7b, 0x35, 0x1f, 0xc1, 0x51, 0xad, 0xdf, 0xfe, 0xf0, - 0xfb, 0xbb, 0xff, 0xb7, 0xbe, 0xff, 0xef, 0xff, 0xff, 0xee, 0xca, 0x79, 0x2f, 0xee, 0x4a, 0x76, 0xf7, 0xd0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xed, 0xde, 0x9e, 0x00, 0x5a, 0x5d, 0x1d, 0xb5, 0x9b, 0xdf, 0xf0, - 0xfe, 0xff, 0x6d, 0xff, 0xff, 0xbb, 0xfd, 0xff, 0xf5, 0xf8, 0x29, 0x39, 0xbb, 0xea, 0xdd, 0xd7, 0x7d, 0xf0, - 0xdb, 0xfb, 0xff, 0xfd, 0xbb, 0xff, 0xdf, 0xff, 0xfd, 0x7e, 0xa2, 0x7c, 0x57, 0xb5, 0x7b, 0xa5, 0xff, 0xb0, - 0xff, 0xbf, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xbe, 0xc6, 0xba, 0xa8, 0x1d, 0xfd, 0xd4, 0xb5, 0x7f, 0xdf, 0xf0, - 0xff, 0xff, 0xfd, 0xf7, 0xff, 0xef, 0xff, 0xf7, 0xfb, 0x7f, 0xfe, 0xef, 0xd5, 0x6b, 0xda, 0x5b, 0x7b, 0x70, - 0xf7, 0xff, 0xef, 0xde, 0xed, 0xfe, 0xed, 0xff, 0xae, 0xfb, 0xcb, 0xfa, 0xfb, 0xaa, 0x6f, 0xae, 0xff, 0xd0, - 0xfd, 0xff, 0xff, 0xff, 0xf7, 0x5f, 0xff, 0xff, 0xbb, 0xfe, 0x7e, 0xbd, 0xbe, 0x55, 0x5f, 0x7b, 0xcd, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xfe, 0xeb, 0xff, 0xff, 0xef, 0xf9, 0x6b, 0xfd, 0x77, 0xaf, 0xa5, 0xde, 0x7b, 0xf0, - 0xff, 0x6f, 0x7f, 0x7f, 0xff, 0xee, 0xad, 0xee, 0xff, 0xbe, 0xaa, 0xfb, 0xff, 0x62, 0xf7, 0x7b, 0xdf, 0xb0, - 0xdb, 0xff, 0xff, 0xdf, 0xff, 0xab, 0xbf, 0x7f, 0xf5, 0xed, 0xb5, 0xfe, 0xff, 0xe9, 0xda, 0xff, 0xf7, 0xf0, - 0x7f, 0xfd, 0xff, 0xfb, 0xdb, 0xf5, 0x55, 0xff, 0xff, 0x7a, 0xda, 0xff, 0xfd, 0xed, 0x7f, 0xdd, 0xdd, 0x70, - 0xfe, 0xdf, 0xb7, 0xff, 0xff, 0xb8, 0x2a, 0xbf, 0xaf, 0xef, 0xb6, 0xfb, 0xff, 0xfe, 0xd7, 0xef, 0x7b, 0xe0, - 0xf7, 0xfb, 0xff, 0x7f, 0xff, 0xde, 0xd5, 0x6d, 0xff, 0xb5, 0xbf, 0xff, 0xff, 0x5f, 0xfe, 0xbf, 0xff, 0xf0, - 0xff, 0x7e, 0xed, 0xff, 0xff, 0xfb, 0xf5, 0x5f, 0xfd, 0xff, 0x4b, 0xfb, 0xff, 0xff, 0xdf, 0xef, 0xd6, 0xf0, - 0xfd, 0xff, 0xff, 0xb7, 0xff, 0xfe, 0xee, 0xdf, 0xff, 0xf6, 0xbb, 0x7f, 0xff, 0xfe, 0xff, 0x7f, 0x7b, 0xb0, - 0xff, 0x6f, 0x7f, 0xfe, 0xff, 0xff, 0xe9, 0x6f, 0xff, 0xff, 0x6b, 0xff, 0xbf, 0xef, 0xfb, 0xfb, 0xee, 0xf0, - 0xff, 0xfd, 0xed, 0xdf, 0xbf, 0xff, 0x92, 0xab, 0xff, 0xff, 0xd5, 0xfb, 0xf7, 0x7f, 0xff, 0xef, 0x7f, 0xf0, - 0xdf, 0xb7, 0x7b, 0xf7, 0xef, 0xff, 0xea, 0xaf, 0xef, 0xfe, 0x77, 0xfe, 0xff, 0xff, 0xbf, 0xdb, 0xb5, 0xb0, - 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xff, 0xff, 0xbd, 0xff, 0xff, 0xdb, 0xff, 0xff, 0xed, 0xfe, 0xfe, 0xdf, 0xf0, - 0xff, 0xff, 0xf7, 0xed, 0xed, 0xff, 0xfb, 0xf7, 0xff, 0x7f, 0xf7, 0x7f, 0xff, 0xff, 0xf7, 0xbf, 0xf7, 0xf0, - 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff, 0xfe, 0xff, 0xff, 0xeb, 0x6e, 0xd0, - 0xff, 0xfd, 0xff, 0xed, 0xbf, 0x7e, 0xbf, 0x7f, 0xbf, 0xff, 0xbd, 0xdb, 0xf7, 0xff, 0xba, 0xff, 0xdb, 0xf0, - 0xff, 0xef, 0xbb, 0x7f, 0xed, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xed, 0xff, 0x55, 0xbf, 0xf0, - 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xde, 0xff, 0xff, 0xef, 0xff, 0xbf, 0x7f, 0xff, 0x7e, 0xfe, 0xde, 0xf0, - 0xff, 0xff, 0xff, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xfd, 0xed, 0xdf, 0xeb, 0xeb, 0x49, 0x77, 0xd0, - 0xff, 0xff, 0x6d, 0xbf, 0x6f, 0xff, 0xff, 0xdd, 0xff, 0xfb, 0x77, 0xbf, 0xfd, 0xdd, 0x5d, 0xd7, 0xbd, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf6, 0xfe, 0x7f, 0xbf, 0xdf, 0xff, 0xef, 0xf7, 0xbb, 0xb4, 0xff, 0xf0, - 0xff, 0xf7, 0xff, 0x6d, 0xf7, 0xdf, 0xbf, 0xf7, 0xdf, 0xf5, 0x6a, 0xef, 0xfa, 0xfa, 0xed, 0x6b, 0xdf, 0x70, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xbf, 0xeb, 0xb5, 0x5b, 0xbb, 0x7f, 0xed, 0x37, 0x54, 0xfd, 0xf0, - 0xff, 0xfe, 0xdb, 0xff, 0xbf, 0xff, 0xed, 0xf5, 0xbf, 0xf5, 0x8d, 0xff, 0x7f, 0xba, 0xa9, 0x52, 0xb7, 0xd0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x7f, 0xde, 0xfa, 0xef, 0x6a, 0xfd, 0x4e, 0xee, 0x95, 0x00, 0x3f, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf7, 0x7f, 0xb7, 0xfa, 0xd7, 0xfe, 0xbb, 0xda, 0xb4, 0x8a, 0xfe, 0xf0, - 0xff, 0xff, 0xff, 0xdb, 0x7f, 0xdf, 0xbd, 0xdb, 0xff, 0x7f, 0x75, 0xaf, 0xc7, 0x76, 0xc5, 0x0b, 0xf7, 0xf0, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x76, 0xf5, 0xbf, 0xfe, 0xeb, 0xbd, 0xaa, 0xa9, 0x7f, 0xff, 0xb0, - 0xff, 0xff, 0xfe, 0xf7, 0xff, 0xff, 0xfd, 0xef, 0xfb, 0x7d, 0xf7, 0xb7, 0xf7, 0xdd, 0x04, 0x17, 0xde, 0xf0, - 0xff, 0xff, 0xff, 0xfe, 0xef, 0xff, 0xff, 0x5a, 0xfe, 0xdf, 0xde, 0xfc, 0xab, 0x52, 0xa1, 0x7d, 0xfb, 0xf0, - 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xdd, 0xf7, 0xaa, 0xfe, 0xfe, 0xff, 0xfd, 0xaa, 0x9f, 0xff, 0x7f, 0xf0, - 0xff, 0xff, 0xfd, 0xbf, 0xff, 0xbf, 0xfb, 0x6a, 0xdf, 0x7f, 0xfb, 0xff, 0xd4, 0xe4, 0xa5, 0xbf, 0xef, 0x70, - 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf7, 0xff, 0xad, 0xfb, 0x6f, 0x7f, 0xf6, 0xff, 0xb3, 0x1f, 0xed, 0xff, 0xf0, - 0xff, 0xff, 0xf7, 0xf7, 0xf5, 0xff, 0xea, 0xd7, 0x6d, 0xbf, 0xdb, 0xbf, 0xf5, 0x7f, 0xff, 0xff, 0xbb, 0xb0, - 0xff, 0xff, 0xff, 0xbf, 0xfe, 0xbf, 0xfe, 0xa9, 0xbb, 0x5f, 0x7f, 0xff, 0xff, 0xdf, 0xfb, 0x7f, 0xff, 0xf0, - 0xff, 0xff, 0xfe, 0xff, 0xf7, 0xfd, 0xab, 0x56, 0xfd, 0xf7, 0xfe, 0xf7, 0x7f, 0xfd, 0xff, 0xed, 0xee, 0xf0, - 0xff, 0xff, 0xf7, 0xff, 0xdd, 0x7f, 0xfd, 0x6d, 0xd7, 0x5f, 0xff, 0xff, 0xef, 0xff, 0xef, 0xff, 0xbf, 0xf0, - 0xfa, 0xff, 0x7f, 0xff, 0xff, 0xdf, 0xae, 0xd7, 0x7d, 0xff, 0xb7, 0xdf, 0xfd, 0xb7, 0x7d, 0xbf, 0xfb, 0xb0, - 0xfe, 0x0f, 0xff, 0xff, 0xd5, 0x7f, 0xdb, 0xdd, 0xef, 0x6f, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xf6, 0xff, 0xf0, - 0xdc, 0xaf, 0xfb, 0xff, 0x7f, 0xff, 0xf7, 0x6b, 0x7b, 0xdf, 0x7d, 0xf7, 0xf7, 0xff, 0xef, 0xff, 0xde, 0xf0, - 0xf2, 0xe7, 0xff, 0xff, 0xfb, 0xf7, 0xee, 0xaf, 0xfe, 0xff, 0xef, 0xbf, 0xff, 0xde, 0xff, 0xbf, 0xf7, 0xb0, - 0xc4, 0xef, 0xff, 0xff, 0x5f, 0xff, 0xbf, 0x75, 0xbf, 0xbe, 0xff, 0xfd, 0xbd, 0xfb, 0xfb, 0xed, 0xff, 0xf0, - 0xfc, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xdf, 0xfb, 0xde, 0xff, 0xef, 0xff, 0xff, 0xde, 0xff, 0xbd, 0xf0, - 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xef, 0x6f, 0xfd, 0xdb, 0x7f, 0xef, 0x7f, 0xff, 0xff, 0xff, 0x70, - 0xf7, 0xff, 0xff, 0xff, 0xed, 0xaf, 0xfb, 0xfd, 0xff, 0xd7, 0xff, 0xfb, 0x7f, 0xdb, 0x7f, 0xdb, 0x77, 0xf0, - 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdf, 0xdb, 0xff, 0x7f, 0xff, 0xfb, 0xff, 0xed, 0xff, 0xff, 0xb0, - 0xfc, 0x7f, 0xff, 0x7f, 0xf7, 0xb7, 0xf5, 0xf6, 0xff, 0xff, 0xee, 0xef, 0xef, 0xff, 0xff, 0xff, 0xee, 0xf0, - 0xff, 0x7f, 0xff, 0xff, 0xfb, 0x6f, 0xff, 0xff, 0xbe, 0x5b, 0xff, 0xfd, 0xfe, 0xed, 0xfe, 0xdb, 0x7f, 0xf0, - 0xb7, 0x7f, 0xfb, 0xfb, 0xff, 0xff, 0xfb, 0xee, 0xf6, 0xff, 0xfb, 0xbf, 0xbf, 0xff, 0xdb, 0xff, 0xfb, 0xb0, - 0xf5, 0x7f, 0xff, 0xff, 0xf7, 0xbf, 0xff, 0x7b, 0x54, 0xfe, 0xff, 0xf7, 0xf7, 0xbf, 0x7f, 0xef, 0xbf, 0xf0, - 0xff, 0xff, 0xde, 0xff, 0xfa, 0xf7, 0xff, 0xda, 0xa3, 0xf7, 0xef, 0xfe, 0xfd, 0xfb, 0xff, 0xbe, 0xfe, 0xf0, - 0xf7, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xf6, 0xea, 0x9f, 0xdf, 0xfd, 0xbf, 0xdf, 0xff, 0xed, 0xfb, 0xef, 0xb0, - 0xf6, 0x7f, 0xf7, 0x6f, 0xfe, 0xff, 0xfb, 0xd4, 0x16, 0xff, 0xbf, 0xff, 0xff, 0x6f, 0x7f, 0xff, 0xfb, 0xf0, - 0xf5, 0xfd, 0xbf, 0xff, 0xff, 0xaf, 0xbe, 0x29, 0x7f, 0xfd, 0xf7, 0xdb, 0xf7, 0xfd, 0xff, 0x6f, 0x7f, 0xf0, - 0xfc, 0x7f, 0xfe, 0xfb, 0xfd, 0xff, 0xfd, 0x6c, 0xff, 0xef, 0xfe, 0xff, 0xbf, 0xff, 0xfb, 0xff, 0xde, 0xd0, - 0xf6, 0xff, 0x7b, 0xdf, 0xff, 0x77, 0xfd, 0xef, 0xfb, 0x7f, 0xbf, 0xfe, 0xfd, 0xb7, 0xbf, 0xfb, 0xff, 0xf0, - 0xf2, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xea, 0xf7, 0xff, 0xfd, 0xff, 0xb7, 0xef, 0xff, 0xee, 0xde, 0xfd, 0xf0, - 0xff, 0x7f, 0xef, 0x7f, 0xfe, 0xf7, 0xbb, 0xff, 0xbf, 0xff, 0xef, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xdf, 0x70, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xdf, 0xfd, 0xb7, 0x7e, 0xff, 0x7b, 0x6f, 0xfb, 0xf7, 0xfb, 0xf0, - 0xff, 0xff, 0x7d, 0xef, 0x7f, 0x7f, 0xef, 0xfd, 0xf7, 0xff, 0xfb, 0xdb, 0xff, 0xff, 0x7f, 0x7e, 0xff, 0xd0, - 0xff, 0xff, 0xff, 0xfd, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xfb, 0xef, 0xff, 0xee, 0xf0, -}; - -const lv_img_dsc_t longzhu = { - .header.cf = LV_IMG_CF_INDEXED_1BIT, - .header.always_zero = 0, - .header.reserved = 0, - .header.w = 140, - .header.h = 104, - .data_size = 1880, - .data = longzhu_map, -}; diff --git a/config/boards/shields/nice_view/widgets/bolt.c b/config/boards/shields/nice_view/widgets/bolt.c deleted file mode 100644 index 74dcc2b00..000000000 --- a/config/boards/shields/nice_view/widgets/bolt.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_BOLT -#define LV_ATTRIBUTE_IMG_BOLT -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_BOLT uint8_t bolt_map[] = { -#if CONFIG_NICE_VIEW_WIDGET_INVERTED - 0x00, 0x00, 0x00, 0x00, /*Color of index 0*/ - 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 2*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 3*/ -#else - 0x00, 0x00, 0x00, 0x00, /*Color of index 0*/ - 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ - 0x00, 0x00, 0x00, 0xff, /*Color of index 2*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 3*/ -#endif - - 0x00, 0x14, 0x00, 0x00, 0x64, 0x00, 0x00, 0x64, 0x00, 0x01, 0xa4, 0x00, 0x01, 0xa4, - 0x00, 0x06, 0xa4, 0x00, 0x06, 0xa4, 0x00, 0x1a, 0xa5, 0x54, 0x1a, 0xaa, 0xa4, 0x6a, - 0xaa, 0x90, 0x55, 0x6a, 0x90, 0x00, 0x6a, 0x40, 0x00, 0x6a, 0x40, 0x00, 0x69, 0x00, - 0x00, 0x69, 0x00, 0x00, 0x64, 0x00, 0x00, 0x64, 0x00, 0x00, 0x50, 0x00, -}; - -const lv_img_dsc_t bolt = { - .header.cf = LV_IMG_CF_INDEXED_2BIT, - .header.always_zero = 0, - .header.reserved = 0, - .header.w = 11, - .header.h = 18, - .data_size = 70, - .data = bolt_map, -}; diff --git a/config/boards/shields/nice_view/widgets/peripheral_status.c b/config/boards/shields/nice_view/widgets/peripheral_status.c deleted file mode 100644 index 68195b8e7..000000000 --- a/config/boards/shields/nice_view/widgets/peripheral_status.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include -#include - -#include -LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "peripheral_status.h" - -LV_IMG_DECLARE(balloon); -LV_IMG_DECLARE(mountain); -LV_IMG_DECLARE(wukong); -LV_IMG_DECLARE(longzhu); - -static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); - -struct peripheral_status_state { - bool connected; -}; - -static void draw_top(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { - lv_obj_t *canvas = lv_obj_get_child(widget, 0); - - lv_draw_label_dsc_t label_dsc; - init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_16, LV_TEXT_ALIGN_RIGHT); - lv_draw_rect_dsc_t rect_black_dsc; - init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); - - // Fill background - lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); - - // Draw battery - draw_battery(canvas, state); - - // Draw output status - lv_canvas_draw_text(canvas, 0, 0, CANVAS_SIZE, &label_dsc, - state->connected ? LV_SYMBOL_WIFI : LV_SYMBOL_CLOSE); - - // Rotate canvas - rotate_canvas(canvas, cbuf); -} - -static void set_battery_status(struct zmk_widget_status *widget, - struct battery_status_state state) { -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) - widget->state.charging = state.usb_present; -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ - - widget->state.battery = state.level; - - draw_top(widget->obj, widget->cbuf, &widget->state); -} - -static void battery_status_update_cb(struct battery_status_state state) { - struct zmk_widget_status *widget; - SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_battery_status(widget, state); } -} - -static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { - return (struct battery_status_state) { - .level = zmk_battery_state_of_charge(), -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) - .usb_present = zmk_usb_is_powered(), -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ - }; -} - -ZMK_DISPLAY_WIDGET_LISTENER(widget_battery_status, struct battery_status_state, - battery_status_update_cb, battery_status_get_state) - -ZMK_SUBSCRIPTION(widget_battery_status, zmk_battery_state_changed); -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) -ZMK_SUBSCRIPTION(widget_battery_status, zmk_usb_conn_state_changed); -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ - -static struct peripheral_status_state get_state(const zmk_event_t *_eh) { - return (struct peripheral_status_state){.connected = zmk_split_bt_peripheral_is_connected()}; -} - -static void set_connection_status(struct zmk_widget_status *widget, - struct peripheral_status_state state) { - widget->state.connected = state.connected; - - draw_top(widget->obj, widget->cbuf, &widget->state); -} - -static void output_status_update_cb(struct peripheral_status_state state) { - struct zmk_widget_status *widget; - SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_connection_status(widget, state); } -} - -ZMK_DISPLAY_WIDGET_LISTENER(widget_peripheral_status, struct peripheral_status_state, - output_status_update_cb, get_state) -ZMK_SUBSCRIPTION(widget_peripheral_status, zmk_split_peripheral_status_changed); - -int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { - widget->obj = lv_obj_create(parent); - lv_obj_set_size(widget->obj, 160, 68); - lv_obj_t *top = lv_canvas_create(widget->obj); - lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); - lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); - - lv_obj_t *art = lv_img_create(widget->obj); - bool random = sys_rand32_get() & 1; - lv_img_set_src(art, random ? &balloon: &mountain); - lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); - - sys_slist_append(&widgets, &widget->node); - widget_battery_status_init(); - widget_peripheral_status_init(); - - return 0; -} - -lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; } diff --git a/config/boards/shields/nice_view/widgets/peripheral_status.h b/config/boards/shields/nice_view/widgets/peripheral_status.h deleted file mode 100644 index 815963572..000000000 --- a/config/boards/shields/nice_view/widgets/peripheral_status.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#pragma once - -#include -#include -#include "util.h" - -struct zmk_widget_status { - sys_snode_t node; - lv_obj_t *obj; - lv_color_t cbuf[CANVAS_SIZE * CANVAS_SIZE]; - struct status_state state; -}; - -int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent); -lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget); diff --git a/config/boards/shields/nice_view/widgets/status.c b/config/boards/shields/nice_view/widgets/status.c deleted file mode 100644 index 061b7127c..000000000 --- a/config/boards/shields/nice_view/widgets/status.c +++ /dev/null @@ -1,333 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include - -#include -LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); - -#include -#include -#include "status.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); - -struct output_status_state { - struct zmk_endpoint_instance selected_endpoint; - int active_profile_index; - bool active_profile_connected; - bool active_profile_bonded; -}; - -struct layer_status_state { - uint8_t index; - const char *label; -}; - -struct wpm_status_state { - uint8_t wpm; -}; - -static void draw_top(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { - lv_obj_t *canvas = lv_obj_get_child(widget, 0); - - lv_draw_label_dsc_t label_dsc; - init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_16, LV_TEXT_ALIGN_RIGHT); - lv_draw_label_dsc_t label_dsc_wpm; - init_label_dsc(&label_dsc_wpm, LVGL_FOREGROUND, &lv_font_unscii_8, LV_TEXT_ALIGN_RIGHT); - lv_draw_rect_dsc_t rect_black_dsc; - init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); - lv_draw_rect_dsc_t rect_white_dsc; - init_rect_dsc(&rect_white_dsc, LVGL_FOREGROUND); - lv_draw_line_dsc_t line_dsc; - init_line_dsc(&line_dsc, LVGL_FOREGROUND, 1); - - // Fill background - lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); - - // Draw battery - draw_battery(canvas, state); - - // Draw output status - char output_text[10] = {}; - - switch (state->selected_endpoint.transport) { - case ZMK_TRANSPORT_USB: - strcat(output_text, LV_SYMBOL_USB); - break; - case ZMK_TRANSPORT_BLE: - if (state->active_profile_bonded) { - if (state->active_profile_connected) { - strcat(output_text, LV_SYMBOL_WIFI); - } else { - strcat(output_text, LV_SYMBOL_CLOSE); - } - } else { - strcat(output_text, LV_SYMBOL_SETTINGS); - } - break; - } - - lv_canvas_draw_text(canvas, 0, 0, CANVAS_SIZE, &label_dsc, output_text); - - // Draw WPM - lv_canvas_draw_rect(canvas, 0, 21, 68, 42, &rect_white_dsc); - lv_canvas_draw_rect(canvas, 1, 22, 66, 40, &rect_black_dsc); - - char wpm_text[6] = {}; - snprintf(wpm_text, sizeof(wpm_text), "%d", state->wpm[9]); - lv_canvas_draw_text(canvas, 42, 52, 24, &label_dsc_wpm, wpm_text); - - int max = 0; - int min = 256; - - for (int i = 0; i < 10; i++) { - if (state->wpm[i] > max) { - max = state->wpm[i]; - } - if (state->wpm[i] < min) { - min = state->wpm[i]; - } - } - - int range = max - min; - if (range == 0) { - range = 1; - } - - lv_point_t points[10]; - for (int i = 0; i < 10; i++) { - points[i].x = 2 + i * 7; - points[i].y = 60 - (state->wpm[i] - min) * 36 / range; - } - lv_canvas_draw_line(canvas, points, 10, &line_dsc); - - // Rotate canvas - rotate_canvas(canvas, cbuf); -} - -static void draw_middle(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { - lv_obj_t *canvas = lv_obj_get_child(widget, 1); - - lv_draw_rect_dsc_t rect_black_dsc; - init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); - lv_draw_rect_dsc_t rect_white_dsc; - init_rect_dsc(&rect_white_dsc, LVGL_FOREGROUND); - lv_draw_arc_dsc_t arc_dsc; - init_arc_dsc(&arc_dsc, LVGL_FOREGROUND, 2); - lv_draw_arc_dsc_t arc_dsc_filled; - init_arc_dsc(&arc_dsc_filled, LVGL_FOREGROUND, 9); - lv_draw_label_dsc_t label_dsc; - init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_18, LV_TEXT_ALIGN_CENTER); - lv_draw_label_dsc_t label_dsc_black; - init_label_dsc(&label_dsc_black, LVGL_BACKGROUND, &lv_font_montserrat_18, LV_TEXT_ALIGN_CENTER); - - // Fill background - lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); - - // Draw circles - int circle_offsets[5][2] = { - {13, 13}, {55, 13}, {34, 34}, {13, 55}, {55, 55}, - }; - - for (int i = 0; i < 5; i++) { - bool selected = i == state->active_profile_index; - - lv_canvas_draw_arc(canvas, circle_offsets[i][0], circle_offsets[i][1], 13, 0, 360, - &arc_dsc); - - if (selected) { - lv_canvas_draw_arc(canvas, circle_offsets[i][0], circle_offsets[i][1], 9, 0, 359, - &arc_dsc_filled); - } - - char label[2]; - snprintf(label, sizeof(label), "%d", i + 1); - lv_canvas_draw_text(canvas, circle_offsets[i][0] - 8, circle_offsets[i][1] - 10, 16, - (selected ? &label_dsc_black : &label_dsc), label); - } - - // Rotate canvas - rotate_canvas(canvas, cbuf); -} - -static void draw_bottom(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { - lv_obj_t *canvas = lv_obj_get_child(widget, 2); - - lv_draw_rect_dsc_t rect_black_dsc; - init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); - lv_draw_label_dsc_t label_dsc; - init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_14, LV_TEXT_ALIGN_CENTER); - - // Fill background - lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); - - // Draw layer - if (state->layer_label == NULL) { - char text[10] = {}; - - sprintf(text, "LAYER %i", state->layer_index); - - lv_canvas_draw_text(canvas, 0, 5, 68, &label_dsc, text); - } else { - lv_canvas_draw_text(canvas, 0, 5, 68, &label_dsc, state->layer_label); - } - - // Rotate canvas - rotate_canvas(canvas, cbuf); -} - -static void set_battery_status(struct zmk_widget_status *widget, - struct battery_status_state state) { -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) - widget->state.charging = state.usb_present; -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ - - widget->state.battery = state.level; - - draw_top(widget->obj, widget->cbuf, &widget->state); -} - -static void battery_status_update_cb(struct battery_status_state state) { - struct zmk_widget_status *widget; - SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_battery_status(widget, state); } -} - -static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { - const struct zmk_battery_state_changed *ev = as_zmk_battery_state_changed(eh); - - return (struct battery_status_state) { - .level = (ev != NULL) ? ev->state_of_charge : zmk_battery_state_of_charge(), -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) - .usb_present = zmk_usb_is_powered(), -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ - }; -} - -ZMK_DISPLAY_WIDGET_LISTENER(widget_battery_status, struct battery_status_state, - battery_status_update_cb, battery_status_get_state) - -ZMK_SUBSCRIPTION(widget_battery_status, zmk_battery_state_changed); -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) -ZMK_SUBSCRIPTION(widget_battery_status, zmk_usb_conn_state_changed); -#endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ - -static void set_output_status(struct zmk_widget_status *widget, - const struct output_status_state *state) { - widget->state.selected_endpoint = state->selected_endpoint; - widget->state.active_profile_index = state->active_profile_index; - widget->state.active_profile_connected = state->active_profile_connected; - widget->state.active_profile_bonded = state->active_profile_bonded; - - draw_top(widget->obj, widget->cbuf, &widget->state); - draw_middle(widget->obj, widget->cbuf2, &widget->state); -} - -static void output_status_update_cb(struct output_status_state state) { - struct zmk_widget_status *widget; - SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_output_status(widget, &state); } -} - -static struct output_status_state output_status_get_state(const zmk_event_t *_eh) { - return (struct output_status_state){ - .selected_endpoint = zmk_endpoints_selected(), - .active_profile_index = zmk_ble_active_profile_index(), - .active_profile_connected = zmk_ble_active_profile_is_connected(), - .active_profile_bonded = !zmk_ble_active_profile_is_open(), - }; -} - -ZMK_DISPLAY_WIDGET_LISTENER(widget_output_status, struct output_status_state, - output_status_update_cb, output_status_get_state) -ZMK_SUBSCRIPTION(widget_output_status, zmk_endpoint_changed); - -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) -ZMK_SUBSCRIPTION(widget_output_status, zmk_usb_conn_state_changed); -#endif -#if defined(CONFIG_ZMK_BLE) -ZMK_SUBSCRIPTION(widget_output_status, zmk_ble_active_profile_changed); -#endif - -static void set_layer_status(struct zmk_widget_status *widget, struct layer_status_state state) { - widget->state.layer_index = state.index; - widget->state.layer_label = state.label; - - draw_bottom(widget->obj, widget->cbuf3, &widget->state); -} - -static void layer_status_update_cb(struct layer_status_state state) { - struct zmk_widget_status *widget; - SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_layer_status(widget, state); } -} - -static struct layer_status_state layer_status_get_state(const zmk_event_t *eh) { - uint8_t index = zmk_keymap_highest_layer_active(); - return (struct layer_status_state){.index = index, .label = zmk_keymap_layer_name(index)}; -} - -ZMK_DISPLAY_WIDGET_LISTENER(widget_layer_status, struct layer_status_state, layer_status_update_cb, - layer_status_get_state) - -ZMK_SUBSCRIPTION(widget_layer_status, zmk_layer_state_changed); - -static void set_wpm_status(struct zmk_widget_status *widget, struct wpm_status_state state) { - for (int i = 0; i < 9; i++) { - widget->state.wpm[i] = widget->state.wpm[i + 1]; - } - widget->state.wpm[9] = state.wpm; - - draw_top(widget->obj, widget->cbuf, &widget->state); -} - -static void wpm_status_update_cb(struct wpm_status_state state) { - struct zmk_widget_status *widget; - SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_wpm_status(widget, state); } -} - -struct wpm_status_state wpm_status_get_state(const zmk_event_t *eh) { - return (struct wpm_status_state){.wpm = zmk_wpm_get_state()}; -}; - -ZMK_DISPLAY_WIDGET_LISTENER(widget_wpm_status, struct wpm_status_state, wpm_status_update_cb, - wpm_status_get_state) -ZMK_SUBSCRIPTION(widget_wpm_status, zmk_wpm_state_changed); - -int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { - widget->obj = lv_obj_create(parent); - lv_obj_set_size(widget->obj, 160, 68); - lv_obj_t *top = lv_canvas_create(widget->obj); - lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); - lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); - lv_obj_t *middle = lv_canvas_create(widget->obj); - lv_obj_align(middle, LV_ALIGN_TOP_LEFT, 24, 0); - lv_canvas_set_buffer(middle, widget->cbuf2, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); - lv_obj_t *bottom = lv_canvas_create(widget->obj); - lv_obj_align(bottom, LV_ALIGN_TOP_LEFT, -44, 0); - lv_canvas_set_buffer(bottom, widget->cbuf3, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); - - sys_slist_append(&widgets, &widget->node); - widget_battery_status_init(); - widget_output_status_init(); - widget_layer_status_init(); - widget_wpm_status_init(); - - return 0; -} - -lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; } diff --git a/config/boards/shields/nice_view/widgets/status.h b/config/boards/shields/nice_view/widgets/status.h deleted file mode 100644 index 53a22518d..000000000 --- a/config/boards/shields/nice_view/widgets/status.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#pragma once - -#include -#include -#include "util.h" - -struct zmk_widget_status { - sys_snode_t node; - lv_obj_t *obj; - lv_color_t cbuf[CANVAS_SIZE * CANVAS_SIZE]; - lv_color_t cbuf2[CANVAS_SIZE * CANVAS_SIZE]; - lv_color_t cbuf3[CANVAS_SIZE * CANVAS_SIZE]; - struct status_state state; -}; - -int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent); -lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget); diff --git a/config/boards/shields/nice_view/widgets/util.c b/config/boards/shields/nice_view/widgets/util.c deleted file mode 100644 index b4915ab76..000000000 --- a/config/boards/shields/nice_view/widgets/util.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include -#include "util.h" - -LV_IMG_DECLARE(bolt); - -void rotate_canvas(lv_obj_t *canvas, lv_color_t cbuf[]) { - static lv_color_t cbuf_tmp[CANVAS_SIZE * CANVAS_SIZE]; - memcpy(cbuf_tmp, cbuf, sizeof(cbuf_tmp)); - lv_img_dsc_t img; - img.data = (void *)cbuf_tmp; - img.header.cf = LV_IMG_CF_TRUE_COLOR; - img.header.w = CANVAS_SIZE; - img.header.h = CANVAS_SIZE; - - lv_canvas_fill_bg(canvas, LVGL_BACKGROUND, LV_OPA_COVER); - lv_canvas_transform(canvas, &img, 900, LV_IMG_ZOOM_NONE, -1, 0, CANVAS_SIZE / 2, - CANVAS_SIZE / 2, true); -} - -void draw_battery(lv_obj_t *canvas, const struct status_state *state) { - lv_draw_rect_dsc_t rect_black_dsc; - init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); - lv_draw_rect_dsc_t rect_white_dsc; - init_rect_dsc(&rect_white_dsc, LVGL_FOREGROUND); - - lv_canvas_draw_rect(canvas, 0, 2, 29, 12, &rect_white_dsc); - lv_canvas_draw_rect(canvas, 1, 3, 27, 10, &rect_black_dsc); - lv_canvas_draw_rect(canvas, 2, 4, (state->battery + 2) / 4, 8, &rect_white_dsc); - lv_canvas_draw_rect(canvas, 30, 5, 3, 6, &rect_white_dsc); - lv_canvas_draw_rect(canvas, 31, 6, 1, 4, &rect_black_dsc); - - if (state->charging) { - lv_draw_img_dsc_t img_dsc; - lv_draw_img_dsc_init(&img_dsc); - lv_canvas_draw_img(canvas, 9, -1, &bolt, &img_dsc); - } -} - -void init_label_dsc(lv_draw_label_dsc_t *label_dsc, lv_color_t color, const lv_font_t *font, - lv_text_align_t align) { - lv_draw_label_dsc_init(label_dsc); - label_dsc->color = color; - label_dsc->font = font; - label_dsc->align = align; -} - -void init_rect_dsc(lv_draw_rect_dsc_t *rect_dsc, lv_color_t bg_color) { - lv_draw_rect_dsc_init(rect_dsc); - rect_dsc->bg_color = bg_color; -} - -void init_line_dsc(lv_draw_line_dsc_t *line_dsc, lv_color_t color, uint8_t width) { - lv_draw_line_dsc_init(line_dsc); - line_dsc->color = color; - line_dsc->width = width; -} - -void init_arc_dsc(lv_draw_arc_dsc_t *arc_dsc, lv_color_t color, uint8_t width) { - lv_draw_arc_dsc_init(arc_dsc); - arc_dsc->color = color; - arc_dsc->width = width; -} diff --git a/config/boards/shields/nice_view/widgets/util.h b/config/boards/shields/nice_view/widgets/util.h deleted file mode 100644 index fbcb616fa..000000000 --- a/config/boards/shields/nice_view/widgets/util.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * - * Copyright (c) 2023 The ZMK Contributors - * SPDX-License-Identifier: MIT - * - */ - -#include -#include - -#define CANVAS_SIZE 68 - -#define LVGL_BACKGROUND \ - IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_INVERTED) ? lv_color_black() : lv_color_white() -#define LVGL_FOREGROUND \ - IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_INVERTED) ? lv_color_white() : lv_color_black() - -struct status_state { - uint8_t battery; - bool charging; -#if !IS_ENABLED(CONFIG_ZMK_SPLIT) || IS_ENABLED(CONFIG_ZMK_SPLIT_ROLE_CENTRAL) - struct zmk_endpoint_instance selected_endpoint; - int active_profile_index; - bool active_profile_connected; - bool active_profile_bonded; - uint8_t layer_index; - const char *layer_label; - uint8_t wpm[10]; -#else - bool connected; -#endif -}; - -struct battery_status_state { - uint8_t level; -#if IS_ENABLED(CONFIG_USB_DEVICE_STACK) - bool usb_present; -#endif -}; - -void rotate_canvas(lv_obj_t *canvas, lv_color_t cbuf[]); -void draw_battery(lv_obj_t *canvas, const struct status_state *state); -void init_label_dsc(lv_draw_label_dsc_t *label_dsc, lv_color_t color, const lv_font_t *font, - lv_text_align_t align); -void init_rect_dsc(lv_draw_rect_dsc_t *rect_dsc, lv_color_t bg_color); -void init_line_dsc(lv_draw_line_dsc_t *line_dsc, lv_color_t color, uint8_t width); -void init_arc_dsc(lv_draw_arc_dsc_t *arc_dsc, lv_color_t color, uint8_t width); 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 e69de29bb..000000000 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 e465bd02b..000000000 --- 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/corne_left.overlay b/config/boards/shields/nice_view_adapter/boards/corne_left.overlay deleted file mode 100644 index 982bc3215..000000000 --- a/config/boards/shields/nice_view_adapter/boards/corne_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/corne_right.overlay b/config/boards/shields/nice_view_adapter/boards/corne_right.overlay deleted file mode 100644 index 982bc3215..000000000 --- a/config/boards/shields/nice_view_adapter/boards/corne_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 07872d2e0..000000000 --- a/config/boards/shields/nice_view_adapter/nice_view_adapter.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_SSD1306=n -# Enable Nice View -#CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=y -#CONFIG_ZMK_LV_FONT_DEFAULT_SMALL_MONTSERRAT_26=y -#CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26=y -CONFIG_ZMK_DISPLAY_STATUS_SCREEN_CUSTOM=y \ No newline at end of file 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 e69de29bb..000000000 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 3d44235d6..000000000 --- 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/corne.conf b/config/corne.conf index 861aae6f8..b8b88289f 100644 --- a/config/corne.conf +++ b/config/corne.conf @@ -21,4 +21,9 @@ CONFIG_ZMK_RGB_UNDERGLOW_EFF_START=3 CONFIG_EC11=y CONFIG_EC11_TRIGGER_GLOBAL_THREAD=y -CONFIG_ZMK_MOUSE=y \ No newline at end of file +CONFIG_ZMK_MOUSE=y + +CONFIG_ZMK_HID_REPORT_TYPE_NKRO=n + +CONFIG_ZMK_BACKLIGHT=y +CONFIG_ZMK_BACKLIGHT_BRT_START=100 diff --git a/config/corne.keymap b/config/corne.keymap index ea2331cad..7fca41439 100644 --- a/config/corne.keymap +++ b/config/corne.keymap @@ -1,12 +1,27 @@ -#define ZMK_MOUSE_DEFAULT_SCRL_VAL 35 // 10 - -#include #include #include -#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 &msc { acceleration-exponent = <0>; // 0 diff --git a/config/west.yml b/config/west.yml index e2904e643..bd2061b12 100644 --- a/config/west.yml +++ b/config/west.yml @@ -7,7 +7,7 @@ manifest: projects: - name: zmk remote: zmkfirmware - revision: feat/pointers-move-scroll + revision: feat/pointers-with-input-processors import: app/west.yml - name: mario-peripheral-animation remote: gpeye