From 1bf418fd8d6a33fa823ae369874a4798223dfbc0 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Wed, 10 Nov 2021 16:35:49 -0500 Subject: Initial commit --- README.md | 14 + build.log | 161 ++++++++++ moonlander_programmer-dvorak_PMVBL_BZy0x.bin | Bin 0 -> 60984 bytes moonlander_programmer-dvorak_PMVBL_BZy0x.md5 | 1 + moonlander_programmer-dvorak_source/config.h | 14 + moonlander_programmer-dvorak_source/keymap.c | 448 +++++++++++++++++++++++++++ moonlander_programmer-dvorak_source/rules.mk | 9 + 7 files changed, 647 insertions(+) create mode 100644 README.md create mode 100644 build.log create mode 100755 moonlander_programmer-dvorak_PMVBL_BZy0x.bin create mode 100644 moonlander_programmer-dvorak_PMVBL_BZy0x.md5 create mode 100644 moonlander_programmer-dvorak_source/config.h create mode 100644 moonlander_programmer-dvorak_source/keymap.c create mode 100644 moonlander_programmer-dvorak_source/rules.mk diff --git a/README.md b/README.md new file mode 100644 index 0000000..efefd11 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# Building your layout from source + +Congratulations on taking the next step, and making use of your keyboard's open-source nature! There's so much power to unlock — this is going to be fun. :) + +Here are some initial pointers to get you started: + +- Use the documentation at [https://docs.qmk.fm/](https://docs.qmk.fm/) to set up your environment for building your firmware. +- Build your layout against [https://github.com/zsa/qmk_firmware/](https://github.com/zsa/qmk_firmware/) which is our QMK fork (instead of qmk/qmk_firmware). This is what Oryx (the graphical configurator) uses, so it's guaranteed to work. +- Create a folder with a simple name (no spaces!) for your layout inside the qmk_firmware/keyboards/moonlander/keymaps/ folder. +- Copy the contents of the \*\_source folder (in the .zip you downloaded from Oryx) into this folder. +- Make sure you've set up your environment per the [QMK docs](https://docs.qmk.fm/#/newbs_getting_started?id=set-up-your-environment) so compilation would actually work. +- From your shell, make sure your working directory is qmk*firmware, then enter the command `make moonlander:_layout_`, substituting the name of the folder you created for "_layout_". + +Good luck on your journey! And remember, if you get stuck, you can always get back to your [original layout](https://configure.zsa.io/moonlander/layouts/PMVBL/BZy0x/0) from Oryx. diff --git a/build.log b/build.log new file mode 100644 index 0000000..c119fed --- /dev/null +++ b/build.log @@ -0,0 +1,161 @@ +QMK Firmware Firmware20 +WARNING: + Can not run bin/qmk! This tool will be required when the develop branch is merged on 2020 Aug 29. + + Please run util/qmk_install.sh to install all the dependencies QMK requires. + +Making moonlander with keymap b6657eab620164b935cc + +arm-none-eabi-gcc (Alpine Linux) 8.3.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +Compiling: keyboards/moonlander/matrix.c Compiling: keyboards/moonlander/moonlander.c Compiling: keyboards/moonlander/keymaps/b6657eab620164b935cc/keymap.c Compiling: quantum/quantum.c Compiling: quantum/led.c Compiling: quantum/keymap_common.c Compiling: quantum/debounce/sym_defer_g.c Compiling: quantum/keycode_config.c Compiling: quantum/process_keycode/process_audio.c Compiling: quantum/process_keycode/process_clicky.c Compiling: quantum/audio/audio_chibios.c Compiling: quantum/audio/voices.c [OK] +Compiling: quantum/audio/luts.c [OK] +Compiling: quantum/process_keycode/process_music.c [OK] +Compiling: drivers/eeprom/eeprom_driver.c [OK] + [OK] +Compiling: drivers/eeprom/eeprom_i2c.c Compiling: quantum/color.c [OK] +Compiling: quantum/rgb_matrix.c [OK] +Compiling: quantum/rgb_matrix_drivers.c [OK] +Compiling: drivers/issi/is31fl3731.c [OK] + [OK] +Compiling: quantum/process_keycode/process_rgb.c Compiling: quantum/led_tables.c [OK] + [OK] +Compiling: quantum/process_keycode/process_space_cadet.c [OK] +Compiling: quantum/oryx.c Compiling: quantum/process_keycode/process_magic.c [OK] + [OK] +Compiling: quantum/process_keycode/process_grave_esc.c Compiling: quantum/process_keycode/process_dynamic_macro.c [OK] + [OK] +Compiling: quantum/process_keycode/process_tap_dance.c Compiling: drivers/chibios/i2c_master.c [OK] +Assembling: lib/chibios/os/common/startup/ARMCMx/compilers/GCC/crt0_v7m.S [OK] +Assembling: lib/chibios/os/common/startup/ARMCMx/compilers/GCC/vectors.S [OK] +Assembling: lib/chibios/os/common/ports/ARMCMx/compilers/GCC/chcoreasm_v7m.S [OK] +Compiling: tmk_core/common/host.c [OK] + [OK] +Compiling: tmk_core/common/keyboard.c Compiling: tmk_core/common/action.c [OK] +Compiling: tmk_core/common/action_tapping.c [OK] +Compiling: tmk_core/common/action_macro.c [OK] +Compiling: tmk_core/common/action_layer.c [OK] +Compiling: tmk_core/common/action_util.c [OK] +Compiling: tmk_core/common/print.c [OK] +Compiling: tmk_core/common/debug.c [OK] +Compiling: tmk_core/common/sendchar_null.c [OK] + [OK] +Compiling: tmk_core/common/util.c Compiling: tmk_core/common/eeconfig.c [OK] + [OK] + [OK] +Compiling: tmk_core/common/report.c Compiling: tmk_core/common/chibios/timer.c Compiling: tmk_core/common/chibios/suspend.c [OK] +Compiling: tmk_core/common/chibios/bootloader.c [OK] +Compiling: lib/printf/printf.c [OK] +Compiling: tmk_core/common/bootmagic_lite.c [OK] +Compiling: tmk_core/common/magic.c [OK] +Compiling: tmk_core/common/mousekey.c [OK] +Compiling: tmk_core/common/webusb.c [OK] +Compiling: tmk_core/protocol/chibios/usb_main.c [OK] +Compiling: tmk_core/protocol/chibios/main.c [OK] +Compiling: tmk_core/protocol/usb_descriptor.c [OK] +Compiling: tmk_core/protocol/chibios/usb_driver.c [OK] + [OK] +Compiling: lib/chibios/os/oslib/src/chmboxes.c Compiling: lib/chibios/os/oslib/src/chmemcore.c [OK] + [OK] +Compiling: lib/chibios/os/oslib/src/chmemheaps.c Compiling: lib/chibios/os/oslib/src/chmempools.c [OK] +Compiling: lib/chibios/os/oslib/src/chpipes.c [OK] + [OK] +Compiling: lib/chibios/os/oslib/src/chfactory.c [OK] +Compiling: lib/chibios/os/common/startup/ARMCMx/compilers/GCC/crt1.c Compiling: lib/chibios/os/rt/src/chsys.c [OK] + [OK] +Compiling: lib/chibios/os/rt/src/chdebug.c Compiling: lib/chibios/os/rt/src/chtrace.c [OK] +Compiling: lib/chibios/os/rt/src/chvt.c [OK] +Compiling: lib/chibios/os/rt/src/chschd.c [OK] +Compiling: lib/chibios/os/rt/src/chthreads.c [OK] +Compiling: lib/chibios/os/rt/src/chtm.c [OK] + [OK] +Compiling: lib/chibios/os/rt/src/chstats.c Compiling: lib/chibios/os/rt/src/chregistry.c [OK] + [OK] +Compiling: lib/chibios/os/rt/src/chsem.c Compiling: lib/chibios/os/rt/src/chmtx.c [OK] + [OK] +Compiling: lib/chibios/os/rt/src/chcond.c Compiling: lib/chibios/os/rt/src/chevents.c [OK] +Compiling: lib/chibios/os/rt/src/chmsg.c [OK] + [OK] +Compiling: lib/chibios/os/rt/src/chdynamic.c Compiling: lib/chibios/os/common/ports/ARMCMx/chcore.c [OK] +Compiling: lib/chibios/os/common/ports/ARMCMx/chcore_v7m.c [OK] +Compiling: lib/chibios/os/hal/osal/rt/osal.c [OK] +Compiling: lib/chibios/os/hal/src/hal.c [OK] +Compiling: lib/chibios/os/hal/src/hal_buffers.c [OK] + [OK] +Compiling: lib/chibios/os/hal/src/hal_queues.c Compiling: lib/chibios/os/hal/src/hal_mmcsd.c [OK] + [OK] +Compiling: lib/chibios/os/hal/src/hal_adc.c Compiling: lib/chibios/os/hal/src/hal_can.c [OK] +Compiling: lib/chibios/os/hal/src/hal_crypto.c [OK] + [OK] +Compiling: lib/chibios/os/hal/src/hal_dac.c [OK] +Compiling: lib/chibios/os/hal/src/hal_gpt.c Compiling: lib/chibios/os/hal/src/hal_i2c.c [OK] + [OK] +Compiling: lib/chibios/os/hal/src/hal_i2s.c Compiling: lib/chibios/os/hal/src/hal_icu.c [OK] +Compiling: lib/chibios/os/hal/src/hal_mac.c [OK] +Compiling: lib/chibios/os/hal/src/hal_mmc_spi.c [OK] +Compiling: lib/chibios/os/hal/src/hal_pal.c [OK] +Compiling: lib/chibios/os/hal/src/hal_pwm.c [OK] +Compiling: lib/chibios/os/hal/src/hal_rtc.c [OK] +Compiling: lib/chibios/os/hal/src/hal_sdc.c [OK] +Compiling: lib/chibios/os/hal/src/hal_serial.c [OK] +Compiling: lib/chibios/os/hal/src/hal_serial_usb.c [OK] +Compiling: lib/chibios/os/hal/src/hal_sio.c [OK] +Compiling: lib/chibios/os/hal/src/hal_spi.c [OK] + [OK] +Compiling: lib/chibios/os/hal/src/hal_st.c Compiling: lib/chibios/os/hal/src/hal_trng.c [OK] +Compiling: lib/chibios/os/hal/src/hal_uart.c [OK] +Compiling: lib/chibios/os/hal/src/hal_usb.c [OK] +Compiling: lib/chibios/os/hal/src/hal_wdg.c [OK] +Compiling: lib/chibios/os/hal/src/hal_wspi.c [OK] +Compiling: lib/chibios/os/hal/ports/common/ARMCMx/nvic.c [OK] + [OK] +Compiling: lib/chibios/os/hal/ports/STM32/STM32F3xx/stm32_isr.c Compiling: lib/chibios/os/hal/ports/STM32/STM32F3xx/hal_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/ADCv3/hal_adc_lld.c [OK] + [OK] + [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/CANv1/hal_can_lld.c Compiling: lib/chibios/os/hal/ports/STM32/LLD/DACv1/hal_dac_lld.c Compiling: lib/chibios/os/hal/ports/STM32/LLD/DMAv1/stm32_dma.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/EXTIv1/stm32_exti.c [OK] + [OK] + [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/GPIOv2/hal_pal_lld.c Compiling: lib/chibios/os/hal/ports/STM32/LLD/I2Cv2/hal_i2c_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c Compiling: lib/chibios/os/hal/ports/STM32/LLD/SPIv2/hal_i2s_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/SPIv2/hal_spi_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/TIMv1/hal_st_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/TIMv1/hal_gpt_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/TIMv1/hal_icu_lld.c [OK] + [OK] + [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/TIMv1/hal_pwm_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/USARTv2/hal_uart_lld.c Compiling: lib/chibios/os/hal/ports/STM32/LLD/USARTv2/hal_serial_lld.c Compiling: lib/chibios/os/hal/ports/STM32/LLD/USBv1/hal_usb_lld.c [OK] +Compiling: lib/chibios/os/hal/ports/STM32/LLD/xWDGv1/hal_wdg_lld.c [OK] + [OK] + [OK] +Compiling: lib/chibios/os/hal/lib/streams/chprintf.c Compiling: lib/chibios/os/hal/boards/ST_STM32F3_DISCOVERY/board.c Compiling: lib/chibios/os/hal/lib/streams/memstreams.c [OK] +Compiling: lib/chibios/os/hal/lib/streams/nullstreams.c [OK] + [OK] +Compiling: lib/chibios/os/various/syscalls.c [OK] +Compiling: tmk_core/common/chibios/syscall-fallbacks.c Archiving: .build/obj_moonlander_b6657eab620164b935cc/i2c_master.o [OK] + [OK] + [OK] + [OK] + [OK] + [OK] + [OK] + [OK] + [OK] + [OK] + [OK] + [OK] +Linking: .build/moonlander_b6657eab620164b935cc.elf [OK] +Creating binary load file for flashing: .build/moonlander_b6657eab620164b935cc.bin Creating load file for flashing: .build/moonlander_b6657eab620164b935cc.hex [OK] + [OK] + +Size after: + text data bss dec hex filename + 0 60960 0 60960 ee20 .build/moonlander_b6657eab620164b935cc.hex + +Copying moonlander_b6657eab620164b935cc.bin to qmk_firmware folder [OK] +(Firmware size check does not yet support cortex-m4 microprocessors; skipping.) diff --git a/moonlander_programmer-dvorak_PMVBL_BZy0x.bin b/moonlander_programmer-dvorak_PMVBL_BZy0x.bin new file mode 100755 index 0000000..0ebf25b Binary files /dev/null and b/moonlander_programmer-dvorak_PMVBL_BZy0x.bin differ diff --git a/moonlander_programmer-dvorak_PMVBL_BZy0x.md5 b/moonlander_programmer-dvorak_PMVBL_BZy0x.md5 new file mode 100644 index 0000000..cb15ffb --- /dev/null +++ b/moonlander_programmer-dvorak_PMVBL_BZy0x.md5 @@ -0,0 +1 @@ +8ab65a995177f258a460ba4a31bfc1a2 diff --git a/moonlander_programmer-dvorak_source/config.h b/moonlander_programmer-dvorak_source/config.h new file mode 100644 index 0000000..c83905e --- /dev/null +++ b/moonlander_programmer-dvorak_source/config.h @@ -0,0 +1,14 @@ +/* + Set any config.h overrides for your specific keymap here. + See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file +*/ +#define ORYX_CONFIGURATOR +#undef TAPPING_TERM +#define TAPPING_TERM 179 + +#define USB_SUSPEND_WAKEUP_DELAY 0 +#undef MOUSEKEY_MAX_SPEED +#define MOUSEKEY_MAX_SPEED 8 + +#define FIRMWARE_VERSION u8"PMVBL/BZy0x" +#define RGB_MATRIX_STARTUP_SPD 60 diff --git a/moonlander_programmer-dvorak_source/keymap.c b/moonlander_programmer-dvorak_source/keymap.c new file mode 100644 index 0000000..acacdc4 --- /dev/null +++ b/moonlander_programmer-dvorak_source/keymap.c @@ -0,0 +1,448 @@ +#include QMK_KEYBOARD_H +#include "version.h" +#include "keymap_german.h" +#include "keymap_nordic.h" +#include "keymap_french.h" +#include "keymap_spanish.h" +#include "keymap_hungarian.h" +#include "keymap_swedish.h" +#include "keymap_br_abnt2.h" +#include "keymap_canadian_multilingual.h" +#include "keymap_german_ch.h" +#include "keymap_jp.h" +#include "keymap_korean.h" +#include "keymap_bepo.h" +#include "keymap_italian.h" +#include "keymap_slovenian.h" +#include "keymap_lithuanian_azerty.h" +#include "keymap_danish.h" +#include "keymap_norwegian.h" +#include "keymap_portuguese.h" +#include "keymap_contributions.h" +#include "keymap_czech.h" +#include "keymap_romanian.h" +#include "keymap_russian.h" +#include "keymap_uk.h" +#include "keymap_estonian.h" +#include "keymap_belgian.h" +#include "keymap_us_international.h" + +#define KC_MAC_UNDO LGUI(KC_Z) +#define KC_MAC_CUT LGUI(KC_X) +#define KC_MAC_COPY LGUI(KC_C) +#define KC_MAC_PASTE LGUI(KC_V) +#define KC_PC_UNDO LCTL(KC_Z) +#define KC_PC_CUT LCTL(KC_X) +#define KC_PC_COPY LCTL(KC_C) +#define KC_PC_PASTE LCTL(KC_V) +#define ES_LESS_MAC KC_GRAVE +#define ES_GRTR_MAC LSFT(KC_GRAVE) +#define ES_BSLS_MAC ALGR(KC_6) +#define NO_PIPE_ALT KC_GRAVE +#define NO_BSLS_ALT KC_EQUAL +#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc) +#define BP_NDSH_MAC ALGR(KC_8) +#define MOON_LED_LEVEL LED_LEVEL + +enum custom_keycodes { + RGB_SLD = ML_SAFE_RANGE, +}; + + +enum tap_dance_codes { + DANCE_0, + DANCE_1, + DANCE_2, + DANCE_3, + DANCE_4, + DANCE_5, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_moonlander( + KC_GRAVE, KC_9, KC_7, KC_5, KC_3, KC_1, KC_HOME, KC_END, KC_0, KC_2, KC_4, KC_6, KC_8, KC_ESCAPE, + KC_BSPACE, KC_SCOLON, KC_COMMA, KC_DOT, KC_P, KC_Y, TG(1), KC_EQUAL, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DELETE, + LCTL_T(KC_SLASH),KC_A, KC_O, KC_E, KC_U, KC_I, KC_PGUP, KC_PGDOWN, KC_D, KC_H, KC_T, KC_N, KC_S, LGUI_T(KC_MINUS), + KC_BSLASH, KC_QUOTE, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_TRANSPARENT, + MO(4), TO(6), KC_TRANSPARENT, KC_LEFT, KC_RIGHT, KC_HYPR, KC_MEH, KC_DOWN, KC_UP, KC_TRANSPARENT, KR_HAEN, MO(4), + LT(5,KC_SPACE), KC_TAB, KC_LGUI, LALT_T(KC_CAPSLOCK),LSFT_T(KC_ESCAPE),LT(5,KC_ENTER) + ), + [1] = LAYOUT_moonlander( + TD(DANCE_0), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_0, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRANSPARENT, KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRANSPARENT, + KC_LSHIFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_F7, KC_H, KC_J, KC_K, KC_L, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_F5, KC_B, KC_N, KC_M, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_SPACE, KC_F12, KC_TRANSPARENT, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRANSPARENT, + LALT_T(KC_F4), KC_ENTER, TO(2), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [2] = LAYOUT_moonlander( + TD(DANCE_1), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_TRANSPARENT, KC_7, KC_8, KC_9, KC_0, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TAB, KC_Q, KC_UP, KC_E, KC_R, KC_T, TO(0), KC_F6, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRANSPARENT, + KC_LSHIFT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_F, KC_G, OSL(7), KC_F7, KC_H, KC_J, KC_K, KC_L, KC_TRANSPARENT, KC_TRANSPARENT, + KC_LCTRL, KC_Z, KC_X, KC_C, KC_V, KC_F5, KC_B, KC_N, KC_M, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_F1, KC_F2, KC_F3, KC_SPACE, KC_F12, KC_TRANSPARENT, KC_F8, KC_F9, KC_F10, KC_F11, KC_TRANSPARENT, + LALT_T(KC_F4), KC_ENTER, TO(1), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [3] = LAYOUT_moonlander( + KC_GRAVE, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRANSPARENT, KC_TRANSPARENT, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, + KC_TRANSPARENT, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_TRANSPARENT, KC_TRANSPARENT, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLASH, + KC_TRANSPARENT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_TRANSPARENT, KC_TRANSPARENT, KC_H, KC_J, KC_K, KC_L, LT(5,KC_SCOLON),RGUI_T(KC_QUOTE), + KC_TRANSPARENT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_TRANSPARENT, + KC_TRANSPARENT, TO(0), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), + [4] = LAYOUT_moonlander( + KC_ESCAPE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRANSPARENT, KC_TRANSPARENT, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, + KC_TRANSPARENT, KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRANSPARENT, KC_TRANSPARENT, KC_HOME, KC_1, KC_2, KC_3, KC_ASTR, KC_F12, + KC_TRANSPARENT, KC_CIRC, KC_DLR, KC_LPRN, KC_RPRN, KC_ASTR, KC_TRANSPARENT, KC_TRANSPARENT, KC_END, KC_4, KC_5, KC_6, KC_PLUS, KC_MINUS, + KC_TRANSPARENT, KC_PERC, KC_AMPR, KC_LBRACKET, KC_RBRACKET, KC_HASH, KC_AMPR, KC_7, KC_8, KC_9, KC_BSLASH, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_EQUAL, KC_TRANSPARENT, KC_TRANSPARENT, KC_0, KC_DOT, KC_DELETE, KC_EQUAL, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, LALT(KC_PSCREEN),KC_TRANSPARENT, KC_TRANSPARENT + ), + [5] = LAYOUT_moonlander( + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_WH_LEFT, KC_MS_UP, KC_MS_WH_RIGHT, KC_MS_WH_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PREV_TRACK,KC_AUDIO_VOL_DOWN,KC_AUDIO_VOL_UP,KC_MEDIA_NEXT_TRACK,KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, KC_TRANSPARENT, KC_TRANSPARENT, TD(DANCE_2), TD(DANCE_3), TD(DANCE_4), TD(DANCE_5), KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_MS_BTN3, KC_MS_BTN2, KC_MS_BTN1, KC_TRANSPARENT, KC_TRANSPARENT, KC_AUDIO_MUTE, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_HOME, KC_END, KC_TRANSPARENT, KC_TRANSPARENT, KC_PGDOWN, KC_PGUP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_MS_BTN1, KC_MS_BTN2, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_MEDIA_PLAY_PAUSE + ), + [6] = LAYOUT_moonlander( + KC_TRANSPARENT, MU_ON, MU_OFF, MU_TOG, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, DYN_REC_START1, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, RESET, + AU_ON, RGB_HUI, RGB_MOD, TOGGLE_LAYER_COLOR,RGB_SPI, RGB_VAI, KC_BRIGHTNESS_UP, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + AU_OFF, RGB_HUD, RGB_SLD, RGB_TOG, RGB_SPD, RGB_VAD, KC_BRIGHTNESS_DOWN, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + TO(0), KC_TRANSPARENT, TO(1), TO(2), TO(3), KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, WEBUSB_PAIR, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, + KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT, KC_TRANSPARENT + ), +}; + +extern bool g_suspend_state; +extern rgb_config_t rgb_matrix_config; + +void keyboard_post_init_user(void) { + rgb_matrix_enable(); +} + +const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = { + [1] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {255,220,201}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {255,220,201}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [2] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {205,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [3] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {250,159,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [4] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {31,255,255}, {31,255,255}, {31,255,255}, {0,0,0}, {0,0,0}, {31,255,255}, {31,255,255}, {31,255,255}, {0,0,0}, {0,0,0}, {31,255,255}, {31,255,255}, {31,255,255}, {31,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [5] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {195,61,255}, {195,61,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {50,153,244}, {50,153,244}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {154,86,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {154,86,255}, {0,0,0}, {0,0,0}, {0,0,0}, {50,153,244}, {50,153,244}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,183,238}, {0,0,0}, {0,0,0}, {0,0,0} }, + + [6] = { {0,0,0}, {32,177,198}, {32,177,198}, {0,0,255}, {0,0,0}, {32,176,255}, {32,176,255}, {32,176,255}, {0,0,0}, {251,29,239}, {10,225,255}, {10,225,255}, {10,225,255}, {255,220,201}, {0,0,0}, {243,222,234}, {243,222,234}, {243,222,234}, {205,255,255}, {0,0,0}, {0,0,0}, {85,203,158}, {85,203,158}, {250,159,255}, {0,0,0}, {0,0,0}, {134,255,213}, {134,255,213}, {0,0,0}, {0,0,0}, {134,247,235}, {134,247,235}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {8,224,207}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {105,255,255}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0} }, + +}; + +void set_layer_color(int layer) { + for (int i = 0; i < DRIVER_LED_TOTAL; i++) { + HSV hsv = { + .h = pgm_read_byte(&ledmap[layer][i][0]), + .s = pgm_read_byte(&ledmap[layer][i][1]), + .v = pgm_read_byte(&ledmap[layer][i][2]), + }; + if (!hsv.h && !hsv.s && !hsv.v) { + rgb_matrix_set_color( i, 0, 0, 0 ); + } else { + RGB rgb = hsv_to_rgb( hsv ); + float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX; + rgb_matrix_set_color( i, f * rgb.r, f * rgb.g, f * rgb.b ); + } + } +} + +void rgb_matrix_indicators_user(void) { + if (g_suspend_state || keyboard_config.disable_layer_led) { return; } + switch (biton32(layer_state)) { + case 1: + set_layer_color(1); + break; + case 2: + set_layer_color(2); + break; + case 3: + set_layer_color(3); + break; + case 4: + set_layer_color(4); + break; + case 5: + set_layer_color(5); + break; + case 6: + set_layer_color(6); + break; + default: + if (rgb_matrix_get_flags() == LED_FLAG_NONE) + rgb_matrix_set_color_all(0, 0, 0); + break; + } +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case RGB_SLD: + if (record->event.pressed) { + rgblight_mode(1); + } + return false; + } + return true; +} + +typedef struct { + bool is_press_action; + uint8_t step; +} tap; + +enum { + SINGLE_TAP = 1, + SINGLE_HOLD, + DOUBLE_TAP, + DOUBLE_HOLD, + DOUBLE_SINGLE_TAP, + MORE_TAPS +}; + +static tap dance_state[6]; + +uint8_t dance_step(qk_tap_dance_state_t *state); + +uint8_t dance_step(qk_tap_dance_state_t *state) { + if (state->count == 1) { + if (state->interrupted || !state->pressed) return SINGLE_TAP; + else return SINGLE_HOLD; + } else if (state->count == 2) { + if (state->interrupted) return DOUBLE_SINGLE_TAP; + else if (state->pressed) return DOUBLE_HOLD; + else return DOUBLE_TAP; + } + return MORE_TAPS; +} + + +void on_dance_0(qk_tap_dance_state_t *state, void *user_data); +void dance_0_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_0_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_0(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + } + if(state->count > 3) { + tap_code16(KC_ESCAPE); + } +} + +void dance_0_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[0].step = dance_step(state); + switch (dance_state[0].step) { + case SINGLE_TAP: register_code16(KC_ESCAPE); break; + case SINGLE_HOLD: register_code16(KC_GRAVE); break; + case DOUBLE_TAP: register_code16(KC_ESCAPE); register_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_ESCAPE); register_code16(KC_ESCAPE); + } +} + +void dance_0_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[0].step) { + case SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + case SINGLE_HOLD: unregister_code16(KC_GRAVE); break; + case DOUBLE_TAP: unregister_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + } + dance_state[0].step = 0; +} +void on_dance_1(qk_tap_dance_state_t *state, void *user_data); +void dance_1_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_1_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_1(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + tap_code16(KC_ESCAPE); + } + if(state->count > 3) { + tap_code16(KC_ESCAPE); + } +} + +void dance_1_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[1].step = dance_step(state); + switch (dance_state[1].step) { + case SINGLE_TAP: register_code16(KC_ESCAPE); break; + case SINGLE_HOLD: register_code16(KC_GRAVE); break; + case DOUBLE_TAP: register_code16(KC_ESCAPE); register_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_ESCAPE); register_code16(KC_ESCAPE); + } +} + +void dance_1_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[1].step) { + case SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + case SINGLE_HOLD: unregister_code16(KC_GRAVE); break; + case DOUBLE_TAP: unregister_code16(KC_ESCAPE); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_ESCAPE); break; + } + dance_state[1].step = 0; +} +void on_dance_2(qk_tap_dance_state_t *state, void *user_data); +void dance_2_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_2_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_2(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_LEFT); + tap_code16(KC_LEFT); + tap_code16(KC_LEFT); + } + if(state->count > 3) { + tap_code16(KC_LEFT); + } +} + +void dance_2_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[2].step = dance_step(state); + switch (dance_state[2].step) { + case SINGLE_TAP: register_code16(KC_LEFT); break; + case SINGLE_HOLD: register_code16(LCTL(KC_LEFT)); break; + case DOUBLE_TAP: register_code16(LGUI(KC_LEFT)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_LEFT); register_code16(KC_LEFT); + } +} + +void dance_2_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[2].step) { + case SINGLE_TAP: unregister_code16(KC_LEFT); break; + case SINGLE_HOLD: unregister_code16(LCTL(KC_LEFT)); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_LEFT)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_LEFT); break; + } + dance_state[2].step = 0; +} +void on_dance_3(qk_tap_dance_state_t *state, void *user_data); +void dance_3_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_3_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_3(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_DOWN); + tap_code16(KC_DOWN); + tap_code16(KC_DOWN); + } + if(state->count > 3) { + tap_code16(KC_DOWN); + } +} + +void dance_3_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[3].step = dance_step(state); + switch (dance_state[3].step) { + case SINGLE_TAP: register_code16(KC_DOWN); break; + case SINGLE_HOLD: register_code16(KC_DOWN); break; + case DOUBLE_TAP: register_code16(LGUI(KC_DOWN)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_DOWN); register_code16(KC_DOWN); + } +} + +void dance_3_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[3].step) { + case SINGLE_TAP: unregister_code16(KC_DOWN); break; + case SINGLE_HOLD: unregister_code16(KC_DOWN); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_DOWN)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_DOWN); break; + } + dance_state[3].step = 0; +} +void on_dance_4(qk_tap_dance_state_t *state, void *user_data); +void dance_4_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_4_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_4(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_UP); + tap_code16(KC_UP); + tap_code16(KC_UP); + } + if(state->count > 3) { + tap_code16(KC_UP); + } +} + +void dance_4_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[4].step = dance_step(state); + switch (dance_state[4].step) { + case SINGLE_TAP: register_code16(KC_UP); break; + case SINGLE_HOLD: register_code16(KC_UP); break; + case DOUBLE_TAP: register_code16(LGUI(KC_UP)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_UP); register_code16(KC_UP); + } +} + +void dance_4_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[4].step) { + case SINGLE_TAP: unregister_code16(KC_UP); break; + case SINGLE_HOLD: unregister_code16(KC_UP); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_UP)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_UP); break; + } + dance_state[4].step = 0; +} +void on_dance_5(qk_tap_dance_state_t *state, void *user_data); +void dance_5_finished(qk_tap_dance_state_t *state, void *user_data); +void dance_5_reset(qk_tap_dance_state_t *state, void *user_data); + +void on_dance_5(qk_tap_dance_state_t *state, void *user_data) { + if(state->count == 3) { + tap_code16(KC_RIGHT); + tap_code16(KC_RIGHT); + tap_code16(KC_RIGHT); + } + if(state->count > 3) { + tap_code16(KC_RIGHT); + } +} + +void dance_5_finished(qk_tap_dance_state_t *state, void *user_data) { + dance_state[5].step = dance_step(state); + switch (dance_state[5].step) { + case SINGLE_TAP: register_code16(KC_RIGHT); break; + case SINGLE_HOLD: register_code16(LCTL(KC_RIGHT)); break; + case DOUBLE_TAP: register_code16(LGUI(KC_RIGHT)); break; + case DOUBLE_SINGLE_TAP: tap_code16(KC_RIGHT); register_code16(KC_RIGHT); + } +} + +void dance_5_reset(qk_tap_dance_state_t *state, void *user_data) { + wait_ms(10); + switch (dance_state[5].step) { + case SINGLE_TAP: unregister_code16(KC_RIGHT); break; + case SINGLE_HOLD: unregister_code16(LCTL(KC_RIGHT)); break; + case DOUBLE_TAP: unregister_code16(LGUI(KC_RIGHT)); break; + case DOUBLE_SINGLE_TAP: unregister_code16(KC_RIGHT); break; + } + dance_state[5].step = 0; +} + +qk_tap_dance_action_t tap_dance_actions[] = { + [DANCE_0] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_0, dance_0_finished, dance_0_reset), + [DANCE_1] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_1, dance_1_finished, dance_1_reset), + [DANCE_2] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_2, dance_2_finished, dance_2_reset), + [DANCE_3] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_3, dance_3_finished, dance_3_reset), + [DANCE_4] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_4, dance_4_finished, dance_4_reset), + [DANCE_5] = ACTION_TAP_DANCE_FN_ADVANCED(on_dance_5, dance_5_finished, dance_5_reset), +}; + diff --git a/moonlander_programmer-dvorak_source/rules.mk b/moonlander_programmer-dvorak_source/rules.mk new file mode 100644 index 0000000..21003f2 --- /dev/null +++ b/moonlander_programmer-dvorak_source/rules.mk @@ -0,0 +1,9 @@ +# Set any rules.mk overrides for your specific keymap here. +# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +WEBUSB_ENABLE = yes +ORYX_ENABLE = yes +DYNAMIC_MACRO_ENABLE = yes +TAP_DANCE_ENABLE = yes +SRC = matrix.c -- cgit v1.2.3