diff --git a/app/boards/shields/jnumpad/Kconfig.defconfig b/app/boards/shields/jnumpad/Kconfig.defconfig new file mode 100644 index 000000000..19698c0c0 --- /dev/null +++ b/app/boards/shields/jnumpad/Kconfig.defconfig @@ -0,0 +1,40 @@ +# Copyright (c) 2020 Pete Johanson, Richard Jones +# SPDX-License-Identifier: MIT + +if SHIELD_JNUMPAD + +config ZMK_KEYBOARD_NAME + default "jNumpad Wireless" + +endif + + +if ZMK_DISPLAY + +config I2C + default y + +config SSD1306 + default y + +config SSD1306_REVERSE_MODE + default y + +endif # ZMK_DISPLAY + +if LVGL + +config LV_Z_VDB_SIZE + default 64 + +config LV_Z_DPI + default 148 + +config LV_Z_BITS_PER_PIXEL + default 1 + +choice LV_COLOR_DEPTH + default LV_COLOR_DEPTH_1 +endchoice + +endif # LVGL \ No newline at end of file diff --git a/app/boards/shields/jnumpad/Kconfig.shield b/app/boards/shields/jnumpad/Kconfig.shield new file mode 100644 index 000000000..d299da0a9 --- /dev/null +++ b/app/boards/shields/jnumpad/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 Pete Johanson, Richard Jones +# SPDX-License-Identifier: MIT + +config SHIELD_JNUMPAD + def_bool $(shields_list_contains,jnumpad) diff --git a/app/boards/shields/jnumpad/jnumpad.conf b/app/boards/shields/jnumpad/jnumpad.conf new file mode 100644 index 000000000..415c67326 --- /dev/null +++ b/app/boards/shields/jnumpad/jnumpad.conf @@ -0,0 +1,7 @@ +CONFIG_ZMK_DISPLAY=y +CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=y +CONFIG_ZMK_DISPLAY_WORK_QUEUE_SYSTEM=y +CONFIG_ZMK_WIDGET_BATTERY_STATUS=y +CONFIG_ZMK_WIDGET_BATTERY_STATUS_SHOW_PERCENTAGE=y +CONFIG_ZMK_WIDGET_WPM_STATUS=y +CONFIG_ZMK_EXT_POWER=y \ No newline at end of file diff --git a/app/boards/shields/jnumpad/jnumpad.dtsi b/app/boards/shields/jnumpad/jnumpad.dtsi new file mode 100644 index 000000000..99c493da6 --- /dev/null +++ b/app/boards/shields/jnumpad/jnumpad.dtsi @@ -0,0 +1,48 @@ +/ { + chosen { + zmk,kscan = &kscan0; + zephyr,display = &oled; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + col-gpios + = <&pro_micro 9 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + ; + + }; +}; + +&pro_micro_i2c { +status = "okay"; + +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>; +}; +}; diff --git a/app/boards/shields/jnumpad/jnumpad.keymap b/app/boards/shields/jnumpad/jnumpad.keymap new file mode 100644 index 000000000..fad5de6cb --- /dev/null +++ b/app/boards/shields/jnumpad/jnumpad.keymap @@ -0,0 +1,73 @@ +// numpad.keymap + +#include +#include +#include +#include + +/ { + combos { + compatible = "zmk,combos"; + combo_ext_pwr { + timeout-ms = <50>; + key-positions = <1 2>; + bindings = <&ext_power EP_TOG>; + }; + combo_bt_prv { + timeout-ms = <50>; + key-positions = <1 3>; + bindings = <&bt BT_PRV>; + }; + combo_bt_nxt { + timeout-ms = <50>; + key-positions = <1 7>; + bindings = <&bt BT_NXT>; + }; + combo_reset { + timeout-ms = <50>; + key-positions = <1 15>; + bindings = <&sys_reset>; + }; + combo_btclr { + timeout-ms = <50>; + key-positions = <1 16>; + bindings = <&bt BT_CLR>; + }; + combo_btldr { + timeout-ms = <50>; + key-positions = <1 18>; + bindings = <&bootloader>; + }; + }; +}; + +/ { + keymap { + compatible = "zmk,keymap"; + + + default_layer { +// ┌───┬───┬───┬───┐ +// │NUM│ / │ * │ - │ +// ├───┼───┼───┼───┤ +// │ 7 │ 8 │ 9 │ + │ +// ├───┼───┼───┼─ ─┤ +// │ 4 │ 5 │ 6 │ │ +// ├───┼───┼───┼───┤ +// │ 1 │ 2 │ 3 │RET│ +// ├───┴───┼───┼─ ─┤ +// │ 0 │ . │ │ +// └───────┴───┴───┘ + bindings = < + &kp KP_NUM &kp KP_DIVIDE &kp KP_MULTIPLY &kp KP_MINUS + &kp KP_N7 &kp KP_N8 &kp KP_N9 &kp KP_PLUS + &kp KP_N4 &kp KP_N5 &kp KP_N6 &trans + &kp KP_N1 &kp KP_N2 &kp KP_N3 &kp KP_ENTER + &kp KP_N0 &trans &kp KP_DOT &trans + >; + }; + + + }; +}; + diff --git a/app/boards/shields/jnumpad/jnumpad.overlay b/app/boards/shields/jnumpad/jnumpad.overlay new file mode 100644 index 000000000..8aaccf1c5 --- /dev/null +++ b/app/boards/shields/jnumpad/jnumpad.overlay @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020 Pete Johanson, Richard Jones + * + * SPDX-License-Identifier: MIT + */ + +#include +#include "jnumpad.dtsi" +/ { + chosen { + zmk,kscan = &kscan0; + zephyr,display = &oled; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro 10 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + col-gpios + = <&pro_micro 9 GPIO_ACTIVE_HIGH> + , <&pro_micro 8 GPIO_ACTIVE_HIGH> + , <&pro_micro 7 GPIO_ACTIVE_HIGH> + , <&pro_micro 6 GPIO_ACTIVE_HIGH> + ; + + }; + +}; + diff --git a/app/boards/shields/pslgh/Kconfig.defconfig b/app/boards/shields/pslgh/Kconfig.defconfig new file mode 100644 index 000000000..cdb09e869 --- /dev/null +++ b/app/boards/shields/pslgh/Kconfig.defconfig @@ -0,0 +1,10 @@ +# Copyright (c) 2020 Pete Johanson, Richard Jones +# SPDX-License-Identifier: MIT + +if SHIELD_PSLGH + +config ZMK_KEYBOARD_NAME + default "PSLGH" + +endif + diff --git a/app/boards/shields/pslgh/Kconfig.shield b/app/boards/shields/pslgh/Kconfig.shield new file mode 100644 index 000000000..c3253284c --- /dev/null +++ b/app/boards/shields/pslgh/Kconfig.shield @@ -0,0 +1,5 @@ +# Copyright (c) 2020 Pete Johanson, Richard Jones +# SPDX-License-Identifier: MIT + +config SHIELD_PSLGH + def_bool $(shields_list_contains,pslgh) diff --git a/app/boards/shields/pslgh/pslgh.conf b/app/boards/shields/pslgh/pslgh.conf new file mode 100644 index 000000000..e69de29bb diff --git a/app/boards/shields/pslgh/pslgh.keymap b/app/boards/shields/pslgh/pslgh.keymap new file mode 100644 index 000000000..cb73d9333 --- /dev/null +++ b/app/boards/shields/pslgh/pslgh.keymap @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020 Pete Johanson, Richard Jones + * + * SPDX-License-Identifier: MIT + */ + +#include +#include +#include + +/ { + keymap { + compatible = "zmk,keymap"; + + default_layer { +// ------------------- +// | | | | | A | S | J | K | L | +// | UP |DOWN |ENTER| H | | | | | | +// ---------------------- + bindings = < + &trans &trans &trans &trans &kp A &kp S &kp J &kp K &kp L + &trans &trans &kp RET &kp H &trans &trans &trans &trans &trans + &kp UARW &kp DARW &trans &trans &trans &trans &trans &trans &trans + >; + }; + }; +}; + + diff --git a/app/boards/shields/pslgh/pslgh.overlay b/app/boards/shields/pslgh/pslgh.overlay new file mode 100644 index 000000000..3989b6c94 --- /dev/null +++ b/app/boards/shields/pslgh/pslgh.overlay @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2020 Pete Johanson, Richard Jones + * + * SPDX-License-Identifier: MIT + */ + +#include + +/ { + chosen { + zmk,kscan = &kscan0; + }; + + kscan0: kscan { + compatible = "zmk,kscan-gpio-matrix"; + label = "KSCAN"; + + diode-direction = "col2row"; + row-gpios + = <&pro_micro_d 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + , <&pro_micro_d 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> + ; + + col-gpios + = <&pro_micro_a 1 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 2 GPIO_ACTIVE_HIGH> + , <&pro_micro_a 0 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 14 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 7 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 6 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 5 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 4 GPIO_ACTIVE_HIGH> + , <&pro_micro_d 3 GPIO_ACTIVE_HIGH> + ; + + }; + + bt_unpair_combo: bt_unpair_combo { + compatible = "zmk,bt-unpair-combo"; + key-positions = <0 11>; + }; + +}; + +/* +x x +x x +r1 x +a down +k up +j enter +s r2 +a h +x x +x r3 +*/ \ No newline at end of file