From 568624be19664c14a8e1b5c87edf633f53209f0a Mon Sep 17 00:00:00 2001 From: kemonine Date: Fri, 21 Jan 2022 20:03:24 -0500 Subject: [PATCH] total clean up based on current keyboard setups --- {7skb => attic/layouts/7skb}/blank.json | 0 {7skb => attic/layouts/7skb}/blank.png | Bin {7skb => attic/layouts/7skb}/layer-1.json | 0 {7skb => attic/layouts/7skb}/layer-1.png | Bin .../layouts/7skb}/layer-2-and-3.json | 0 .../layouts/7skb}/layer-2-and-3.png | Bin {7skb => attic/layouts/7skb}/layout-misc.json | 0 {7skb => attic/layouts/7skb}/layout-misc.png | Bin .../corne}/6 column/layer-1---default.json | 0 .../corne}/6 column/layer-1---default.png | Bin .../corne}/6 column/layer-2---function.json | 0 .../corne}/6 column/layer-2---function.png | Bin .../layouts/kbdfans}/kbd67/rev2/README.md | 0 .../layouts/kbdfans}/kbd67/rev2/config.h | 0 .../rev2/kbdfans_kbd67_rev2_kemonine.hex | 0 .../layouts/kbdfans}/kbd67/rev2/keymap.c | 0 .../layouts/kbdfans}/kbd67/rev2/layer-1.json | 0 .../layouts/kbdfans}/kbd67/rev2/layer-1.png | Bin .../layouts/kbdfans}/kbd67/rev2/layer-2.json | 0 .../layouts/kbdfans}/kbd67/rev2/layer-2.png | Bin .../layouts/kbdfans}/kbd67/rev2/layer-3.json | 0 .../layouts/kbdfans}/kbd67/rev2/layer-3.png | Bin .../layouts/kbdfans}/kbd67/rev2/rules.mk | 0 .../layouts/lily58pro}/layer-1---default.json | 0 .../layouts/lily58pro}/layer-1---default.png | Bin .../lily58pro}/layer-2---function.json | 0 .../layouts/lily58pro}/layer-2---function.png | Bin .../makerdiary}/m60/layer-1---default.json | 0 .../makerdiary}/m60/layer-1---default.png | Bin .../makerdiary}/m60/layer-2---function.json | 0 .../makerdiary}/m60/layer-2---function.png | Bin .../layouts/massdrop}/alt/README.md | 0 .../layouts/massdrop}/alt/config.h | 0 .../layouts/massdrop}/alt/keymap.c | 0 .../layouts/massdrop}/alt/layer-1.json | 0 .../layouts/massdrop}/alt/layer-1.png | Bin .../layouts/massdrop}/alt/layer-2.json | 0 .../layouts/massdrop}/alt/layer-2.png | Bin .../layouts/massdrop}/alt/layer-3.json | 0 .../layouts/massdrop}/alt/layer-3.png | Bin .../massdrop}/alt/massdrop_alt_kemonine.bin | Bin .../layouts/massdrop}/alt/rules.mk | 0 .../tidbit/layer-1---navigation.json | 0 .../tidbit/layer-1---navigation.png | Bin .../nullbitsco}/tidbit/layer-2---mouse.json | 0 .../nullbitsco}/tidbit/layer-2---mouse.png | Bin .../tidbit/layer-3---number-pad.json | 0 .../tidbit/layer-3---number-pad.png | Bin .../nullbitsco}/tidbit/layer-4---zmk.json | 0 .../nullbitsco}/tidbit/layer-4---zmk.png | Bin .../layouts/qvex}/lynepad/README.md | 0 {qvex => attic/layouts/qvex}/lynepad/config.h | 0 {qvex => attic/layouts/qvex}/lynepad/keymap.c | 0 .../layouts/qvex}/lynepad/layer-1.json | 0 .../layouts/qvex}/lynepad/layer-1.png | Bin .../qvex}/lynepad/layer-2---lr-library.json | 0 .../qvex}/lynepad/layer-2---lr-library.png | Bin .../qvex}/lynepad/layer-3---lr-develop.json | 0 .../qvex}/lynepad/layer-3---lr-develop.png | Bin .../qvex}/lynepad/qvex_lynepad_kemonine.hex | 0 {qvex => attic/layouts/qvex}/lynepad/rules.mk | 0 .../layouts/tg4x}/layer-1---default.json | 0 .../layouts/tg4x}/layer-1---default.png | Bin .../layouts/tg4x}/layer-2---function.json | 0 .../layouts/tg4x}/layer-2---function.png | Bin .../layouts/tg4x}/layer-2---other.json | 0 .../layouts/tg4x}/layer-2---other.png | Bin attic/qmk/kbdfans/kbd67/rev2/README.md | 5 + attic/qmk/kbdfans/kbd67/rev2/config.h | 15 + attic/qmk/kbdfans/kbd67/rev2/keymap.c | 202 +++++++++++ attic/qmk/kbdfans/kbd67/rev2/rules.mk | 2 + attic/qmk/massdrop/alt/README.md | 5 + attic/qmk/massdrop/alt/config.h | 13 + attic/qmk/massdrop/alt/keymap.c | 266 ++++++++++++++ attic/qmk/massdrop/alt/rules.mk | 2 + attic/qmk/qvex/lynepad/README.md | 5 + attic/qmk/qvex/lynepad/config.h | 33 ++ attic/qmk/qvex/lynepad/keymap.c | 333 ++++++++++++++++++ attic/qmk/qvex/lynepad/rules.mk | 1 + .../arm/itsybitsy_nrf52840/CMakeLists.txt | 0 .../boards/arm/itsybitsy_nrf52840/Kconfig | 0 .../arm/itsybitsy_nrf52840/Kconfig.board | 0 .../arm/itsybitsy_nrf52840/Kconfig.defconfig | 0 .../boards/arm/itsybitsy_nrf52840/README.md | 0 .../boards/arm/itsybitsy_nrf52840/board.cmake | 0 .../itsybitsy_nrf52840/itsybitsy_nrf52840.dts | 0 .../itsybitsy_nrf52840.yaml | 0 .../itsybitsy_nrf52840_defconfig | 0 .../sparkfun_pro_nrf52840_mini/CMakeLists.txt | 0 .../arm/sparkfun_pro_nrf52840_mini/Kconfig | 0 .../sparkfun_pro_nrf52840_mini/Kconfig.board | 0 .../Kconfig.defconfig | 0 .../arm/sparkfun_pro_nrf52840_mini/README.md | 0 .../arduino_pro_micro_pins.dtsi | 0 .../sparkfun_pro_nrf52840_mini/board.cmake | 0 .../sparkfun_pro_nrf52840_mini.dts | 0 .../sparkfun_pro_nrf52840_mini.yaml | 0 .../sparkfun_pro_nrf52840_mini_defconfig | 0 .../config/boards/shields/7skb/7skb.conf | 0 .../config/boards/shields/7skb/7skb.dtsi | 0 .../config/boards/shields/7skb/7skb.keymap | 0 .../config/boards/shields/7skb/7skb_left.conf | 0 .../boards/shields/7skb/7skb_left.overlay | 0 .../boards/shields/7skb/7skb_right.conf | 0 .../boards/shields/7skb/7skb_right.overlay | 0 .../boards/shields/7skb/Kconfig.defconfig | 0 .../config/boards/shields/7skb/Kconfig.shield | 0 .../boards/shields/7skb/boards/nice_nano.conf | 0 .../shields/7skb/boards/nice_nano.overlay | 0 .../shields/azarashi64/Kconfig.defconfig | 0 .../boards/shields/azarashi64/Kconfig.shield | 0 .../boards/shields/azarashi64/README.md | 0 .../boards/shields/azarashi64/azarashi64.conf | 0 .../boards/shields/azarashi64/azarashi64.dtsi | 0 .../shields/azarashi64/azarashi64.keymap | 0 .../shields/azarashi64/azarashi64_left.conf | 0 .../azarashi64/azarashi64_left.overlay | 0 .../shields/azarashi64/azarashi64_right.conf | 0 .../azarashi64/azarashi64_right.overlay | 0 .../boards/shields/navi10/Kconfig.defconfig | 0 .../boards/shields/navi10/Kconfig.shield | 0 .../config/boards/shields/navi10/navi10.conf | 0 .../boards/shields/navi10/navi10.keymap | 0 .../boards/shields/navi10/navi10.overlay | 0 .../boards/shields/tg4x/Kconfig.defconfig | 0 .../config/boards/shields/tg4x/Kconfig.shield | 0 .../config/boards/shields/tg4x/README.md | 0 .../boards/shields/tg4x/boards/nice_nano.conf | 0 .../shields/tg4x/boards/nice_nano.overlay | 0 .../config/boards/shields/tg4x/tg4x.conf | 0 .../config/boards/shields/tg4x/tg4x.keymap | 0 .../config/boards/shields/tg4x/tg4x.overlay | 0 .../zmk-config}/config/corne.conf | 0 .../zmk-config}/config/corne.keymap | 0 .../zmk-config}/config/lily58.conf | 0 .../zmk-config}/config/lily58.keymap | 0 .../zmk-config}/config/nibble.conf | 0 .../zmk-config}/config/nibble.keymap | 0 .../zmk-config}/config/tg4x.conf | 0 .../zmk-config}/config/tg4x.keymap | 0 attic/zmk-config/config/west.yml | 11 + .../zmk-config}/vscode/extensions.json | 0 .../vscode/workspace.code-workspace | 0 {miryoku => layouts/miryoku}/miryoku.json | 0 {miryoku => layouts/miryoku}/miryoku.png | Bin .../tidbit/layer-1---navigation.json | 46 +++ .../tidbit/layer-1---navigation.png | Bin 0 -> 13569 bytes .../nullbitsco/tidbit/layer-2---mouse.json | 46 +++ layouts/nullbitsco/tidbit/layer-2---mouse.png | Bin 0 -> 16361 bytes .../tidbit/layer-3---number-pad.json | 46 +++ .../tidbit/layer-3---number-pad.png | Bin 0 -> 10161 bytes layouts/nullbitsco/tidbit/layer-4---zmk.json | 46 +++ layouts/nullbitsco/tidbit/layer-4---zmk.png | Bin 0 -> 13370 bytes .../pockettype}/layer-1---default.json | 0 .../pockettype}/layer-1---default.png | Bin .../pockettype}/layer-2---function.json | 0 .../pockettype}/layer-2---function.png | Bin .../pockettype}/layer-3---other.json | 0 .../pockettype}/layer-3---other.png | Bin nullbitsco/nibble/layer-1.json | 144 -------- nullbitsco/nibble/layer-1.png | Bin 28137 -> 0 bytes nullbitsco/nibble/layer-2.json | 132 ------- nullbitsco/nibble/layer-2.png | Bin 25707 -> 0 bytes 163 files changed, 1077 insertions(+), 276 deletions(-) rename {7skb => attic/layouts/7skb}/blank.json (100%) rename {7skb => attic/layouts/7skb}/blank.png (100%) rename {7skb => attic/layouts/7skb}/layer-1.json (100%) rename {7skb => attic/layouts/7skb}/layer-1.png (100%) rename {7skb => attic/layouts/7skb}/layer-2-and-3.json (100%) rename {7skb => attic/layouts/7skb}/layer-2-and-3.png (100%) rename {7skb => attic/layouts/7skb}/layout-misc.json (100%) rename {7skb => attic/layouts/7skb}/layout-misc.png (100%) rename {corne => attic/layouts/corne}/6 column/layer-1---default.json (100%) rename {corne => attic/layouts/corne}/6 column/layer-1---default.png (100%) rename {corne => attic/layouts/corne}/6 column/layer-2---function.json (100%) rename {corne => attic/layouts/corne}/6 column/layer-2---function.png (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/README.md (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/config.h (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/kbdfans_kbd67_rev2_kemonine.hex (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/keymap.c (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/layer-1.json (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/layer-1.png (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/layer-2.json (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/layer-2.png (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/layer-3.json (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/layer-3.png (100%) rename {kbdfans => attic/layouts/kbdfans}/kbd67/rev2/rules.mk (100%) rename {lily58pro => attic/layouts/lily58pro}/layer-1---default.json (100%) rename {lily58pro => attic/layouts/lily58pro}/layer-1---default.png (100%) rename {lily58pro => attic/layouts/lily58pro}/layer-2---function.json (100%) rename {lily58pro => attic/layouts/lily58pro}/layer-2---function.png (100%) rename {makerdiary => attic/layouts/makerdiary}/m60/layer-1---default.json (100%) rename {makerdiary => attic/layouts/makerdiary}/m60/layer-1---default.png (100%) rename {makerdiary => attic/layouts/makerdiary}/m60/layer-2---function.json (100%) rename {makerdiary => attic/layouts/makerdiary}/m60/layer-2---function.png (100%) rename {massdrop => attic/layouts/massdrop}/alt/README.md (100%) rename {massdrop => attic/layouts/massdrop}/alt/config.h (100%) rename {massdrop => attic/layouts/massdrop}/alt/keymap.c (100%) rename {massdrop => attic/layouts/massdrop}/alt/layer-1.json (100%) rename {massdrop => attic/layouts/massdrop}/alt/layer-1.png (100%) rename {massdrop => attic/layouts/massdrop}/alt/layer-2.json (100%) rename {massdrop => attic/layouts/massdrop}/alt/layer-2.png (100%) rename {massdrop => attic/layouts/massdrop}/alt/layer-3.json (100%) rename {massdrop => attic/layouts/massdrop}/alt/layer-3.png (100%) rename {massdrop => attic/layouts/massdrop}/alt/massdrop_alt_kemonine.bin (100%) rename {massdrop => attic/layouts/massdrop}/alt/rules.mk (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-1---navigation.json (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-1---navigation.png (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-2---mouse.json (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-2---mouse.png (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-3---number-pad.json (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-3---number-pad.png (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-4---zmk.json (100%) rename {nullbitsco => attic/layouts/nullbitsco}/tidbit/layer-4---zmk.png (100%) rename {qvex => attic/layouts/qvex}/lynepad/README.md (100%) rename {qvex => attic/layouts/qvex}/lynepad/config.h (100%) rename {qvex => attic/layouts/qvex}/lynepad/keymap.c (100%) rename {qvex => attic/layouts/qvex}/lynepad/layer-1.json (100%) rename {qvex => attic/layouts/qvex}/lynepad/layer-1.png (100%) rename {qvex => attic/layouts/qvex}/lynepad/layer-2---lr-library.json (100%) rename {qvex => attic/layouts/qvex}/lynepad/layer-2---lr-library.png (100%) rename {qvex => attic/layouts/qvex}/lynepad/layer-3---lr-develop.json (100%) rename {qvex => attic/layouts/qvex}/lynepad/layer-3---lr-develop.png (100%) rename {qvex => attic/layouts/qvex}/lynepad/qvex_lynepad_kemonine.hex (100%) rename {qvex => attic/layouts/qvex}/lynepad/rules.mk (100%) rename {tg4x => attic/layouts/tg4x}/layer-1---default.json (100%) rename {tg4x => attic/layouts/tg4x}/layer-1---default.png (100%) rename {tg4x => attic/layouts/tg4x}/layer-2---function.json (100%) rename {tg4x => attic/layouts/tg4x}/layer-2---function.png (100%) rename {tg4x => attic/layouts/tg4x}/layer-2---other.json (100%) rename {tg4x => attic/layouts/tg4x}/layer-2---other.png (100%) create mode 100644 attic/qmk/kbdfans/kbd67/rev2/README.md create mode 100644 attic/qmk/kbdfans/kbd67/rev2/config.h create mode 100644 attic/qmk/kbdfans/kbd67/rev2/keymap.c create mode 100644 attic/qmk/kbdfans/kbd67/rev2/rules.mk create mode 100644 attic/qmk/massdrop/alt/README.md create mode 100644 attic/qmk/massdrop/alt/config.h create mode 100644 attic/qmk/massdrop/alt/keymap.c create mode 100644 attic/qmk/massdrop/alt/rules.mk create mode 100644 attic/qmk/qvex/lynepad/README.md create mode 100644 attic/qmk/qvex/lynepad/config.h create mode 100644 attic/qmk/qvex/lynepad/keymap.c create mode 100644 attic/qmk/qvex/lynepad/rules.mk rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/CMakeLists.txt (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/Kconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/Kconfig.board (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/Kconfig.defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/README.md (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/board.cmake (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.dts (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.yaml (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840_defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/CMakeLists.txt (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.board (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/README.md (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/arduino_pro_micro_pins.dtsi (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/board.cmake (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.dts (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.yaml (100%) rename {zmk-config => attic/zmk-config}/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini_defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb.conf (100%) mode change 100755 => 100644 rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb.dtsi (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb.keymap (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb_left.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb_left.overlay (100%) mode change 100755 => 100644 rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb_right.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/7skb_right.overlay (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/Kconfig.defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/Kconfig.shield (100%) mode change 100755 => 100644 rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/boards/nice_nano.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/7skb/boards/nice_nano.overlay (100%) mode change 100755 => 100644 rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/Kconfig.defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/Kconfig.shield (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/README.md (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64.dtsi (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64.keymap (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64_left.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64_left.overlay (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64_right.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/azarashi64/azarashi64_right.overlay (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/navi10/Kconfig.defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/navi10/Kconfig.shield (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/navi10/navi10.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/navi10/navi10.keymap (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/navi10/navi10.overlay (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/Kconfig.defconfig (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/Kconfig.shield (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/README.md (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/boards/nice_nano.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/boards/nice_nano.overlay (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/tg4x.conf (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/tg4x.keymap (100%) rename {zmk-config => attic/zmk-config}/config/boards/shields/tg4x/tg4x.overlay (100%) rename {zmk-config => attic/zmk-config}/config/corne.conf (100%) rename {zmk-config => attic/zmk-config}/config/corne.keymap (100%) rename {zmk-config => attic/zmk-config}/config/lily58.conf (100%) rename {zmk-config => attic/zmk-config}/config/lily58.keymap (100%) rename {zmk-config => attic/zmk-config}/config/nibble.conf (100%) rename {zmk-config => attic/zmk-config}/config/nibble.keymap (100%) rename {zmk-config => attic/zmk-config}/config/tg4x.conf (100%) rename {zmk-config => attic/zmk-config}/config/tg4x.keymap (100%) create mode 100644 attic/zmk-config/config/west.yml rename {zmk-config => attic/zmk-config}/vscode/extensions.json (100%) rename {zmk-config => attic/zmk-config}/vscode/workspace.code-workspace (100%) rename {miryoku => layouts/miryoku}/miryoku.json (100%) rename {miryoku => layouts/miryoku}/miryoku.png (100%) create mode 100644 layouts/nullbitsco/tidbit/layer-1---navigation.json create mode 100644 layouts/nullbitsco/tidbit/layer-1---navigation.png create mode 100644 layouts/nullbitsco/tidbit/layer-2---mouse.json create mode 100644 layouts/nullbitsco/tidbit/layer-2---mouse.png create mode 100644 layouts/nullbitsco/tidbit/layer-3---number-pad.json create mode 100644 layouts/nullbitsco/tidbit/layer-3---number-pad.png create mode 100644 layouts/nullbitsco/tidbit/layer-4---zmk.json create mode 100644 layouts/nullbitsco/tidbit/layer-4---zmk.png rename {pockettype => layouts/pockettype}/layer-1---default.json (100%) rename {pockettype => layouts/pockettype}/layer-1---default.png (100%) rename {pockettype => layouts/pockettype}/layer-2---function.json (100%) rename {pockettype => layouts/pockettype}/layer-2---function.png (100%) rename {pockettype => layouts/pockettype}/layer-3---other.json (100%) rename {pockettype => layouts/pockettype}/layer-3---other.png (100%) delete mode 100644 nullbitsco/nibble/layer-1.json delete mode 100644 nullbitsco/nibble/layer-1.png delete mode 100644 nullbitsco/nibble/layer-2.json delete mode 100644 nullbitsco/nibble/layer-2.png diff --git a/7skb/blank.json b/attic/layouts/7skb/blank.json similarity index 100% rename from 7skb/blank.json rename to attic/layouts/7skb/blank.json diff --git a/7skb/blank.png b/attic/layouts/7skb/blank.png similarity index 100% rename from 7skb/blank.png rename to attic/layouts/7skb/blank.png diff --git a/7skb/layer-1.json b/attic/layouts/7skb/layer-1.json similarity index 100% rename from 7skb/layer-1.json rename to attic/layouts/7skb/layer-1.json diff --git a/7skb/layer-1.png b/attic/layouts/7skb/layer-1.png similarity index 100% rename from 7skb/layer-1.png rename to attic/layouts/7skb/layer-1.png diff --git a/7skb/layer-2-and-3.json b/attic/layouts/7skb/layer-2-and-3.json similarity index 100% rename from 7skb/layer-2-and-3.json rename to attic/layouts/7skb/layer-2-and-3.json diff --git a/7skb/layer-2-and-3.png b/attic/layouts/7skb/layer-2-and-3.png similarity index 100% rename from 7skb/layer-2-and-3.png rename to attic/layouts/7skb/layer-2-and-3.png diff --git a/7skb/layout-misc.json b/attic/layouts/7skb/layout-misc.json similarity index 100% rename from 7skb/layout-misc.json rename to attic/layouts/7skb/layout-misc.json diff --git a/7skb/layout-misc.png b/attic/layouts/7skb/layout-misc.png similarity index 100% rename from 7skb/layout-misc.png rename to attic/layouts/7skb/layout-misc.png diff --git a/corne/6 column/layer-1---default.json b/attic/layouts/corne/6 column/layer-1---default.json similarity index 100% rename from corne/6 column/layer-1---default.json rename to attic/layouts/corne/6 column/layer-1---default.json diff --git a/corne/6 column/layer-1---default.png b/attic/layouts/corne/6 column/layer-1---default.png similarity index 100% rename from corne/6 column/layer-1---default.png rename to attic/layouts/corne/6 column/layer-1---default.png diff --git a/corne/6 column/layer-2---function.json b/attic/layouts/corne/6 column/layer-2---function.json similarity index 100% rename from corne/6 column/layer-2---function.json rename to attic/layouts/corne/6 column/layer-2---function.json diff --git a/corne/6 column/layer-2---function.png b/attic/layouts/corne/6 column/layer-2---function.png similarity index 100% rename from corne/6 column/layer-2---function.png rename to attic/layouts/corne/6 column/layer-2---function.png diff --git a/kbdfans/kbd67/rev2/README.md b/attic/layouts/kbdfans/kbd67/rev2/README.md similarity index 100% rename from kbdfans/kbd67/rev2/README.md rename to attic/layouts/kbdfans/kbd67/rev2/README.md diff --git a/kbdfans/kbd67/rev2/config.h b/attic/layouts/kbdfans/kbd67/rev2/config.h similarity index 100% rename from kbdfans/kbd67/rev2/config.h rename to attic/layouts/kbdfans/kbd67/rev2/config.h diff --git a/kbdfans/kbd67/rev2/kbdfans_kbd67_rev2_kemonine.hex b/attic/layouts/kbdfans/kbd67/rev2/kbdfans_kbd67_rev2_kemonine.hex similarity index 100% rename from kbdfans/kbd67/rev2/kbdfans_kbd67_rev2_kemonine.hex rename to attic/layouts/kbdfans/kbd67/rev2/kbdfans_kbd67_rev2_kemonine.hex diff --git a/kbdfans/kbd67/rev2/keymap.c b/attic/layouts/kbdfans/kbd67/rev2/keymap.c similarity index 100% rename from kbdfans/kbd67/rev2/keymap.c rename to attic/layouts/kbdfans/kbd67/rev2/keymap.c diff --git a/kbdfans/kbd67/rev2/layer-1.json b/attic/layouts/kbdfans/kbd67/rev2/layer-1.json similarity index 100% rename from kbdfans/kbd67/rev2/layer-1.json rename to attic/layouts/kbdfans/kbd67/rev2/layer-1.json diff --git a/kbdfans/kbd67/rev2/layer-1.png b/attic/layouts/kbdfans/kbd67/rev2/layer-1.png similarity index 100% rename from kbdfans/kbd67/rev2/layer-1.png rename to attic/layouts/kbdfans/kbd67/rev2/layer-1.png diff --git a/kbdfans/kbd67/rev2/layer-2.json b/attic/layouts/kbdfans/kbd67/rev2/layer-2.json similarity index 100% rename from kbdfans/kbd67/rev2/layer-2.json rename to attic/layouts/kbdfans/kbd67/rev2/layer-2.json diff --git a/kbdfans/kbd67/rev2/layer-2.png b/attic/layouts/kbdfans/kbd67/rev2/layer-2.png similarity index 100% rename from kbdfans/kbd67/rev2/layer-2.png rename to attic/layouts/kbdfans/kbd67/rev2/layer-2.png diff --git a/kbdfans/kbd67/rev2/layer-3.json b/attic/layouts/kbdfans/kbd67/rev2/layer-3.json similarity index 100% rename from kbdfans/kbd67/rev2/layer-3.json rename to attic/layouts/kbdfans/kbd67/rev2/layer-3.json diff --git a/kbdfans/kbd67/rev2/layer-3.png b/attic/layouts/kbdfans/kbd67/rev2/layer-3.png similarity index 100% rename from kbdfans/kbd67/rev2/layer-3.png rename to attic/layouts/kbdfans/kbd67/rev2/layer-3.png diff --git a/kbdfans/kbd67/rev2/rules.mk b/attic/layouts/kbdfans/kbd67/rev2/rules.mk similarity index 100% rename from kbdfans/kbd67/rev2/rules.mk rename to attic/layouts/kbdfans/kbd67/rev2/rules.mk diff --git a/lily58pro/layer-1---default.json b/attic/layouts/lily58pro/layer-1---default.json similarity index 100% rename from lily58pro/layer-1---default.json rename to attic/layouts/lily58pro/layer-1---default.json diff --git a/lily58pro/layer-1---default.png b/attic/layouts/lily58pro/layer-1---default.png similarity index 100% rename from lily58pro/layer-1---default.png rename to attic/layouts/lily58pro/layer-1---default.png diff --git a/lily58pro/layer-2---function.json b/attic/layouts/lily58pro/layer-2---function.json similarity index 100% rename from lily58pro/layer-2---function.json rename to attic/layouts/lily58pro/layer-2---function.json diff --git a/lily58pro/layer-2---function.png b/attic/layouts/lily58pro/layer-2---function.png similarity index 100% rename from lily58pro/layer-2---function.png rename to attic/layouts/lily58pro/layer-2---function.png diff --git a/makerdiary/m60/layer-1---default.json b/attic/layouts/makerdiary/m60/layer-1---default.json similarity index 100% rename from makerdiary/m60/layer-1---default.json rename to attic/layouts/makerdiary/m60/layer-1---default.json diff --git a/makerdiary/m60/layer-1---default.png b/attic/layouts/makerdiary/m60/layer-1---default.png similarity index 100% rename from makerdiary/m60/layer-1---default.png rename to attic/layouts/makerdiary/m60/layer-1---default.png diff --git a/makerdiary/m60/layer-2---function.json b/attic/layouts/makerdiary/m60/layer-2---function.json similarity index 100% rename from makerdiary/m60/layer-2---function.json rename to attic/layouts/makerdiary/m60/layer-2---function.json diff --git a/makerdiary/m60/layer-2---function.png b/attic/layouts/makerdiary/m60/layer-2---function.png similarity index 100% rename from makerdiary/m60/layer-2---function.png rename to attic/layouts/makerdiary/m60/layer-2---function.png diff --git a/massdrop/alt/README.md b/attic/layouts/massdrop/alt/README.md similarity index 100% rename from massdrop/alt/README.md rename to attic/layouts/massdrop/alt/README.md diff --git a/massdrop/alt/config.h b/attic/layouts/massdrop/alt/config.h similarity index 100% rename from massdrop/alt/config.h rename to attic/layouts/massdrop/alt/config.h diff --git a/massdrop/alt/keymap.c b/attic/layouts/massdrop/alt/keymap.c similarity index 100% rename from massdrop/alt/keymap.c rename to attic/layouts/massdrop/alt/keymap.c diff --git a/massdrop/alt/layer-1.json b/attic/layouts/massdrop/alt/layer-1.json similarity index 100% rename from massdrop/alt/layer-1.json rename to attic/layouts/massdrop/alt/layer-1.json diff --git a/massdrop/alt/layer-1.png b/attic/layouts/massdrop/alt/layer-1.png similarity index 100% rename from massdrop/alt/layer-1.png rename to attic/layouts/massdrop/alt/layer-1.png diff --git a/massdrop/alt/layer-2.json b/attic/layouts/massdrop/alt/layer-2.json similarity index 100% rename from massdrop/alt/layer-2.json rename to attic/layouts/massdrop/alt/layer-2.json diff --git a/massdrop/alt/layer-2.png b/attic/layouts/massdrop/alt/layer-2.png similarity index 100% rename from massdrop/alt/layer-2.png rename to attic/layouts/massdrop/alt/layer-2.png diff --git a/massdrop/alt/layer-3.json b/attic/layouts/massdrop/alt/layer-3.json similarity index 100% rename from massdrop/alt/layer-3.json rename to attic/layouts/massdrop/alt/layer-3.json diff --git a/massdrop/alt/layer-3.png b/attic/layouts/massdrop/alt/layer-3.png similarity index 100% rename from massdrop/alt/layer-3.png rename to attic/layouts/massdrop/alt/layer-3.png diff --git a/massdrop/alt/massdrop_alt_kemonine.bin b/attic/layouts/massdrop/alt/massdrop_alt_kemonine.bin similarity index 100% rename from massdrop/alt/massdrop_alt_kemonine.bin rename to attic/layouts/massdrop/alt/massdrop_alt_kemonine.bin diff --git a/massdrop/alt/rules.mk b/attic/layouts/massdrop/alt/rules.mk similarity index 100% rename from massdrop/alt/rules.mk rename to attic/layouts/massdrop/alt/rules.mk diff --git a/nullbitsco/tidbit/layer-1---navigation.json b/attic/layouts/nullbitsco/tidbit/layer-1---navigation.json similarity index 100% rename from nullbitsco/tidbit/layer-1---navigation.json rename to attic/layouts/nullbitsco/tidbit/layer-1---navigation.json diff --git a/nullbitsco/tidbit/layer-1---navigation.png b/attic/layouts/nullbitsco/tidbit/layer-1---navigation.png similarity index 100% rename from nullbitsco/tidbit/layer-1---navigation.png rename to attic/layouts/nullbitsco/tidbit/layer-1---navigation.png diff --git a/nullbitsco/tidbit/layer-2---mouse.json b/attic/layouts/nullbitsco/tidbit/layer-2---mouse.json similarity index 100% rename from nullbitsco/tidbit/layer-2---mouse.json rename to attic/layouts/nullbitsco/tidbit/layer-2---mouse.json diff --git a/nullbitsco/tidbit/layer-2---mouse.png b/attic/layouts/nullbitsco/tidbit/layer-2---mouse.png similarity index 100% rename from nullbitsco/tidbit/layer-2---mouse.png rename to attic/layouts/nullbitsco/tidbit/layer-2---mouse.png diff --git a/nullbitsco/tidbit/layer-3---number-pad.json b/attic/layouts/nullbitsco/tidbit/layer-3---number-pad.json similarity index 100% rename from nullbitsco/tidbit/layer-3---number-pad.json rename to attic/layouts/nullbitsco/tidbit/layer-3---number-pad.json diff --git a/nullbitsco/tidbit/layer-3---number-pad.png b/attic/layouts/nullbitsco/tidbit/layer-3---number-pad.png similarity index 100% rename from nullbitsco/tidbit/layer-3---number-pad.png rename to attic/layouts/nullbitsco/tidbit/layer-3---number-pad.png diff --git a/nullbitsco/tidbit/layer-4---zmk.json b/attic/layouts/nullbitsco/tidbit/layer-4---zmk.json similarity index 100% rename from nullbitsco/tidbit/layer-4---zmk.json rename to attic/layouts/nullbitsco/tidbit/layer-4---zmk.json diff --git a/nullbitsco/tidbit/layer-4---zmk.png b/attic/layouts/nullbitsco/tidbit/layer-4---zmk.png similarity index 100% rename from nullbitsco/tidbit/layer-4---zmk.png rename to attic/layouts/nullbitsco/tidbit/layer-4---zmk.png diff --git a/qvex/lynepad/README.md b/attic/layouts/qvex/lynepad/README.md similarity index 100% rename from qvex/lynepad/README.md rename to attic/layouts/qvex/lynepad/README.md diff --git a/qvex/lynepad/config.h b/attic/layouts/qvex/lynepad/config.h similarity index 100% rename from qvex/lynepad/config.h rename to attic/layouts/qvex/lynepad/config.h diff --git a/qvex/lynepad/keymap.c b/attic/layouts/qvex/lynepad/keymap.c similarity index 100% rename from qvex/lynepad/keymap.c rename to attic/layouts/qvex/lynepad/keymap.c diff --git a/qvex/lynepad/layer-1.json b/attic/layouts/qvex/lynepad/layer-1.json similarity index 100% rename from qvex/lynepad/layer-1.json rename to attic/layouts/qvex/lynepad/layer-1.json diff --git a/qvex/lynepad/layer-1.png b/attic/layouts/qvex/lynepad/layer-1.png similarity index 100% rename from qvex/lynepad/layer-1.png rename to attic/layouts/qvex/lynepad/layer-1.png diff --git a/qvex/lynepad/layer-2---lr-library.json b/attic/layouts/qvex/lynepad/layer-2---lr-library.json similarity index 100% rename from qvex/lynepad/layer-2---lr-library.json rename to attic/layouts/qvex/lynepad/layer-2---lr-library.json diff --git a/qvex/lynepad/layer-2---lr-library.png b/attic/layouts/qvex/lynepad/layer-2---lr-library.png similarity index 100% rename from qvex/lynepad/layer-2---lr-library.png rename to attic/layouts/qvex/lynepad/layer-2---lr-library.png diff --git a/qvex/lynepad/layer-3---lr-develop.json b/attic/layouts/qvex/lynepad/layer-3---lr-develop.json similarity index 100% rename from qvex/lynepad/layer-3---lr-develop.json rename to attic/layouts/qvex/lynepad/layer-3---lr-develop.json diff --git a/qvex/lynepad/layer-3---lr-develop.png b/attic/layouts/qvex/lynepad/layer-3---lr-develop.png similarity index 100% rename from qvex/lynepad/layer-3---lr-develop.png rename to attic/layouts/qvex/lynepad/layer-3---lr-develop.png diff --git a/qvex/lynepad/qvex_lynepad_kemonine.hex b/attic/layouts/qvex/lynepad/qvex_lynepad_kemonine.hex similarity index 100% rename from qvex/lynepad/qvex_lynepad_kemonine.hex rename to attic/layouts/qvex/lynepad/qvex_lynepad_kemonine.hex diff --git a/qvex/lynepad/rules.mk b/attic/layouts/qvex/lynepad/rules.mk similarity index 100% rename from qvex/lynepad/rules.mk rename to attic/layouts/qvex/lynepad/rules.mk diff --git a/tg4x/layer-1---default.json b/attic/layouts/tg4x/layer-1---default.json similarity index 100% rename from tg4x/layer-1---default.json rename to attic/layouts/tg4x/layer-1---default.json diff --git a/tg4x/layer-1---default.png b/attic/layouts/tg4x/layer-1---default.png similarity index 100% rename from tg4x/layer-1---default.png rename to attic/layouts/tg4x/layer-1---default.png diff --git a/tg4x/layer-2---function.json b/attic/layouts/tg4x/layer-2---function.json similarity index 100% rename from tg4x/layer-2---function.json rename to attic/layouts/tg4x/layer-2---function.json diff --git a/tg4x/layer-2---function.png b/attic/layouts/tg4x/layer-2---function.png similarity index 100% rename from tg4x/layer-2---function.png rename to attic/layouts/tg4x/layer-2---function.png diff --git a/tg4x/layer-2---other.json b/attic/layouts/tg4x/layer-2---other.json similarity index 100% rename from tg4x/layer-2---other.json rename to attic/layouts/tg4x/layer-2---other.json diff --git a/tg4x/layer-2---other.png b/attic/layouts/tg4x/layer-2---other.png similarity index 100% rename from tg4x/layer-2---other.png rename to attic/layouts/tg4x/layer-2---other.png diff --git a/attic/qmk/kbdfans/kbd67/rev2/README.md b/attic/qmk/kbdfans/kbd67/rev2/README.md new file mode 100644 index 00000000..396d5717 --- /dev/null +++ b/attic/qmk/kbdfans/kbd67/rev2/README.md @@ -0,0 +1,5 @@ +# kbd67 rev2 + +The information, keymaps, firmware and keyboard layout for KemoNine's setup on the kbdfans kbd67 rev2 keyboard. + +Layout files were generated by [www.keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/) diff --git a/attic/qmk/kbdfans/kbd67/rev2/config.h b/attic/qmk/kbdfans/kbd67/rev2/config.h new file mode 100644 index 00000000..09e41403 --- /dev/null +++ b/attic/qmk/kbdfans/kbd67/rev2/config.h @@ -0,0 +1,15 @@ +#define TAPPING_TERM 200 +#undef RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LAYERS +#define GRAVE_ESC_CTRL_OVERRIDE + +// Mouse settings +#define MOUSEKEY_DELAY 175 +#define MOUSEKEY_WHEEL_DELAY 175 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_TIME_TO_MAX 15 +#define MOUSEKEY_MAX_SPEED 5 +#define MOUSEKEY_WHEEL_INTERVAL 50 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 20 +#define MOUSEKEY_WHEEL_MAX_SPEED 10 +#define MK_COMBINED diff --git a/attic/qmk/kbdfans/kbd67/rev2/keymap.c b/attic/qmk/kbdfans/kbd67/rev2/keymap.c new file mode 100644 index 00000000..ef131901 --- /dev/null +++ b/attic/qmk/kbdfans/kbd67/rev2/keymap.c @@ -0,0 +1,202 @@ +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#include QMK_KEYBOARD_H + +keymap_config_t keymap_config; + +uint8_t cur_dance(qk_tap_dance_state_t *state); +void al_finished(qk_tap_dance_state_t *state, void *user_data); +void al_reset(qk_tap_dance_state_t *state, void *user_data); + +typedef struct { + bool is_press_action; + uint8_t state; +} tap; + +enum { + SINGLE_TAP = 1, + SINGLE_HOLD, + DOUBLE_TAP +}; + +enum { + ACCEL_0 = 0, + ACCEL_1 = 1, + ACCEL_2 = 2, +}; +enum { + ACCEL = SAFE_RANGE, + ACCEL_ADJ, + PROG, +}; +static uint8_t acceleration_level = ACCEL_0; +void change_accel(void) { + acceleration_level++; + if (acceleration_level > ACCEL_2) { + acceleration_level = ACCEL_0; + } +} + +enum td_keycodes { + LAYERS // Our example key: `MOD(1)` when held, `TG(2)` when tapped. Add additional keycodes for each tapdance. +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [LAYERS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, al_finished, al_reset) +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi(KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + LM(1, MOD_LALT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TD(LAYERS), KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_65_ansi(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, PROG, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PLAY_PAUSE, KC_RSFT, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAD, KC_VOLD, RGB_VAI), + [2] = LAYOUT_65_ansi(KC_ESC, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, LCTL(LALT(KC_TAB)), KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, LGUI(KC_DOWN), KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_MS_WH_RIGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + ACCEL, KC_NO, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_WH_DOWN, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_NO, KC_NO, + KC_LCTL, KC_NO, KC_LALT, ACCEL_ADJ, TG(2), KC_RALT, KC_RCTL, KC_NO, KC_NO, KC_NO), +}; + +// Customized HSV values for layer highlights +#define HSV_KMN_ORANGE 10,255, RGBLIGHT_LIMIT_VAL +#define HSV_KMN_CYAN 128, 255, RGBLIGHT_LIMIT_VAL +#define HSV_KMN_PURPLE 191, 255, RGBLIGHT_LIMIT_VAL + +// Standard layout == Layer 0 == Orange +const rgblight_segment_t PROGMEM led_underglow_orange[] = RGBLIGHT_LAYER_SEGMENTS( + {0, RGBLED_NUM, HSV_KMN_ORANGE} +); +// Modifiers == Layer 1 == Cyan +const rgblight_segment_t PROGMEM led_underglow_cyan[] = RGBLIGHT_LAYER_SEGMENTS( + {0, RGBLED_NUM, HSV_KMN_CYAN} +); +// Mouse keys == Layer 3 == Purple +const rgblight_segment_t PROGMEM led_underglow_purple[] = RGBLIGHT_LAYER_SEGMENTS( + {0, RGBLED_NUM, HSV_KMN_PURPLE} +); + +// Array of layers for management +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + led_underglow_orange, + led_underglow_cyan, + led_underglow_purple +); + +// Layer color init +void keyboard_post_init_user(void) { + rgblight_layers = my_rgb_layers; +} + +// Adjust layers based on which is active +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + return state; +} + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ACCEL: + if (record->event.pressed) { + switch(acceleration_level) { + case ACCEL_0: + register_code16(KC_ACL0); + break; + case ACCEL_1: + register_code16(KC_ACL1); + break; + case ACCEL_2: + register_code16(KC_ACL2); + break; + } + } else { + switch(acceleration_level) { + case ACCEL_0: + unregister_code16(KC_ACL0); + break; + case ACCEL_1: + unregister_code16(KC_ACL1); + break; + case ACCEL_2: + unregister_code16(KC_ACL2); + break; + } + } + return false; // Skip all further processing of this key + case ACCEL_ADJ: + if (record->event.pressed) { + } + else { + change_accel(); + } + case PROG: + if (record->event.pressed) { + rgblight_disable_noeeprom(); + reset_keyboard(); + } + default: + return true; // Process all other keycodes normally + } +} + +uint8_t cur_dance(qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (!state->pressed) return SINGLE_TAP; + else return SINGLE_HOLD; + } else if (state->count == 2) return DOUBLE_TAP; + else return 8; +} + +// Initialize tap structure associated with example tap dance key +static tap al_tap_state = { + .is_press_action = true, + .state = 0 +}; + +// Functions that control what our tap dance key does +void al_finished(qk_tap_dance_state_t *state, void *user_data) { + al_tap_state.state = cur_dance(state); + switch (al_tap_state.state) { + case SINGLE_TAP: + layer_on(1); // Activate layer 1 immediately since we probably are holding this down ; if released it'll go away fast and shouldn't be an issue + break; + case SINGLE_HOLD: + layer_on(1); // Activate layer 1 since that's what the intent is + break; + case DOUBLE_TAP: + // Check to see if the layer is already set + if (layer_state_is(2)) { + // If already set, then switch it off + layer_off(2); + } else { + // If not already set, then switch the layer on + layer_on(2); + } + break; + } +} + +void al_reset(qk_tap_dance_state_t *state, void *user_data) { + // If the key was held down and now is released then switch off the layer + if (al_tap_state.state == SINGLE_HOLD) { + layer_off(1); // Reset state appropriately + } + al_tap_state.state = 0; +} diff --git a/attic/qmk/kbdfans/kbd67/rev2/rules.mk b/attic/qmk/kbdfans/kbd67/rev2/rules.mk new file mode 100644 index 00000000..d6c1de32 --- /dev/null +++ b/attic/qmk/kbdfans/kbd67/rev2/rules.mk @@ -0,0 +1,2 @@ +MOUSEKEY_ENABLE = yes +TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/attic/qmk/massdrop/alt/README.md b/attic/qmk/massdrop/alt/README.md new file mode 100644 index 00000000..c928e4a8 --- /dev/null +++ b/attic/qmk/massdrop/alt/README.md @@ -0,0 +1,5 @@ +# ALT + +The information, keymaps, firmware and keyboard layout for KemoNine's setup on the massdrop ALT keyboard. + +Layout files were generated by [www.keyboard-layout-editor.com](http://www.keyboard-layout-editor.com/) diff --git a/attic/qmk/massdrop/alt/config.h b/attic/qmk/massdrop/alt/config.h new file mode 100644 index 00000000..007f70aa --- /dev/null +++ b/attic/qmk/massdrop/alt/config.h @@ -0,0 +1,13 @@ +#define TAPPING_TERM 200 +#define GRAVE_ESC_CTRL_OVERRIDE + +// Mouse settings +#define MOUSEKEY_DELAY 175 +#define MOUSEKEY_WHEEL_DELAY 175 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_TIME_TO_MAX 15 +#define MOUSEKEY_MAX_SPEED 5 +#define MOUSEKEY_WHEEL_INTERVAL 50 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 20 +#define MOUSEKEY_WHEEL_MAX_SPEED 10 +#define MK_COMBINED diff --git a/attic/qmk/massdrop/alt/keymap.c b/attic/qmk/massdrop/alt/keymap.c new file mode 100644 index 00000000..903d9be0 --- /dev/null +++ b/attic/qmk/massdrop/alt/keymap.c @@ -0,0 +1,266 @@ +#include "debug.h" +#include "action_layer.h" +#include "version.h" + +#include QMK_KEYBOARD_H + +#define TAPPING_TERM 200 + +#define CAPS_LED 30 +#define LALT_LED 60 + +#define RGB_KMN_NO_COLOR 0, 0, 0 +#define RGB_KMN_CYAN 128, 255, 255 +#define RGB_KMN_PRPL 215, 195, 42 +#define RGB_KMN_CYAN_HILIGHT 0, 191, 255 + +#define HS_KMN_ORANGE 10,255 +#define HS_KMN_CYAN 128, 255 + +keymap_config_t keymap_config; +rgb_config_t rgb_matrix_config; + +uint8_t cur_dance(qk_tap_dance_state_t *state); +void al_finished(qk_tap_dance_state_t *state, void *user_data); +void al_reset(qk_tap_dance_state_t *state, void *user_data); + +enum alt_keycodes { + U_T_AUTO = SAFE_RANGE, //USB Extra Port Toggle Auto Detect / Always Active + U_T_AGCR, //USB Toggle Automatic GCR control + DBG_TOG, //DEBUG Toggle On / Off + DBG_MTRX, //DEBUG Toggle Matrix Prints + DBG_KBD, //DEBUG Toggle Keyboard Prints + DBG_MOU, //DEBUG Toggle Mouse Prints + MD_BOOT, //Restart into bootloader after hold timeout +}; + +typedef struct { + bool is_press_action; + uint8_t state; +} tap; + +enum { + SINGLE_TAP = 1, + SINGLE_HOLD, + DOUBLE_TAP +}; + +enum { + ACCEL_0 = 0, + ACCEL_1 = 1, + ACCEL_2 = 2, +}; +enum { + ACCEL = SAFE_RANGE, + ACCEL_ADJ, +}; +static uint8_t acceleration_level = ACCEL_0; +void change_accel(void) { + acceleration_level++; + if (acceleration_level > ACCEL_2) { + acceleration_level = ACCEL_0; + } +} + +enum td_keycodes { + LAYERS // Our example key: `MOD(1)` when held, `TG(2)` when tapped. Add additional keycodes for each tapdance. +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [LAYERS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, al_finished, al_reset) +}; + +const uint8_t PROGMEM layercolors[][2] = { + [0] = {HS_KMN_ORANGE}, + [1] = {HS_KMN_CYAN}, + [2] = {HS_KMN_CYAN} +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_65_ansi_blocker(KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP, + LM(1, MOD_LALT), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, TD(LAYERS), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT), + [1] = LAYOUT_65_ansi_blocker(KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, + KC_CAPS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_INS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MEDIA_PLAY_PAUSE, KC_RSFT, KC_VOLU, KC_MUTE, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_RALT, RGB_VAD, KC_VOLD, RGB_VAI), + [2] = LAYOUT_65_ansi_blocker(KC_ESC, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, LCTL(LALT(KC_TAB)), KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_NO, KC_NO, KC_MS_WH_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, LGUI(KC_DOWN), KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_NO, KC_NO, KC_MS_WH_LEFT, KC_MS_WH_RIGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + ACCEL, KC_NO, KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_MS_WH_DOWN, KC_NO, KC_NO, KC_NO, KC_RSFT, KC_NO, KC_NO, + KC_LCTL, KC_NO, KC_LALT, ACCEL_ADJ, TG(2), KC_NO, KC_NO, KC_NO, KC_NO), +}; + +const uint8_t PROGMEM ledcolors[][DRIVER_LED_TOTAL][3] = { + [1] = { + {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + {RGB_KMN_CYAN}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_CYAN}, + {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_CYAN}, {RGB_KMN_NO_COLOR}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + // Underglow == 38 LEDS + {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, + {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN}, {RGB_KMN_CYAN} + }, + [2] = { + {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, + {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, + {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, + {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, + {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, {RGB_KMN_NO_COLOR}, + // Underglow == 38 LEDS + {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, + {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, + {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, + {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL}, {RGB_KMN_PRPL} + }, +}; + +// Runs just one time when the keyboard initializes. +void matrix_init_user(void) { + rgb_matrix_config.raw = pgm_read_dword(EECONFIG_RGB_MATRIX); + + rgb_matrix_enable(); + rgb_matrix_sethsv(10, 255, 95); + rgb_matrix_mode(RGB_MATRIX_SOLID_COLOR); +}; + +// Runs constantly in the background, in a loop. +void matrix_scan_user(void) { +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ACCEL: + if (record->event.pressed) { + switch(acceleration_level) { + case ACCEL_0: + register_code16(KC_ACL0); + break; + case ACCEL_1: + register_code16(KC_ACL1); + break; + case ACCEL_2: + register_code16(KC_ACL2); + break; + } + } else { + switch(acceleration_level) { + case ACCEL_0: + unregister_code16(KC_ACL0); + break; + case ACCEL_1: + unregister_code16(KC_ACL1); + break; + case ACCEL_2: + unregister_code16(KC_ACL2); + break; + } + } + return false; // Skip all further processing of this key + case ACCEL_ADJ: + if (record->event.pressed) { + } + else { + change_accel(); + } + default: + return true; // Process all other keycodes normally + } +} + +uint8_t cur_dance(qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (!state->pressed) return SINGLE_TAP; + else return SINGLE_HOLD; + } else if (state->count == 2) return DOUBLE_TAP; + else return 8; +} + +// Initialize tap structure associated with example tap dance key +static tap al_tap_state = { + .is_press_action = true, + .state = 0 +}; + +// Functions that control what our tap dance key does +void al_finished(qk_tap_dance_state_t *state, void *user_data) { + al_tap_state.state = cur_dance(state); + switch (al_tap_state.state) { + case SINGLE_TAP: + layer_on(1); // Activate layer 1 immediately since we probably are holding this down ; if released it'll go away fast and shouldn't be an issue + break; + case SINGLE_HOLD: + layer_on(1); // Activate layer 1 since that's what the intent is + break; + case DOUBLE_TAP: + // Check to see if the layer is already set + if (layer_state_is(2)) { + // If already set, then switch it off + layer_off(2); + } else { + // If not already set, then switch the layer on + layer_on(2); + } + break; + } +} + +void al_reset(qk_tap_dance_state_t *state, void *user_data) { + // If the key was held down and now is released then switch off the layer + if (al_tap_state.state == SINGLE_HOLD) { + layer_off(1); // Reset state appropriately + } + al_tap_state.state = 0; +} + +// Set the colors for individual LEDs for a given layer +void set_leds_color( int layer) { + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + uint8_t val = pgm_read_byte(&ledcolors[layer][i][2]); + // if the brightness of the led is set to 0 in the map, + // the value is not overriden with global controls, allowing the led + // to appear turned off + HSV hsv = { .h = pgm_read_byte(&ledcolors[layer][i][0]), .s = pgm_read_byte(&ledcolors[layer][i][1]), .v = val == 0 ? 0 : rgb_matrix_config.hsv.v}; + RGB rgb = hsv_to_rgb( hsv ); + rgb_matrix_set_color( i, rgb.r, rgb.g, rgb.b ); + } +} + +// Set the colors for ALL LEDs for a given layer +void set_layer_color( uint8_t layer ) { + HSV hsv = { .h = pgm_read_byte(&layercolors[layer][0]), .s = pgm_read_byte(&layercolors[layer][1]), .v = rgb_matrix_config.hsv.v}; + RGB rgb = hsv_to_rgb( hsv ); + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + rgb_matrix_set_color( i, rgb.r, rgb.g, rgb.b ); + } +} + +// Override standard rgb colorization stuff +void rgb_matrix_indicators_user(void) { + uint32_t mode = rgblight_get_mode(); + // assign colors if the matrix is on and the current mode + // is SOLID COLORS => No animations running + if(rgb_matrix_config.enable == 1 && mode == RGB_MATRIX_SOLID_COLOR) { + uint8_t layer = biton32(layer_state); + switch (layer) { + case 0: + set_layer_color(0); + break; + case 1: + set_leds_color(1); + break; + case 2: + set_leds_color(2); + break; + } + } + if (host_keyboard_leds() & (1<. + */ + +#pragma once + +#define TAPPING_TERM 200 + +#undef RGBLIGHT_ANIMATIONS +#define RGBLIGHT_LAYERS + +// Mouse settings +#define MOUSEKEY_DELAY 175 +#define MOUSEKEY_WHEEL_DELAY 175 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_TIME_TO_MAX 15 +#define MOUSEKEY_MAX_SPEED 5 +#define MOUSEKEY_WHEEL_INTERVAL 50 +#define MOUSEKEY_WHEEL_TIME_TO_MAX 20 +#define MOUSEKEY_WHEEL_MAX_SPEED 10 +#define MK_COMBINED diff --git a/attic/qmk/qvex/lynepad/keymap.c b/attic/qmk/qvex/lynepad/keymap.c new file mode 100644 index 00000000..35b43d4e --- /dev/null +++ b/attic/qmk/qvex/lynepad/keymap.c @@ -0,0 +1,333 @@ +/* Copyright 2020 KemoNine + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +enum { + ACCEL_0 = 0, + ACCEL_1 = 1, + ACCEL_2 = 2, +}; +static uint8_t acceleration_level = ACCEL_0; + +void change_accel(void) { + acceleration_level++; + if (acceleration_level > ACCEL_2) { + acceleration_level = ACCEL_0; + } +} + +// Custom key codes +enum { + ACCEL = SAFE_RANGE, +}; + +// Tap Dance declarations +enum { + TD_LAYER_BOOT, +}; + +void dance_layer_boot_finished(qk_tap_dance_state_t *state, void *user_data) { + if (state->count == 1) { + layer_on(1); + } else { + rgblight_disable_noeeprom(); + reset_keyboard(); + } +} + +// Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + // Tap once for Escape, twice for Caps Lock + [TD_LAYER_BOOT] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, dance_layer_boot_finished, NULL), +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Keymap (Base Layer) Default Layer + * |----------------------------| + * | 1 | 2 | 3 | 4 | | + * | 5 | 6 | 7 | 8 | | + * | 9 | 10 | 11 | | + * |----------------------------| + */ + [0] = LAYOUT_Lynepad( + LCTL(LALT(KC_TAB)), KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, + LGUI(KC_DOWN), KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, + ACCEL, TD(TD_LAYER_BOOT), KC_ESC + ), + [1] = LAYOUT_Lynepad( + LCTL(LALT(KC_2)), LCTL(KC_BSPACE), LSFT(KC_X), LSFT(KC_P), + LSFT(KC_TAB), KC_G, KC_E, KC_C, + TO(0), TO(1), TO(2) + ), + [2] = LAYOUT_Lynepad( + LCTL(LALT(KC_1)), LCTL(KC_LBRACKET), LCTL(KC_RBRACKET), KC_W, + LSFT(KC_TAB), KC_Q, LCTL(LALT(KC_R)), KC_R, + TO(0), TO(1), TO(2) + ) +}; + +// Customized HSV values for layer highlights +#define HSV_KMN_PURPLE 191, 255, 120 +#define HSV_KMN_GREEN 85, 255, 120 +#define HSV_KMN_YELLOW 43, 255, 120 + +const rgblight_segment_t PROGMEM led_underglow_purple[] = RGBLIGHT_LAYER_SEGMENTS( + {0, RGBLED_NUM, HSV_KMN_PURPLE} +); + +const rgblight_segment_t PROGMEM led_underglow_green[] = RGBLIGHT_LAYER_SEGMENTS( + {0, RGBLED_NUM, HSV_KMN_GREEN} +); + +const rgblight_segment_t PROGMEM led_underglow_yellow[] = RGBLIGHT_LAYER_SEGMENTS( + {0, RGBLED_NUM, HSV_KMN_YELLOW} +); + +// Array of layers for management +const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( + led_underglow_purple, + led_underglow_green, + led_underglow_yellow +); + +// Layer color init +void keyboard_post_init_user(void) { + rgblight_layers = my_rgb_layers; + layer_clear(); + layer_on(0); + rgblight_enable(); + rgblight_sethsv_noeeprom(HSV_KMN_PURPLE); +} + +// Adjust layers based on which is active +layer_state_t layer_state_set_user(layer_state_t state) { + rgblight_set_layer_state(0, layer_state_cmp(state, 0)); + rgblight_set_layer_state(1, layer_state_cmp(state, 1)); + rgblight_set_layer_state(2, layer_state_cmp(state, 2)); + return state; +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case ACCEL: + if (record->event.pressed) { + switch(acceleration_level) { + case ACCEL_0: + register_code16(KC_ACL0); + break; + case ACCEL_1: + register_code16(KC_ACL1); + break; + case ACCEL_2: + register_code16(KC_ACL2); + break; + } + } else { + switch(acceleration_level) { + case ACCEL_0: + unregister_code16(KC_ACL0); + break; + case ACCEL_1: + unregister_code16(KC_ACL1); + break; + case ACCEL_2: + unregister_code16(KC_ACL2); + break; + } + } + return false; // Skip all further processing of this key + default: + return true; // Process all other keycodes normally + } +} + +// Standard encoder functionality +void encoder_update_user(uint8_t index, bool clockwise) { + // Process encoder rotational movements + if (index == 0) { /* First encoder */ + if (clockwise) { + if (layer_state_is(0)) { + tap_code(KC_MS_WH_UP); + } + else if (layer_state_is(1)) { + tap_code(KC_LBRACKET); + } + else if (layer_state_is(2)) { + register_code16(KC_LCTRL); + register_code16(KC_MINUS); + unregister_code16(KC_MINUS); + unregister_code16(KC_LCTRL); + } + } else { + if (layer_state_is(0)) { + tap_code(KC_MS_WH_DOWN); + } + else if (layer_state_is(1)) { + tap_code(KC_RBRACKET); + } + else if (layer_state_is(2)) { + register_code16(KC_LCTRL); + register_code16(KC_EQUAL); + unregister_code16(KC_EQUAL); + unregister_code16(KC_LCTRL); + } + } + } else if (index == 1) { /* Second encoder */ + if (clockwise) { + if (layer_state_is(0)) { + tap_code(KC_AUDIO_VOL_DOWN); + } + else if (layer_state_is(1)) { + register_code16(KC_LCTRL); + register_code16(KC_MINUS); + unregister_code16(KC_MINUS); + unregister_code16(KC_LCTRL); + } + else if (layer_state_is(2)) { + register_code16(KC_LSFT); + register_code16(KC_UP); + unregister_code16(KC_UP); + unregister_code16(KC_LSFT); + } + } else { + if (layer_state_is(0)) { + tap_code(KC_AUDIO_VOL_UP); + } + else if (layer_state_is(1)) { + register_code16(KC_LCTRL); + register_code16(KC_EQUAL); + unregister_code16(KC_EQUAL); + unregister_code16(KC_LCTRL); + } + else if (layer_state_is(2)) { + register_code16(KC_LSFT); + register_code16(KC_DOWN); + unregister_code16(KC_DOWN); + unregister_code16(KC_LSFT); + } + } + } +} + +// Encoder press / tilt event handling +// the core lynepad implementation will update the below variables on each matrix scan +// Update the various codes below for customizing the tilt / push config + +extern int16_t enc1Center; +extern int16_t enc1CenterPrev; +extern int16_t enc2Center; +extern int16_t enc2CenterPrev; +extern int16_t enc2Up; +extern int16_t enc2UpPrev; +extern int16_t enc2Down; +extern int16_t enc2DownPrev; +extern int16_t enc2Left; +extern int16_t enc2LeftPrev; +extern int16_t enc2Right; +extern int16_t enc2RightPrev; + +void matrix_scan_user(void) { + if (enc1Center != enc1CenterPrev) { + if (enc1Center < ENC_TILT_THRESHOLD) { + if (layer_state_is(0)) { + change_accel(); + } + } + } + if (enc2Center != enc2CenterPrev) { + if (enc2Center < ENC_TILT_THRESHOLD) { + } + else { + } + /* + * Encoder sets ALL values when center is pressed so bail out at this point\ + * to avoid the rest of the encoder buttons registering events + */ + return; + } + if (enc2Up != enc2UpPrev) { + if (enc2Up < ENC_TILT_THRESHOLD) { + if (layer_state_is(0)) { + register_code16(KC_MS_WH_UP); + } + else if (layer_state_is(1)) { + register_code16(KC_UP); + } + } + else { + if (layer_state_is(0)) { + unregister_code16(KC_MS_WH_UP); + } + else if (layer_state_is(1)) { + unregister_code16(KC_UP); + } + } + } + if (enc2Down != enc2DownPrev) { + if (enc2Down < ENC_TILT_THRESHOLD) { + if (layer_state_is(0)) { + register_code16(KC_MS_WH_DOWN); + } + else if (layer_state_is(1)) { + register_code16(KC_DOWN); + } + } + else { + if (layer_state_is(0)) { + unregister_code16(KC_MS_WH_DOWN); + } + else if (layer_state_is(1)) { + unregister_code16(KC_DOWN); + } + } + } + if (enc2Left != enc2LeftPrev) { + if (enc2Left < ENC_TILT_THRESHOLD) { + if (layer_state_is(0)) { + register_code16(KC_MS_WH_LEFT); + } + else if (layer_state_is(1) || layer_state_is(2)) { + register_code16(KC_LEFT); + } + } + else { + if (layer_state_is(0)) { + unregister_code16(KC_MS_WH_LEFT); + } + else if (layer_state_is(1) || layer_state_is(2)) { + unregister_code16(KC_LEFT); + } + } + } + if (enc2Right != enc2RightPrev) { + if (enc2Right < ENC_TILT_THRESHOLD) { + if (layer_state_is(0)) { + register_code16(KC_MS_WH_RIGHT); + } + else if (layer_state_is(1) || layer_state_is(2)) { + register_code16(KC_RIGHT); + } + } + else { + if (layer_state_is(0)) { + unregister_code16(KC_MS_WH_RIGHT); + } + else if (layer_state_is(1) || layer_state_is(2)) { + unregister_code16(KC_RIGHT); + } + } + } +} diff --git a/attic/qmk/qvex/lynepad/rules.mk b/attic/qmk/qvex/lynepad/rules.mk new file mode 100644 index 00000000..1ba2fa8f --- /dev/null +++ b/attic/qmk/qvex/lynepad/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes \ No newline at end of file diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/CMakeLists.txt b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/CMakeLists.txt similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/CMakeLists.txt rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/CMakeLists.txt diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.board b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.board similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.board rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.board diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.defconfig b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.defconfig similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.defconfig rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/Kconfig.defconfig diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/README.md b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/README.md similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/README.md rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/README.md diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/board.cmake b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/board.cmake similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/board.cmake rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/board.cmake diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.dts b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.dts similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.dts rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.dts diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.yaml b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.yaml similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.yaml rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840.yaml diff --git a/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840_defconfig b/attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840_defconfig similarity index 100% rename from zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840_defconfig rename to attic/zmk-config/config/boards/arm/itsybitsy_nrf52840/itsybitsy_nrf52840_defconfig diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/CMakeLists.txt b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/CMakeLists.txt similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/CMakeLists.txt rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/CMakeLists.txt diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.board b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.board similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.board rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.board diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.defconfig b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.defconfig similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.defconfig rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/Kconfig.defconfig diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/README.md b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/README.md similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/README.md rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/README.md diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/arduino_pro_micro_pins.dtsi b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/arduino_pro_micro_pins.dtsi similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/arduino_pro_micro_pins.dtsi rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/arduino_pro_micro_pins.dtsi diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/board.cmake b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/board.cmake similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/board.cmake rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/board.cmake diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.dts b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.dts similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.dts rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.dts diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.yaml b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.yaml similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.yaml rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini.yaml diff --git a/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini_defconfig b/attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini_defconfig similarity index 100% rename from zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini_defconfig rename to attic/zmk-config/config/boards/arm/sparkfun_pro_nrf52840_mini/sparkfun_pro_nrf52840_mini_defconfig diff --git a/zmk-config/config/boards/shields/7skb/7skb.conf b/attic/zmk-config/config/boards/shields/7skb/7skb.conf old mode 100755 new mode 100644 similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb.conf rename to attic/zmk-config/config/boards/shields/7skb/7skb.conf diff --git a/zmk-config/config/boards/shields/7skb/7skb.dtsi b/attic/zmk-config/config/boards/shields/7skb/7skb.dtsi similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb.dtsi rename to attic/zmk-config/config/boards/shields/7skb/7skb.dtsi diff --git a/zmk-config/config/boards/shields/7skb/7skb.keymap b/attic/zmk-config/config/boards/shields/7skb/7skb.keymap similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb.keymap rename to attic/zmk-config/config/boards/shields/7skb/7skb.keymap diff --git a/zmk-config/config/boards/shields/7skb/7skb_left.conf b/attic/zmk-config/config/boards/shields/7skb/7skb_left.conf similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb_left.conf rename to attic/zmk-config/config/boards/shields/7skb/7skb_left.conf diff --git a/zmk-config/config/boards/shields/7skb/7skb_left.overlay b/attic/zmk-config/config/boards/shields/7skb/7skb_left.overlay old mode 100755 new mode 100644 similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb_left.overlay rename to attic/zmk-config/config/boards/shields/7skb/7skb_left.overlay diff --git a/zmk-config/config/boards/shields/7skb/7skb_right.conf b/attic/zmk-config/config/boards/shields/7skb/7skb_right.conf similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb_right.conf rename to attic/zmk-config/config/boards/shields/7skb/7skb_right.conf diff --git a/zmk-config/config/boards/shields/7skb/7skb_right.overlay b/attic/zmk-config/config/boards/shields/7skb/7skb_right.overlay similarity index 100% rename from zmk-config/config/boards/shields/7skb/7skb_right.overlay rename to attic/zmk-config/config/boards/shields/7skb/7skb_right.overlay diff --git a/zmk-config/config/boards/shields/7skb/Kconfig.defconfig b/attic/zmk-config/config/boards/shields/7skb/Kconfig.defconfig similarity index 100% rename from zmk-config/config/boards/shields/7skb/Kconfig.defconfig rename to attic/zmk-config/config/boards/shields/7skb/Kconfig.defconfig diff --git a/zmk-config/config/boards/shields/7skb/Kconfig.shield b/attic/zmk-config/config/boards/shields/7skb/Kconfig.shield old mode 100755 new mode 100644 similarity index 100% rename from zmk-config/config/boards/shields/7skb/Kconfig.shield rename to attic/zmk-config/config/boards/shields/7skb/Kconfig.shield diff --git a/zmk-config/config/boards/shields/7skb/boards/nice_nano.conf b/attic/zmk-config/config/boards/shields/7skb/boards/nice_nano.conf similarity index 100% rename from zmk-config/config/boards/shields/7skb/boards/nice_nano.conf rename to attic/zmk-config/config/boards/shields/7skb/boards/nice_nano.conf diff --git a/zmk-config/config/boards/shields/7skb/boards/nice_nano.overlay b/attic/zmk-config/config/boards/shields/7skb/boards/nice_nano.overlay old mode 100755 new mode 100644 similarity index 100% rename from zmk-config/config/boards/shields/7skb/boards/nice_nano.overlay rename to attic/zmk-config/config/boards/shields/7skb/boards/nice_nano.overlay diff --git a/zmk-config/config/boards/shields/azarashi64/Kconfig.defconfig b/attic/zmk-config/config/boards/shields/azarashi64/Kconfig.defconfig similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/Kconfig.defconfig rename to attic/zmk-config/config/boards/shields/azarashi64/Kconfig.defconfig diff --git a/zmk-config/config/boards/shields/azarashi64/Kconfig.shield b/attic/zmk-config/config/boards/shields/azarashi64/Kconfig.shield similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/Kconfig.shield rename to attic/zmk-config/config/boards/shields/azarashi64/Kconfig.shield diff --git a/zmk-config/config/boards/shields/azarashi64/README.md b/attic/zmk-config/config/boards/shields/azarashi64/README.md similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/README.md rename to attic/zmk-config/config/boards/shields/azarashi64/README.md diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64.conf b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64.conf similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64.conf rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64.conf diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64.dtsi b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64.dtsi similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64.dtsi rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64.dtsi diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64.keymap b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64.keymap similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64.keymap rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64.keymap diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64_left.conf b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64_left.conf similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64_left.conf rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64_left.conf diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64_left.overlay b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64_left.overlay similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64_left.overlay rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64_left.overlay diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64_right.conf b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64_right.conf similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64_right.conf rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64_right.conf diff --git a/zmk-config/config/boards/shields/azarashi64/azarashi64_right.overlay b/attic/zmk-config/config/boards/shields/azarashi64/azarashi64_right.overlay similarity index 100% rename from zmk-config/config/boards/shields/azarashi64/azarashi64_right.overlay rename to attic/zmk-config/config/boards/shields/azarashi64/azarashi64_right.overlay diff --git a/zmk-config/config/boards/shields/navi10/Kconfig.defconfig b/attic/zmk-config/config/boards/shields/navi10/Kconfig.defconfig similarity index 100% rename from zmk-config/config/boards/shields/navi10/Kconfig.defconfig rename to attic/zmk-config/config/boards/shields/navi10/Kconfig.defconfig diff --git a/zmk-config/config/boards/shields/navi10/Kconfig.shield b/attic/zmk-config/config/boards/shields/navi10/Kconfig.shield similarity index 100% rename from zmk-config/config/boards/shields/navi10/Kconfig.shield rename to attic/zmk-config/config/boards/shields/navi10/Kconfig.shield diff --git a/zmk-config/config/boards/shields/navi10/navi10.conf b/attic/zmk-config/config/boards/shields/navi10/navi10.conf similarity index 100% rename from zmk-config/config/boards/shields/navi10/navi10.conf rename to attic/zmk-config/config/boards/shields/navi10/navi10.conf diff --git a/zmk-config/config/boards/shields/navi10/navi10.keymap b/attic/zmk-config/config/boards/shields/navi10/navi10.keymap similarity index 100% rename from zmk-config/config/boards/shields/navi10/navi10.keymap rename to attic/zmk-config/config/boards/shields/navi10/navi10.keymap diff --git a/zmk-config/config/boards/shields/navi10/navi10.overlay b/attic/zmk-config/config/boards/shields/navi10/navi10.overlay similarity index 100% rename from zmk-config/config/boards/shields/navi10/navi10.overlay rename to attic/zmk-config/config/boards/shields/navi10/navi10.overlay diff --git a/zmk-config/config/boards/shields/tg4x/Kconfig.defconfig b/attic/zmk-config/config/boards/shields/tg4x/Kconfig.defconfig similarity index 100% rename from zmk-config/config/boards/shields/tg4x/Kconfig.defconfig rename to attic/zmk-config/config/boards/shields/tg4x/Kconfig.defconfig diff --git a/zmk-config/config/boards/shields/tg4x/Kconfig.shield b/attic/zmk-config/config/boards/shields/tg4x/Kconfig.shield similarity index 100% rename from zmk-config/config/boards/shields/tg4x/Kconfig.shield rename to attic/zmk-config/config/boards/shields/tg4x/Kconfig.shield diff --git a/zmk-config/config/boards/shields/tg4x/README.md b/attic/zmk-config/config/boards/shields/tg4x/README.md similarity index 100% rename from zmk-config/config/boards/shields/tg4x/README.md rename to attic/zmk-config/config/boards/shields/tg4x/README.md diff --git a/zmk-config/config/boards/shields/tg4x/boards/nice_nano.conf b/attic/zmk-config/config/boards/shields/tg4x/boards/nice_nano.conf similarity index 100% rename from zmk-config/config/boards/shields/tg4x/boards/nice_nano.conf rename to attic/zmk-config/config/boards/shields/tg4x/boards/nice_nano.conf diff --git a/zmk-config/config/boards/shields/tg4x/boards/nice_nano.overlay b/attic/zmk-config/config/boards/shields/tg4x/boards/nice_nano.overlay similarity index 100% rename from zmk-config/config/boards/shields/tg4x/boards/nice_nano.overlay rename to attic/zmk-config/config/boards/shields/tg4x/boards/nice_nano.overlay diff --git a/zmk-config/config/boards/shields/tg4x/tg4x.conf b/attic/zmk-config/config/boards/shields/tg4x/tg4x.conf similarity index 100% rename from zmk-config/config/boards/shields/tg4x/tg4x.conf rename to attic/zmk-config/config/boards/shields/tg4x/tg4x.conf diff --git a/zmk-config/config/boards/shields/tg4x/tg4x.keymap b/attic/zmk-config/config/boards/shields/tg4x/tg4x.keymap similarity index 100% rename from zmk-config/config/boards/shields/tg4x/tg4x.keymap rename to attic/zmk-config/config/boards/shields/tg4x/tg4x.keymap diff --git a/zmk-config/config/boards/shields/tg4x/tg4x.overlay b/attic/zmk-config/config/boards/shields/tg4x/tg4x.overlay similarity index 100% rename from zmk-config/config/boards/shields/tg4x/tg4x.overlay rename to attic/zmk-config/config/boards/shields/tg4x/tg4x.overlay diff --git a/zmk-config/config/corne.conf b/attic/zmk-config/config/corne.conf similarity index 100% rename from zmk-config/config/corne.conf rename to attic/zmk-config/config/corne.conf diff --git a/zmk-config/config/corne.keymap b/attic/zmk-config/config/corne.keymap similarity index 100% rename from zmk-config/config/corne.keymap rename to attic/zmk-config/config/corne.keymap diff --git a/zmk-config/config/lily58.conf b/attic/zmk-config/config/lily58.conf similarity index 100% rename from zmk-config/config/lily58.conf rename to attic/zmk-config/config/lily58.conf diff --git a/zmk-config/config/lily58.keymap b/attic/zmk-config/config/lily58.keymap similarity index 100% rename from zmk-config/config/lily58.keymap rename to attic/zmk-config/config/lily58.keymap diff --git a/zmk-config/config/nibble.conf b/attic/zmk-config/config/nibble.conf similarity index 100% rename from zmk-config/config/nibble.conf rename to attic/zmk-config/config/nibble.conf diff --git a/zmk-config/config/nibble.keymap b/attic/zmk-config/config/nibble.keymap similarity index 100% rename from zmk-config/config/nibble.keymap rename to attic/zmk-config/config/nibble.keymap diff --git a/zmk-config/config/tg4x.conf b/attic/zmk-config/config/tg4x.conf similarity index 100% rename from zmk-config/config/tg4x.conf rename to attic/zmk-config/config/tg4x.conf diff --git a/zmk-config/config/tg4x.keymap b/attic/zmk-config/config/tg4x.keymap similarity index 100% rename from zmk-config/config/tg4x.keymap rename to attic/zmk-config/config/tg4x.keymap diff --git a/attic/zmk-config/config/west.yml b/attic/zmk-config/config/west.yml new file mode 100644 index 00000000..379d2919 --- /dev/null +++ b/attic/zmk-config/config/west.yml @@ -0,0 +1,11 @@ +manifest: + remotes: + - name: zmkfirmware + url-base: https://github.com/zmkfirmware + projects: + - name: zmk + remote: zmkfirmware + revision: main + import: app/west.yml + self: + path: config diff --git a/zmk-config/vscode/extensions.json b/attic/zmk-config/vscode/extensions.json similarity index 100% rename from zmk-config/vscode/extensions.json rename to attic/zmk-config/vscode/extensions.json diff --git a/zmk-config/vscode/workspace.code-workspace b/attic/zmk-config/vscode/workspace.code-workspace similarity index 100% rename from zmk-config/vscode/workspace.code-workspace rename to attic/zmk-config/vscode/workspace.code-workspace diff --git a/miryoku/miryoku.json b/layouts/miryoku/miryoku.json similarity index 100% rename from miryoku/miryoku.json rename to layouts/miryoku/miryoku.json diff --git a/miryoku/miryoku.png b/layouts/miryoku/miryoku.png similarity index 100% rename from miryoku/miryoku.png rename to layouts/miryoku/miryoku.png diff --git a/layouts/nullbitsco/tidbit/layer-1---navigation.json b/layouts/nullbitsco/tidbit/layer-1---navigation.json new file mode 100644 index 00000000..3924b403 --- /dev/null +++ b/layouts/nullbitsco/tidbit/layer-1---navigation.json @@ -0,0 +1,46 @@ +[ + { + "backcolor": "#00f3ff", + "name": "Layer 1 - Navigation", + "author": "KemoNine" + }, + [ + { + "x": 1, + "a": 7 + }, + "TG(0)", + "TO(2)", + "TO(3)" + ], + [ + "Pg Up", + "↑", + "Pg Dn", + "Gui + E" + ], + [ + "←", + "↓", + "→", + "Space" + ], + [ + "Home", + "Bksp", + "End", + "Enter" + ], + [ + { + "a": 5 + }, + "Vol Up\nVol Dn\n\n\n\n\nMute", + { + "a": 7 + }, + "Esc", + "", + "Alt + F4" + ] +] \ No newline at end of file diff --git a/layouts/nullbitsco/tidbit/layer-1---navigation.png b/layouts/nullbitsco/tidbit/layer-1---navigation.png new file mode 100644 index 0000000000000000000000000000000000000000..9d0a0da49c89a72c904ffeba076cf0638266a0f4 GIT binary patch literal 13569 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 literal 0 HcmV?d00001 diff --git a/layouts/nullbitsco/tidbit/layer-4---zmk.json b/layouts/nullbitsco/tidbit/layer-4---zmk.json new file mode 100644 index 00000000..9ebd340a --- /dev/null +++ b/layouts/nullbitsco/tidbit/layer-4---zmk.json @@ -0,0 +1,46 @@ +[ + { + "backcolor": "#ff0000", + "name": "Layer 4 - ZMK", + "author": "KemoNine" + }, + [ + { + "x": 1, + "a": 7 + }, + "TO(0)", + "Reset", + "Boot" + ], + [ + "RGB Hue Down", + "RGB Hue Up", + "RGB Bright Down", + "RGB Bright Up" + ], + [ + "", + "", + "", + "" + ], + [ + "Ext Pwr Tog", + "RGB Toggle", + "Output Toggle", + "" + ], + [ + { + "a": 5 + }, + "Vol Up\nVol Dn\n\n\n\n\nMute", + { + "a": 7 + }, + "BT Prev", + "BT Next", + "BT Clear" + ] +] \ No newline at end of file diff --git a/layouts/nullbitsco/tidbit/layer-4---zmk.png b/layouts/nullbitsco/tidbit/layer-4---zmk.png new file mode 100644 index 0000000000000000000000000000000000000000..5b628feb38095b856e4062c48c9b2b3f6dc6c0ae GIT binary patch literal 13370 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\n.", - "?\n/", - { - "a": 6, - "w": 1.75 - }, - "Shift", - { - "a": 7 - }, - "↑", - { - "a": 6 - }, - "End" - ], - [ - { - "w": 1.25 - }, - "Ctrl", - { - "w": 1.25 - }, - "Win", - { - "w": 1.25 - }, - "Alt", - { - "a": 7, - "w": 6.25 - }, - "", - "Fn", - { - "a": 6 - }, - "Ctrl", - { - "a": 7 - }, - "Alt", - "←", - "↓", - "→" - ] -] \ No newline at end of file diff --git a/nullbitsco/nibble/layer-1.png b/nullbitsco/nibble/layer-1.png deleted file mode 100644 index 5f9598d589b2661f892671c087ddf99b440d30fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28137 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≪AQx=U~2DGQ> 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

GPTF1;Tv%D`(WcDR{77!nlFibOsF zuh+M}J!uj*9L-H-Cua}! zC9N#1<2+j-js543>II`M%&zXAl7hsW diff --git a/nullbitsco/nibble/layer-2.json b/nullbitsco/nibble/layer-2.json deleted file mode 100644 index 68f4eb96..00000000 --- a/nullbitsco/nibble/layer-2.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - { - "backcolor": "#00f3ff", - "name": "Layer 2", - "author": "KemoNine" - }, - [ - "~\n`", - { - "a": 6 - }, - "F1", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "F10", - "F11", - "F12", - { - "w": 2 - }, - "Backaspace", - "Del" - ], - [ - { - "w": 1.5 - }, - "Caps", - { - "a": 7 - }, - "Pg Up", - "Home", - "Up", - "End", - "", - "", - "Mouse 1", - "Up", - "Mouse 2", - "Scroll Up", - "", - "", - { - "w": 1.5 - }, - "Ins", - { - "a": 6 - }, - "Ins" - ], - [ - { - "a": 7, - "w": 1.75 - }, - "", - "Pg Dn", - "Left", - "Down", - "Right", - "", - "", - "Left", - "Down", - "Right", - "Scroll Down", - "", - { - "w": 2.25 - }, - "Pint Screen", - { - "a": 6 - }, - "Prnt Scn" - ], - [ - { - "a": 7, - "w": 2.25 - }, - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - { - "w": 1.75 - }, - "", - "Play Pause", - "" - ], - [ - { - "w": 1.25 - }, - "", - { - "w": 1.25 - }, - "", - { - "w": 1.25 - }, - "", - { - "w": 6.25 - }, - "", - "", - "Vol Up", - "Vol Dn", - "Mute", - "", - "" - ] -] \ No newline at end of file diff --git a/nullbitsco/nibble/layer-2.png b/nullbitsco/nibble/layer-2.png deleted file mode 100644 index eaedfa2d053ee793e5cfeb284484818c921051bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25707 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