浏览代码

Merge remote-tracking branch 'origin/master' into develop

Drashna Jael're 2 年之前
父节点
当前提交
731633e133
共有 100 个文件被更改,包括 4665 次插入1530 次删除
  1. 45 0
      keyboards/boardsource/lulu/keymaps/rmeli/config.h
  2. 108 0
      keyboards/boardsource/lulu/keymaps/rmeli/keymap.c
  3. 9 0
      keyboards/boardsource/lulu/keymaps/rmeli/rules.mk
  4. 27 0
      keyboards/cannonkeys/serenity/config.h
  5. 29 0
      keyboards/cannonkeys/serenity/halconf.h
  6. 156 0
      keyboards/cannonkeys/serenity/info.json
  7. 41 0
      keyboards/cannonkeys/serenity/keymaps/default/keymap.c
  8. 59 0
      keyboards/cannonkeys/serenity/keymaps/via/keymap.c
  9. 1 0
      keyboards/cannonkeys/serenity/keymaps/via/rules.mk
  10. 31 0
      keyboards/cannonkeys/serenity/mcuconf.h
  11. 25 0
      keyboards/cannonkeys/serenity/readme.md
  12. 2 0
      keyboards/cannonkeys/serenity/rules.mk
  13. 2 44
      keyboards/crkbd/keymaps/ericgebhart/keymap.c
  14. 6 19
      keyboards/crkbd/keymaps/rmeli/config.h
  15. 48 51
      keyboards/crkbd/keymaps/rmeli/keymap.c
  16. 3 3
      keyboards/crkbd/keymaps/rmeli/rules.mk
  17. 2 0
      keyboards/dztech/dz60rgb_ansi/v1/rules.mk
  18. 2 0
      keyboards/dztech/dz60rgb_ansi/v2/rules.mk
  19. 2 0
      keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk
  20. 2 32
      keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c
  21. 0 139
      keyboards/ergodox_ez/keymaps/ericgebhart/layouts.h
  22. 33 0
      keyboards/handwired/alcor_dactyl/config.h
  23. 130 0
      keyboards/handwired/alcor_dactyl/info.json
  24. 100 0
      keyboards/handwired/alcor_dactyl/keymaps/colemak_dh/keymap.c
  25. 43 0
      keyboards/handwired/alcor_dactyl/keymaps/default/keymap.c
  26. 28 0
      keyboards/handwired/alcor_dactyl/readme.md
  27. 2 0
      keyboards/handwired/alcor_dactyl/rules.mk
  28. 18 0
      keyboards/handwired/dactyl_manuform/5x6_6/5x6_6.c
  29. 47 0
      keyboards/handwired/dactyl_manuform/5x6_6/5x6_6.h
  30. 34 0
      keyboards/handwired/dactyl_manuform/5x6_6/config.h
  31. 93 0
      keyboards/handwired/dactyl_manuform/5x6_6/info.json
  32. 39 0
      keyboards/handwired/dactyl_manuform/5x6_6/keymaps/default/keymap.c
  33. 22 0
      keyboards/handwired/dactyl_manuform/5x6_6/readme.md
  34. 19 0
      keyboards/handwired/dactyl_manuform/5x6_6/rules.mk
  35. 2 32
      keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c
  36. 2 37
      keyboards/kinesis/keymaps/ericgebhart/keymap.c
  37. 1 2
      keyboards/kinesis/keymaps/ericgebhart/rules.mk
  38. 60 0
      keyboards/laser_ninja/pumpkin_pad/config.h
  39. 78 0
      keyboards/laser_ninja/pumpkin_pad/info.json
  40. 31 0
      keyboards/laser_ninja/pumpkin_pad/keymaps/default/keymap.c
  41. 41 0
      keyboards/laser_ninja/pumpkin_pad/keymaps/via/keymap.c
  42. 1 0
      keyboards/laser_ninja/pumpkin_pad/keymaps/via/rules.mk
  43. 23 0
      keyboards/laser_ninja/pumpkin_pad/readme.md
  44. 1 0
      keyboards/laser_ninja/pumpkin_pad/rules.mk
  45. 2 85
      keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c
  46. 0 113
      keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/layouts.h
  47. 2 0
      keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/rules.mk
  48. 43 0
      keyboards/nixkeyboards/day_off/config.h
  49. 16 0
      keyboards/nixkeyboards/day_off/day_off.c
  50. 32 0
      keyboards/nixkeyboards/day_off/day_off.h
  51. 87 0
      keyboards/nixkeyboards/day_off/info.json
  52. 60 0
      keyboards/nixkeyboards/day_off/keymaps/default/keymap.c
  53. 23 0
      keyboards/nixkeyboards/day_off/readme.md
  54. 19 0
      keyboards/nixkeyboards/day_off/rules.mk
  55. 45 0
      keyboards/preonic/keymaps/rmeli/config.h
  56. 231 0
      keyboards/preonic/keymaps/rmeli/keymap.c
  57. 1 0
      keyboards/preonic/keymaps/rmeli/readme.md
  58. 12 0
      keyboards/preonic/keymaps/rmeli/rules.mk
  59. 25 0
      keyboards/splitkb/kyria/keymaps/ericgebhart/config.h
  60. 18 0
      keyboards/splitkb/kyria/keymaps/ericgebhart/keymap.c
  61. 3 0
      keyboards/splitkb/kyria/keymaps/ericgebhart/rules.mk
  62. 2 123
      keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c
  63. 0 1
      keyboards/xiudi/xd75/keymaps/ericgebhart/readme.md
  64. 1 1
      keyboards/xiudi/xd75/keymaps/ericgebhart/rules.mk
  65. 0 94
      users/ericgebhart/altlocal_keys.c
  66. 90 0
      users/ericgebhart/base_layers/accents.h
  67. 150 0
      users/ericgebhart/base_layers/alt.h
  68. 58 0
      users/ericgebhart/base_layers/base_layers.h
  69. 158 0
      users/ericgebhart/base_layers/beakl.h
  70. 114 0
      users/ericgebhart/base_layers/bepo.h
  71. 46 0
      users/ericgebhart/base_layers/carpalx.h
  72. 73 0
      users/ericgebhart/base_layers/dvorak.h
  73. 67 0
      users/ericgebhart/base_layers/gap.h
  74. 147 0
      users/ericgebhart/base_layers/hands_down.h
  75. 300 0
      users/ericgebhart/base_layers/keymaps.txt
  76. 61 0
      users/ericgebhart/base_layers/maks.h
  77. 69 0
      users/ericgebhart/base_layers/qwerty.h
  78. 56 0
      users/ericgebhart/base_layers/toprows.h
  79. 0 81
      users/ericgebhart/caps_word.c
  80. 0 35
      users/ericgebhart/caps_word.h
  81. 0 10
      users/ericgebhart/combos.def
  82. 272 3
      users/ericgebhart/config.h
  83. 0 280
      users/ericgebhart/core_keys.h
  84. 0 345
      users/ericgebhart/core_keysets.h
  85. 101 0
      users/ericgebhart/defs/accented_keys.def
  86. 6 0
      users/ericgebhart/defs/alt_shift.def
  87. 208 0
      users/ericgebhart/defs/altlocal_keys.def
  88. 139 0
      users/ericgebhart/defs/combos.def
  89. 86 0
      users/ericgebhart/defs/custom_keys.def
  90. 65 0
      users/ericgebhart/defs/encoders.def
  91. 23 0
      users/ericgebhart/defs/key_overrides.def
  92. 19 0
      users/ericgebhart/defs/mod_lock.def
  93. 19 0
      users/ericgebhart/defs/not_dead.def
  94. 45 0
      users/ericgebhart/defs/nshot.def
  95. 17 0
      users/ericgebhart/defs/oneshot.def
  96. 7 0
      users/ericgebhart/defs/send_string.def
  97. 123 0
      users/ericgebhart/defs/smart_lock.def
  98. 3 0
      users/ericgebhart/defs/swapper.def
  99. 68 0
      users/ericgebhart/defs/tap_hold.def
  100. 5 0
      users/ericgebhart/defs/unicode.def

+ 45 - 0
keyboards/boardsource/lulu/keymaps/rmeli/config.h

@@ -0,0 +1,45 @@
+/*
+Copyright 2022 Rocco Meli <@RMeli>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define MASTER_LEFT // Left side is the master
+#define SPLIT_LED_STATE_ENABLE
+
+#ifdef RGB_MATRIX_ENABLE
+// Configure RGB Matrix
+#    define RGB_MATRIX_KEYPRESSES // enable keypress effects
+#    define RGB_MATRIX_LED_FLUSH_LIMIT 16
+#    define RGB_DISABLE_WHEN_USB_SUSPENDED
+#    define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
+#    define RGB_MATRIX_STARTUP_HUE 10
+#    define RGB_MATRIX_STARTUP_SAT 255
+#    define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
+// Disable RGB Matrix effects (from lulu/config.h)
+#    undef ENABLE_RGB_MATRIX_ALPHAS_MODS
+#    undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#    undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#    undef ENABLE_RGB_MATRIX_BREATHING
+#    undef ENABLE_RGB_MATRIX_BAND_SAT
+#    undef ENABLE_RGB_MATRIX_BAND_VAL
+// Enable RGB Matrix effects
+#    define ENABLE_RGB_MATRIX_BREATHING
+#    define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#    define ENABLE_RGB_MATRIX_SOLID_COLOR
+#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#endif

+ 108 - 0
keyboards/boardsource/lulu/keymaps/rmeli/keymap.c

@@ -0,0 +1,108 @@
+/*
+Copyright 2022 Cole Smith <cole@boadsource.xyz>
+Copyright 2022 Rocco Meli <@RMeli>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#include QMK_KEYBOARD_H
+
+#include "rmeli.h"
+
+enum layers {
+    _QWERTY,
+    _COLEMAK_DH,
+    _RAISE,
+    _LOWER,
+    _ADJUST,
+};
+
+#define RAISE MO(_RAISE)
+#define LOWER MO(_LOWER)
+
+#define QWY_DF DF(_QWERTY)
+#define CMK_DF DF(_COLEMAK_DH)
+
+// clang-format off
+#define __________THUMB_LEFT_x4___________ KC_LALT, KC_LGUI,   LOWER,  KC_SPC
+#define __________THUMB_RIGHT_x4__________  KC_ENT,   RAISE, KC_LCTL, KC_RGUI
+// clang-format on
+
+/* LAYOUT
+ *
+ * ,-----------------------------.                ,-----------------------------.
+ * |    |    |    |    |    |    |                |    |    |    |    |    |    |
+ * |----+----+----+----+----+----|                |----+----+----+----+----+----|
+ * |    |    |    |    |    |    |                |    |    |    |    |    |    |
+ * |----+----+----+----+----+----|                |----+----+----+----+----+----|
+ * |    |    |    |    |    |    |-----.    ,-----|    |    |    |    |    |    |
+ * |----+----+----+----+----+----|     |    |     |----+----+----+----+----+----|
+ * |    |    |    |    |    |    |-----|    |-----|    |    |    |    |    |    |
+ * `----------------------------/     /      \     \----------------------------'
+ *            |    |    |    | /     /        \     \  |    |    |    |
+ *            |    |    |    |/     /          \     \ |    |    |    |
+ *            `--------------''-----'          '------''--------------'
+ */
+
+// Define wrapper for standard LULU layout
+#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  [_QWERTY] = LAYOUT_wrapper(
+  ___________________NUMBER_LEFT_x6___________________,                   ___________________NUMBER_RIGHT_x6__________________,
+  ___________________QWERTY_L1_x6_____________________,                   ___________________QWERTY_R1_x6_____________________,
+  ___________________QWERTY_L2_x6_____________________,                   ___________________QWERTY_R2_x6_____________________,
+  ___________________QWERTY_L3_x6_____________________, KC_LBRC, KC_RBRC, ___________________QWERTY_R3_x6_____________________,
+                             __________THUMB_LEFT_x4___________,  __________THUMB_RIGHT_x4__________
+  ),
+
+  [_COLEMAK_DH] = LAYOUT_wrapper(
+  ___________________NUMBER_LEFT_x6___________________,                   ___________________NUMBER_RIGHT_x6__________________,
+  ________________COLEMAK_MOD_DH_L1_x6________________,                   ________________COLEMAK_MOD_DH_R1_x6________________,
+  ________________COLEMAK_MOD_DH_L2_x6________________,                   ________________COLEMAK_MOD_DH_R2_x6________________,
+  ________________COLEMAK_MOD_DH_L3_x6________________, KC_LBRC, KC_RBRC, ________________COLEMAK_MOD_DH_R3_x6________________,
+                             __________THUMB_LEFT_x4___________,  __________THUMB_RIGHT_x4__________
+  ),
+
+  [_LOWER] = LAYOUT_wrapper(
+  ____________________FUNC_LEFT_x6____________________,                   ____________________FUNC_RIGHT_x6___________________,
+  _______, ______________NUMBER_LEFT_x5_______________,                   ______________NUMBER_RIGHT_x5______________, _______,
+  _______, ______________UNICODE_L2_x5________________,                   ________________NAV_R2_x5__________________, XXXXXXX,
+  _______, ______________UNICODE_L3_x5________________, _______, _______, ________________NAV_R3_x5__________________, _______,
+                             _______, _______, _______, _______, _______, _______, _______, _______
+  ),
+
+  [_RAISE] = LAYOUT_wrapper(
+  ___________________NUMBER_LEFT_x6___________________,                   ___________________NUMBER_RIGHT_x6__________________,
+  ___________________SYMBOL_LEFT_x6___________________,                   ___________________SYMBOL_RIGHT_x6__________________,
+  _______, ____________NAV_VIM_x4____________, XXXXXXX,                   ____________________SYMBOL_R2_x6____________________,
+  _______, _________________NONE_5x___________________, _______, _______, ____________________SYMBOL_R3_x6____________________,
+                             _______, _______, _______, _______, _______, _______, _______, _______
+  ),
+
+  [_ADJUST] = LAYOUT_wrapper(
+  QK_BOOT, _________________NONE_5x___________________,                   ______________________NONE_6x_______________________,
+  XXXXXXX, _________________NONE_5x___________________,                   _______________CONFIG_R1_x5________________,  QWY_DF,
+  RGB_TOG, ________________RGB_L2_x5__________________,                   _______________CONFIG_R2_x5________________, XXXXXXX,
+  XXXXXXX, ________________RGB_L3_x5__________________, _______, _______, _______________CONFIG_R3_x5________________,  CMK_DF,
+                             _______, _______, _______, _______, _______, _______, _______, _______
+ )
+};
+// clang-format on
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+    return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}

+ 9 - 0
keyboards/boardsource/lulu/keymaps/rmeli/rules.mk

@@ -0,0 +1,9 @@
+TAP_DANCE_ENABLE = yes
+AUTO_SHIFT_ENABLE = no // disable auto-shift with home row mods
+
+UNICODEMAP_ENABLE = yes
+NKRO_ENABLE = yes
+MAGIC_ENABLE = yes
+
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes

+ 27 - 0
keyboards/cannonkeys/serenity/config.h

@@ -0,0 +1,27 @@
+/*
+Copyright 2015 Jun Wako <wakojun@gmail.com>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#define BACKLIGHT_PWM_DRIVER    PWMD3
+#define BACKLIGHT_PWM_CHANNEL   1
+#define BACKLIGHT_PAL_MODE      1
+
+#define WS2812_SPI SPID2
+#define WS2812_SPI_MOSI_PAL_MODE 0
+#define WS2812_SPI_SCK_PAL_MODE 0
+#define WS2812_SPI_SCK_PIN B13

+ 29 - 0
keyboards/cannonkeys/serenity/halconf.h

@@ -0,0 +1,29 @@
+/* Copyright 2020 QMK
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ *    `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_PWM TRUE
+
+#define HAL_USE_SPI TRUE
+
+#include_next <halconf.h>
+

+ 156 - 0
keyboards/cannonkeys/serenity/info.json

@@ -0,0 +1,156 @@
+{
+    "keyboard_name": "Serenity",
+    "usb": {
+        "vid": "0xCA04",
+        "pid": "0x0017",
+        "device_version": "0.0.1"
+    },
+    "url": "https://cannonkeys.com",
+    "maintainer": "awkannan",
+    "bootloader": "stm32-dfu",
+    "processor": "STM32F072",
+    "diode_direction": "COL2ROW",
+    "features": {
+        "bootmagic": true,
+        "command": false,
+        "console": false,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "backlight": true,
+        "rgblight": true
+    },
+    "debounce": 5,
+    "matrix_pins": {
+        "cols": ["B1", "B2", "B10", "B11", "B12", "B14", "A8", "A9", "A10", "A3", "B0", "A2", "A1", "A7", "A0", "B4", "B6", "B7"],
+        "rows": ["A15", "B3", "B5", "A4", "A5", "F1"]
+    },
+    "backlight": {
+        "breathing": true,
+        "breathing_period": 5,
+        "levels": 15,
+        "pin": "A6"
+    },
+    "rgblight": {
+        "led_count": 12,
+        "pin": "B15",
+        "hue_steps": 24,
+        "saturation_steps": 16,
+        "brightness_steps": 16,
+        "animations": {
+            "alternating": true,
+            "breathing": true,
+            "christmas": true,
+            "knight": true,
+            "rainbow_mood": true,
+            "rainbow_swirl": true,
+            "rgb_test": true,
+            "snake": true,
+            "static_gradient": true,
+            "twinkle": true
+        }
+    },
+    "indicators": {
+        "caps_lock": "B9",
+        "scroll_lock": "F0",
+        "on_state": 0
+    },
+    "layouts": {
+        "LAYOUT_all": {
+            "layout": [
+                { "label": "Esc", "matrix": [0, 0], "x": 0.0, "y": 0.0 },
+                { "label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0.0 },
+                { "label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0.0 },
+                { "label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0.0 },
+                { "label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0.0 },
+                { "label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0.0 },
+                { "label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0.0 },
+                { "label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0.0 },
+                { "label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0.0 },
+                { "label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0.0 },
+                { "label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0.0 },
+                { "label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0.0 },
+                { "label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0.0 },
+                { "label": "F13", "matrix": [0, 14], "x": 14.0, "y": 0.0 },
+                { "label": "PrtSc", "matrix": [0, 15], "x": 15.25, "y": 0.0 },
+                { "label": "Scroll Lock", "matrix": [0, 16], "x": 16.25, "y": 0.0 },
+                { "label": "Pause", "matrix": [0, 17], "x": 17.25, "y": 0.0 },
+                { "label": "~", "matrix": [1, 0], "x": 0.0, "y": 1.25 },
+                { "label": "!", "matrix": [1, 1], "x": 1.0, "y": 1.25 },
+                { "label": "@", "matrix": [1, 2], "x": 2.0, "y": 1.25 },
+                { "label": "#", "matrix": [1, 3], "x": 3.0, "y": 1.25 },
+                { "label": "$", "matrix": [1, 4], "x": 4.0, "y": 1.25 },
+                { "label": "%", "matrix": [1, 5], "x": 5.0, "y": 1.25 },
+                { "label": "^", "matrix": [1, 6], "x": 6.0, "y": 1.25 },
+                { "label": "&", "matrix": [1, 7], "x": 7.0, "y": 1.25 },
+                { "label": "*", "matrix": [1, 8], "x": 8.0, "y": 1.25 },
+                { "label": "(", "matrix": [1, 9], "x": 9.0, "y": 1.25 },
+                { "label": ")", "matrix": [1, 10], "x": 10.0, "y": 1.25 },
+                { "label": "_", "matrix": [1, 11], "x": 11.0, "y": 1.25 },
+                { "label": "+", "matrix": [1, 12], "x": 12.0, "y": 1.25 },
+                { "label": "Bksp", "matrix": [1, 13], "x": 13.0, "y": 1.25 },
+                { "label": "Del", "matrix": [1, 14], "x": 14.0, "y": 1.25 },
+                { "label": "Insert", "matrix": [1, 15], "x": 15.25, "y": 1.25 },
+                { "label": "Home", "matrix": [1, 16], "x": 16.25, "y": 1.25 },
+                { "label": "PgUp", "matrix": [1, 17], "x": 17.25, "y": 1.25 },
+                { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0.0, "y": 2.25 },
+                { "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
+                { "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
+                { "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
+                { "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
+                { "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
+                { "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
+                { "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
+                { "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
+                { "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
+                { "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
+                { "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
+                { "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
+                { "label": "|", "matrix": [2, 14], "w": 1.5, "x": 13.5, "y": 2.25 },
+                { "label": "Delete", "matrix": [2, 15], "x": 15.25, "y": 2.25 },
+                { "label": "End", "matrix": [2, 16], "x": 16.25, "y": 2.25 },
+                { "label": "PgDn", "matrix": [2, 17], "x": 17.25, "y": 2.25 },
+                { "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0.0, "y": 3.25 },
+                { "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
+                { "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
+                { "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
+                { "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
+                { "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
+                { "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
+                { "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
+                { "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
+                { "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
+                { "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
+                { "label": "\"", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
+                { "label": "|", "matrix": [3, 12], "x": 12.75, "y": 3.25 },
+                { "label": "Enter", "matrix": [3, 14], "w": 1.25, "x": 13.75, "y": 3.25 },
+                { "label": "Shift", "matrix": [4, 0], "w": 1.25, "x": 0.0, "y": 4.25 },
+                { "label": "|", "matrix": [4, 1], "x": 1.25, "y": 4.25 },
+                { "label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25 },
+                { "label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25 },
+                { "label": "C", "matrix": [4, 4], "x": 4.25, "y": 4.25 },
+                { "label": "V", "matrix": [4, 5], "x": 5.25, "y": 4.25 },
+                { "label": "B", "matrix": [4, 6], "x": 6.25, "y": 4.25 },
+                { "label": "N", "matrix": [4, 7], "x": 7.25, "y": 4.25 },
+                { "label": "M", "matrix": [4, 8], "x": 8.25, "y": 4.25 },
+                { "label": "<", "matrix": [4, 9], "x": 9.25, "y": 4.25 },
+                { "label": ">", "matrix": [4, 10], "x": 10.25, "y": 4.25 },
+                { "label": "?", "matrix": [4, 11], "x": 11.25, "y": 4.25 },
+                { "label": "Shift", "matrix": [4, 12], "w": 1.75, "x": 14.75, "y": 4.25 },
+                { "label": "Fn", "matrix": [4, 14], "x": 16.5, "y": 4.25 },
+                { "label": "\u2191", "matrix": [4, 16], "x": 18.75, "y": 4.25 },
+                { "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0.0, "y": 5.25 },
+                { "label": "Win", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.25 },
+                { "label": "Alt", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.25 },
+                { "matrix": [5, 6], "w": 6.25, "x": 3.75, "y": 5.25 },
+                { "label": "Alt", "matrix": [5, 10], "w": 1.25, "x": 10.0, "y": 5.25 },
+                { "label": "Fn", "matrix": [5, 11], "w": 1.25, "x": 11.25, "y": 5.25 },
+                { "label": "Win", "matrix": [5, 12], "w": 1.25, "x": 12.5, "y": 5.25 },
+                { "label": "Ctrl", "matrix": [5, 14], "w": 1.25, "x": 13.75, "y": 5.25 },
+                { "label": "\u2190", "matrix": [5, 15], "x": 15.25, "y": 5.25 },
+                { "label": "\u2193", "matrix": [5, 16], "x": 16.25, "y": 5.25 },
+                { "label": "\u2192", "matrix": [5, 17], "x": 17.25, "y": 5.25 }
+            ]
+        }
+    }
+}

+ 41 - 0
keyboards/cannonkeys/serenity/keymaps/default/keymap.c

@@ -0,0 +1,41 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+enum layer_names {
+    _BASE,
+    _FN1
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  [_BASE] = LAYOUT_all(
+    KC_ESC,  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_MPLY,                    KC_PSCR, KC_SCRL, KC_PAUS,
+    KC_GRV,  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_BSPC,      KC_INS,  KC_HOME, KC_PGUP,
+    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_DEL,  KC_END,  KC_PGDN,
+    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT,    KC_NUHS,    KC_ENT,
+    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,   KC_SLSH,    KC_RSFT,    KC_TRNS,                          KC_UP,
+    KC_LCTL, KC_LGUI, KC_LALT,                   KC_SPC,                                      KC_RALT,  MO(1),      KC_RGUI,    KC_RCTL,                 KC_LEFT, KC_DOWN, KC_RGHT),
+
+  [_FN1] = LAYOUT_all(
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,      RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI,     RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS,               BL_TOGG, BL_DEC,  BL_INC,
+    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_TRNS, KC_TRNS,               KC_TRNS, KC_TRNS, KC_VOLU,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                        KC_MPLY, KC_MNXT, KC_VOLD,
+    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_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_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_TRNS),
+
+};

+ 59 - 0
keyboards/cannonkeys/serenity/keymaps/via/keymap.c

@@ -0,0 +1,59 @@
+/*
+Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+enum layer_names {
+    _BASE,
+    _FN1,
+    _FN2,
+    _FN3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+  [_BASE] = LAYOUT_all(
+    KC_ESC,  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_MPLY,               KC_PSCR, KC_SCRL, KC_PAUS,
+    KC_GRV,  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_BSPC,      KC_INS,  KC_HOME, KC_PGUP,
+    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_DEL,  KC_END,  KC_PGDN,
+    KC_CAPS, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
+    KC_LSFT, KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, KC_TRNS,                        KC_UP,
+    KC_LCTL, KC_LGUI, KC_LALT,                            KC_SPC,                             KC_RALT, MO(1),   KC_RGUI, KC_RCTL,               KC_LEFT, KC_DOWN, KC_RGHT),
+
+  [_FN1] = LAYOUT_all(
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS,               BL_TOGG, BL_DEC,  BL_INC,
+    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_TRNS, KC_TRNS,      KC_TRNS, KC_TRNS, KC_VOLU,
+    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,               KC_MPLY, KC_MNXT, KC_VOLD,
+    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_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_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_TRNS),
+
+  [_FN2] = LAYOUT_all(
+    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_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_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_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_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_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_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_TRNS),
+
+  [_FN3] = LAYOUT_all(
+    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_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_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_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_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_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_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_TRNS)
+
+};

+ 1 - 0
keyboards/cannonkeys/serenity/keymaps/via/rules.mk

@@ -0,0 +1 @@
+VIA_ENABLE = yes

+ 31 - 0
keyboards/cannonkeys/serenity/mcuconf.h

@@ -0,0 +1,31 @@
+/* Copyright 2020 QMK
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * This file was auto-generated by:
+ *    `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next <mcuconf.h>
+
+#undef STM32_PWM_USE_TIM3
+#define STM32_PWM_USE_TIM3 TRUE
+
+#undef STM32_SPI_USE_SPI2
+#define STM32_SPI_USE_SPI2 TRUE
+

+ 25 - 0
keyboards/cannonkeys/serenity/readme.md

@@ -0,0 +1,25 @@
+# Serenity
+
+A calming F13 TKL from HoodrowThrillson
+
+* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
+* Hardware Supported: STM32F072CBT6
+* Hardware Availability: [CannonKeys](https://cannonkeys.com)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make cannonkeys/serenity:default
+
+Flashing example for this keyboard:
+
+    make cannonkeys/serenity:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Swap the boot switch on the back of the PCB to "1" and hit the reset button
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available

+ 2 - 0
keyboards/cannonkeys/serenity/rules.mk

@@ -0,0 +1,2 @@
+# Wildcard to allow APM32 MCU
+DFU_SUFFIX_ARGS = -v FFFF -p FFFF

+ 2 - 44
keyboards/crkbd/keymaps/ericgebhart/keymap.c

@@ -1,5 +1,5 @@
 /*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 
   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
@@ -14,47 +14,5 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include "ericgebhart.h"
 
-#define Crkbd_base(...)        Base_3x6_3(__VA_ARGS__)
-#define Crkbd_bepo(...)        Base_bepo_3x6_3(__VA_ARGS__)
-#define Crkbd_bepo6(...)       Base_bepo6_3x6_3(__VA_ARGS__)
-#define Crkbd_transient(...)   Transient6_3x6_3(__VA_ARGS__)
-
-/*
- * The `Crkbd_base` macro is a template to allow the use of identical
- * modifiers for the default layouts (eg QWERTY, Colemak, Dvorak, etc), so
- * that there is no need to set them up for each layout, and modify all of
- * them if I want to change them.  This helps to keep consistency and ease
- * of use. K## is a placeholder to pass through the individual keycodes
- */
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    // Qwerty based Base layers
-    [_DVORAK]  = Crkbd_base(___DVORAK___),
-    [_BEAKL]   = Crkbd_base(___BEAKL15___),
-    [_COLEMAK] = Crkbd_base(___COLEMAK_DH___),
-    [_QWERTY]  = Crkbd_base(___QWERTY___),
-
-    // Bepo base layers
-    [_BEAKL_BP]  = Crkbd_bepo(___BEAKL15_FR___),
-    [_DVORAK_BP] = Crkbd_bepo(___DVORAK_FR___),
-    [_BEPO]      = Crkbd_bepo6(___BEPO6___),
-
-    // Transient layers.
-    [_SYMB]    = Crkbd_transient(___SYMB_BEAKLB_3x12___),
-    [_SYMB_BP] = Crkbd_transient(___SYMB_BEAKLB_BP_3x12___),
-
-    [_KEYPAD]    = Crkbd_transient(___KP_C_3x12___),
-    [_KEYPAD_BP] = Crkbd_transient(___KP_C_BP_3x12___),
-
-    [_TOPROWS]    = Crkbd_transient(___TOPROWS_3x12___),
-    [_TOPROWS_BP] = Crkbd_transient(___TOPROWS_BP_3x12___),
-
-    [_NAV] = Crkbd_transient(___NAV_3x12___),
-
-    [_LAYERS] = Crkbd_transient(___LAYERS_3x12___),
-    //[_RGB] = Crkbd_transient(___RGB_3x12___),
-    [_ADJUST] = Crkbd_transient(___ADJUST_3x12___),
-    ///HPT_TOG, KC_NUKE, ___,        ___, TG_MODS, HPT_FBK
-};
+// See: users/ericgebhart.

+ 6 - 19
keyboards/crkbd/keymaps/rmeli/config.h

@@ -21,32 +21,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-#define MASTER_LEFT  // Left side is the master
+#define MASTER_LEFT // Left side is the master
 #define SPLIT_LED_STATE_ENABLE
 
-#define TAPPING_TERM 200
-
-#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_LINUX
-
-#define AUTO_SHIFT_REPEAT
-
-#ifdef RGBLIGHT_ENABLE
-#    define RGBLIGHT_LIMIT_VAL 120
-#    define RGBLIGHT_HUE_STEP 10
-#    define RGBLIGHT_SAT_STEP 17
-#    define RGBLIGHT_VAL_STEP 17
-#endif
-
 #ifdef RGB_MATRIX_ENABLE
 // RGB matrix options
-#    define RGB_MATRIX_KEYPRESSES  // enable keypress effects
+#    define RGB_MATRIX_KEYPRESSES // enable keypress effects
 #    define RGB_MATRIX_LED_FLUSH_LIMIT 16
 #    define RGB_DISABLE_WHEN_USB_SUSPENDED
 // Disable unwanted R2G effects (from r2g/config.h)
 #    undef ENABLE_RGB_MATRIX_ALPHAS_MODS
 #    undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
 #    undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
-#    undef ENABLE_RGB_MATRIX_BREATHING
+#    define ENABLE_RGB_MATRIX_BREATHING
 #    undef ENABLE_RGB_MATRIX_BAND_SAT
 #    undef ENABLE_RGB_MATRIX_BAND_VAL
 #    undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
@@ -57,8 +44,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #    undef ENABLE_RGB_MATRIX_RAINDROPS
 #    undef ENABLE_RGB_MATRIX_HUE_BREATHING
 #    undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
-//#   undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
-#    undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#    define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#    define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
 #    undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
 #    undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
 #    undef ENABLE_RGB_MATRIX_SPLASH
@@ -77,4 +64,4 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #undef LOCKING_SUPPORT_ENABLE
 #undef LOCKING_RESYNC_ENABLE
 #define NO_MUSIC_MODE
-#define LAYER_STATE_8BIT  // Limit to 8 layers
+#define LAYER_STATE_8BIT // Limit to 8 layers

+ 48 - 51
keyboards/crkbd/keymaps/rmeli/keymap.c

@@ -1,6 +1,6 @@
 /*
 Copyright 2019 @foostan
-Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
 Copyright 2021 Rocco Meli <@RMeli>
 
 This program is free software: you can redistribute it and/or modify
@@ -69,64 +69,61 @@ enum layer_names {
 #define _CMK 1
 #define _CFG 4
 
+#define ______THUMB_LEFT_x3______ KC_LGUI, MO(_DWN), KC_SPC
+#define ______THUMB_RIGHT_x3_____ KC_ENT, MO(_UP), KC_RCTL
+
+// LAYOUT
+//
+// |-----------------------------|            |-----------------------------|
+// |    |    |    |    |    |    |            |    |    |    |    |    |    |
+// |----+----+----+----+----+----|            |----+----+----+----+----+----|
+// |    |    |    |    |    |    |            |    |    |    |    |    |    |
+// |----+----+----+----+----+----|            |----+----+----+----+----+----|
+// |    |    |    |    |    |    |            |    |    |    |    |    |    |
+// |----+----+----+----+----+----+----|  |----+----+----+----+----+----+----|
+//                     |    |    |    |  |    |    |    |
+//                     |--------------|  |--------------|
+
+// Define wrapper for standard CRKB layout
+#define LAYOUT_wrapper(...) LAYOUT_split_3x6_3(__VA_ARGS__)
+
+// clang-format off
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_QWERTY] = LAYOUT_split_3x6_3(
-  //|-----------------------------------------------------|                    |-----------------------------------------------------|
-       KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                         KC_Y,    KC_U,    KC_I,    KC_O,   KC_P,  KC_BSPC,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-        TD_ED,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                         KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      TD_LSPC,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                         KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH, TD_RSPC,
-  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
-                                          KC_LGUI,MO(_DWN),  KC_SPC,     KC_ENT,MO(_UP),  KC_RCTL
-                                      //|--------------------------|  |--------------------------|
+
+  [_QWERTY] = LAYOUT_wrapper(
+    // clang-format off
+    ___________________QWERTY_L1_x6_____________________,                      ___________________QWERTY_R1_x6_____________________,
+    ___________________QWERTY_L2_x6_____________________,                      ___________________QWERTY_R2_x6_____________________,
+    ___________________QWERTY_L3_x6_____________________,                      ___________________QWERTY_R3_x6_____________________,
+                                        ______THUMB_LEFT_x3______,     ______THUMB_RIGHT_x3_____
   ),
 
-  [_COLEMAK_DH] = LAYOUT_split_3x6_3(
-  //|-----------------------------------------------------|                    |-----------------------------------------------------|
-       KC_TAB,    KC_Q,    KC_W,    KC_F,    KC_P,    KC_B,                         KC_J,    KC_L,    KC_U, KC_SCLN,   KC_P,  KC_BSPC,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-        TD_ED,    KC_A,    KC_R,    KC_S,    KC_T,    KC_G,                         KC_M,    KC_N,    KC_E,    KC_I,    KC_O, KC_QUOT,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      TD_LSPC,    KC_Z,    KC_X,    KC_C,    KC_D,    KC_V,                         KC_K,    KC_H, KC_COMM,  KC_DOT, KC_SLSH, TD_RSPC,
-  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
-                                          KC_LGUI,MO(_DWN),  KC_SPC,     KC_ENT,MO(_UP),  KC_RCTL
-                                      //|--------------------------|  |--------------------------|
+  [_COLEMAK_DH] = LAYOUT_wrapper(
+    ________________COLEMAK_MOD_DH_L1_x6________________,                      ________________COLEMAK_MOD_DH_R1_x6________________,
+    ________________COLEMAK_MOD_DH_L2_x6________________,                      ________________COLEMAK_MOD_DH_R2_x6________________,
+    ________________COLEMAK_MOD_DH_L3_x6________________,                      ________________COLEMAK_MOD_DH_R3_x6________________,
+                                        ______THUMB_LEFT_x3______,     ______THUMB_RIGHT_x3_____
   ),
 
-  [_DWN] = LAYOUT_split_3x6_3(
-  //|-----------------------------------------------------|                    |-----------------------------------------------------|
-      _______,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                         KC_6,    KC_7,    KC_8,    KC_9,    KC_0, _______,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      _______,   A_GRV,   E_GRV,   I_GRV,   O_GRV,   U_GRV,                      XXXXXXX, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP, XXXXXXX,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      _______,   A_UML,   E_ACT,   I_CIR,   O_UML,   U_UML,                      XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_PGDN, _______,
-  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
-                                          KC_LGUI, _______, _______,    _______,MO(_CFG), _______
-                                      //|--------------------------|  |--------------------------|
+  [_DWN] = LAYOUT_wrapper(
+    _______, ______________NUMBER_LEFT_x5_______________,                      ______________NUMBER_RIGHT_x5______________, _______,
+    _______, ______________UNICODE_L2_x5________________,                      ________________NAV_R2_x5__________________, XXXXXXX,
+    _______, ______________UNICODE_L3_x5________________,                      ________________NAV_R3_x5__________________, _______,
+                                        KC_LGUI, _______, _______,     _______,MO(_CFG), _______
   ),
 
-  [_UP] = LAYOUT_split_3x6_3(
-  //|-----------------------------------------------------|                    |-----------------------------------------------------|
-      _______, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                      KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      _______, KC_LEFT, KC_DOWN,  KC_UP, KC_RIGHT, XXXXXXX,                      KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,  KC_GRV,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
-  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
-                                          _______,MO(_CFG), _______,   _______, _______, _______
-                                      //|--------------------------|  |--------------------------|
+  [_UP] = LAYOUT_wrapper(
+    ___________________SYMBOL_LEFT_x6___________________,                      ___________________SYMBOL_RIGHT_x6__________________,
+    _______, ____________NAV_VIM_x4____________, XXXXXXX,                      ____________________SYMBOL_R2_x6____________________,
+    _______, _________________NONE_5x___________________,                      ____________________SYMBOL_R3_x6____________________,
+                                        _______,MO(_CFG), _______,    _______, _______, _______
   ),
 
-  [_CONFIG] = LAYOUT_split_3x6_3(
-  //|-----------------------------------------------------|                    |-----------------------------------------------------|
-      QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                      UC_NEXT,   AS_UP,   NK_ON, XXXXXXX, XXXXXXX,DF(_QWY),
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI,                      XXXXXXX, AS_TOGG, NK_TOGG, XXXXXXX, XXXXXXX, XXXXXXX,
-  //|--------+--------+--------+--------+--------+--------|                    |--------+--------+--------+--------+--------+--------|
-      XXXXXXX,RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD,                      UC_PREV, AS_DOWN,  NK_OFF, XXXXXXX, XXXXXXX,DF(_CMK),
-  //|--------+--------+--------+--------+--------+--------+--------|  |--------+--------+--------+--------+--------+--------+--------|
-                                          _______, _______, _______,   _______, _______, _______
-                                      //|--------------------------|  |--------------------------|
+  [_CONFIG] = LAYOUT_wrapper(
+    QK_BOOT, _________________NONE_5x___________________,                      _______________CONFIG_R1_x5________________,DF(_QWY),
+    RGB_TOG, ________________RGB_L2_x5__________________,                      _______________CONFIG_R2_x5________________, XXXXXXX,
+    XXXXXXX, ________________RGB_L3_x5__________________,                      _______________CONFIG_R3_x5________________,DF(_CMK),
+                                        _______, _______, _______,   _______, _______, _______
   )
 };
+// clang-format on

+ 3 - 3
keyboards/crkbd/keymaps/rmeli/rules.mk

@@ -2,11 +2,11 @@ OLED_ENABLE = yes
 OLED_DRIVER = SSD1306
 
 TAP_DANCE_ENABLE = yes
-AUTO_SHIFT_ENABLE = yes
+AUTO_SHIFT_ENABLE = no // disable auto-shift with home row mods
 
 UNICODEMAP_ENABLE = yes
+NKRO_ENABLE = yes
+MAGIC_ENABLE = yes
 
 RGBLIGHT_ENABLE = no
 RGB_MATRIX_ENABLE = yes
-
-NKRO_ENABLE = yes

+ 2 - 0
keyboards/dztech/dz60rgb_ansi/v1/rules.mk

@@ -5,6 +5,8 @@ BOARD = QMK_PROTON_C
 # Bootloader selection
 BOOTLOADER = stm32-dfu
 
+LAYOUTS = 60_ansi
+
 # Build Options
 #   change yes to no to disable
 #

+ 2 - 0
keyboards/dztech/dz60rgb_ansi/v2/rules.mk

@@ -4,6 +4,8 @@ MCU = atmega32u4
 # Bootloader selection
 BOOTLOADER = atmel-dfu
 
+LAYOUTS = 60_ansi
+
 # Build Options
 #   change yes to no to disable
 #

+ 2 - 0
keyboards/dztech/dz60rgb_ansi/v2_1/rules.mk

@@ -5,6 +5,8 @@ MCU = atmega32u4
 BOOTLOADER = lufa-ms
 BOOTLOADER_SIZE = 6144
 
+LAYOUTS = 60_ansi
+
 # Build Options
 #   change yes to no to disable
 #

+ 2 - 32
keyboards/ergodox_ez/keymaps/ericgebhart/keymap.c

@@ -1,5 +1,5 @@
 /*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 
   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
@@ -14,35 +14,5 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include "keymap_bepo.h"
-#include "ericgebhart.h"
-#include "layouts.h"
 
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-    // Qwerty Base layers
-    [_DVORAK]  = Dox_base(___NUMS___, ___DVORAK___),
-    [_QWERTY]  = Dox_base(___NUMS___, ___QWERTY___),
-    [_COLEMAK] = Dox_base(___NUMS___, ___COLEMAK_DH___),
-    [_BEAKL]   = Dox_base(___NUMS___, ___BEAKL15___),
-    // Bepo Base layers
-    [_DVORAK_BP] = Dox_bepo_base(___NUMS_BP___,    ___DVORAK_FR___),
-    [_BEAKL_BP]  = Dox_bepo_base(___BKLNUMS_BP___, ___BEAKL15_FR___),
-    [_BEPO]      = Dox_bepo_base6(___BEPO6___),
-
-
-    // transient layers.
-    // Switch to using a transient layer macro
-    [_SYMB]    = Dox_transient(___12_FUNC___, ___SYMB_BEAKLA_3x12___),
-    [_SYMB_BP] = Dox_transient(___12_FUNC___, ___SYMB_BEAKLA_BP_3x12___),
-
-    [_TOPROWS]    = Dox_transient(___12___, ___TOPROWS_3x12___),
-    [_TOPROWS_BP] = Dox_transient(___12___, ___TOPROWS_BP_3x12___),
-
-    [_KEYPAD]    = Dox_transient(___KEYPAD_BKL_FUNC_4x12___),
-    [_KEYPAD_BP] = Dox_transient(___KEYPAD_BKL_FUNC_BP_4x12___),
-
-    [_NAV]    = Dox_transient(___12___, ___NAV_3x12___),
-    [_LAYERS] = Dox_transient(___12___, ___LAYERS_3x12___),
-    [_RGB]    = Dox_transient(___12___, ___RGB_3x12___),
-};
+// See: users/ericgebhart.

+ 0 - 139
keyboards/ergodox_ez/keymaps/ericgebhart/layouts.h

@@ -1,139 +0,0 @@
-/*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
-
-  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 <http://www.gnu.org/licenses/>.
-*/
-
-/********************************************************************/
-/* Ergodox EZ                                                       */
-/********************************************************************/
-// This one is is set up to pass in the number row.
-// Beakl and bepo both change the number row.
-// Left, middle, right, bottom, and thumbs all stay the same.
-#define Base_dox(                                                       \
-                 K01, K02, K03, K04, K05,                               \
-                 K06, K07, K08, K09, K0A,                               \
-                 K11, K12, K13, K14, K15,                               \
-                 K16, K17, K18, K19, K1A,                               \
-                 K21, K22, K23, K24, K25,                               \
-                 K26, K27, K28, K29, K2A,                               \
-                 K31, K32, K33, K34, K35,                               \
-                 K36, K37, K38, K39, K3A                                \
-                                                                        ) \
-  LVARG_edox(                                                           \
-             ROW0_LEFT(K01, K02, K03, K04, K05),                        \
-             ___2_MIDDLE_1___,                                          \
-             ROW0_RIGHT(K06, K07, K08, K09, K0A),                       \
-                                                                        \
-             ROW1_LEFT(K11, K12, K13, K14, K15),                        \
-             ___2_MIDDLE_2___,                                          \
-             ROW1_RIGHT(K16, K17, K18, K19, K1A),                       \
-                                                                        \
-             ROW2_LEFT(K21, K22, K23, K24, K25),                        \
-             ROW2_RIGHT(K26, K27, K28, K29, K2A),                       \
-                                                                        \
-             ROW3_LEFT(K31, K32, K33, K34, K35),                        \
-             ___2_MIDDLE_3___,                                          \
-             ROW3_RIGHT(K36, K37, K38, K39, K3A),                       \
-             ___5_BOTTOM_LEFT___,   ___5_BOTTOM_RIGHT___,               \
-             ___12_DOX_ALL_THUMBS___                                    \
-                                                                        )
-
-#define Base_dox_bepo(                                                  \
-                      K01, K02, K03, K04, K05,                          \
-                      K06, K07, K08, K09, K0A,                          \
-                      K11, K12, K13, K14, K15,                          \
-                      K16, K17, K18, K19, K1A,                          \
-                      K21, K22, K23, K24, K25,                          \
-                      K26, K27, K28, K29, K2A,                          \
-                      K31, K32, K33, K34, K35,                          \
-                      K36, K37, K38, K39, K3A                           \
-                                                                        ) \
-  LVARG_edox(                                                           \
-             ROW0_LEFT(K01, K02, K03, K04, K05),                        \
-             ___2_MIDDLE_1___,                                          \
-             ROW0_RIGHT(K06, K07, K08, K09, K0A),                       \
-                                                                        \
-             ROW1_LEFT(K11, K12, K13, K14, K15),                        \
-             ___2_MIDDLE_2___,                                          \
-             ROW1_RIGHT(K16, K17, K18, K19, K1A),                       \
-                                                                        \
-             ROW2_LEFT(K21, K22, K23, K24, K25),                        \
-             ROW2_RIGHT(K26, K27, K28, K29, K2A),                       \
-                                                                        \
-             ROW3_LEFT(K31, K32, K33, K34, K35),                        \
-             ___2_MIDDLE_3___,                                          \
-             ROW3_RIGHT(K36, K37, K38, K39, K3A),                       \
-             ___5_BOTTOM_LEFT___, ___5_BOTTOM_RIGHT___,                 \
-             ___12_DOX_ALL_THUMBS_BP___                                 \
-                                                                        )
-
-
-#define Base_dox_bepo6(                                                 \
-                       K01, K02, K03, K04, K05, K06,                    \
-                       K07, K08, K09, K0A, K0B, K0C,                    \
-                       K11, K12, K13, K14, K15, K16,                    \
-                       K17, K18, K19, K1A, K1B, K1C,                    \
-                       K21, K22, K23, K24, K25, K26,                    \
-                       K27, K28, K29, K2A, K2B, K2C                     \
-                                                                        ) \
-  LVARG_edox(                                                           \
-             ___6SYMBOL_BEPO_L___,                                      \
-             ___2_MIDDLE_T_BP___,                                       \
-             ___6SYMBOL_BEPO_R___,                                      \
-             ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06),               \
-             ___2_MIDDLE_2_BP___,                                       \
-             ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C),              \
-                                                                        \
-             ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16),               \
-             ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C),              \
-                                                                        \
-             ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26),               \
-             ___2_MIDDLE_3_BP___,                                       \
-             ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C),              \
-                                                                        \
-             ___5_BOTTOM_LEFT_BP___, ___5_BOTTOM_RIGHT_BP___,           \
-             ___12_DOX_ALL_THUMBS_BP___                                 \
-                                                                        )
-
-#define Transient_dox6(                                                 \
-                       K01, K02, K03, K04, K05, K06,                    \
-                       K07, K08, K09, K0A, K0B, K0C,                    \
-                       K11, K12, K13, K14, K15, K16,                    \
-                       K17, K18, K19, K1A, K1B, K1C,                    \
-                       K21, K22, K23, K24, K25, K26,                    \
-                       K27, K28, K29, K2A, K2B, K2C,                    \
-                       K31, K32, K33, K34, K35, K36,                    \
-                       K37, K38, K39, K3A, K3B, K3C                     \
-                                                                        ) \
-  LVARG_edox(                                                           \
-             K01, K02, K03, K04, K05, K06,                              \
-             ___2___,                                                   \
-             K07, K08, K09, K0A, K0B, K0C,                              \
-             K11, K12, K13, K14, K15, K16,                              \
-             ___2___,                                                   \
-             K17, K18, K19, K1A, K1B, K1C,                              \
-             K21, K22, K23, K24, K25, K26,                              \
-             K27, K28, K29, K2A, K2B, K2C,                              \
-             K31, K32, K33, K34, K35, K36,                              \
-             ___2___,                                                   \
-             K37, K38, K39, K3A, K3B, K3C,                              \
-             ___5___, ___5___,                                          \
-             ___12___                                                   \
-                                                                        )
-
-#define Dox_base(...)        Base_dox(__VA_ARGS__)
-#define Dox_bepo_base(...)   Base_dox_bepo(__VA_ARGS__)
-#define Dox_bepo_base6(...)  Base_dox_bepo6(__VA_ARGS__)
-#define Dox_transient(...)   Transient_dox6(__VA_ARGS__)

+ 33 - 0
keyboards/handwired/alcor_dactyl/config.h

@@ -0,0 +1,33 @@
+// Copyright 2022 Ethan (@rocketstrong)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
+#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
+#define SERIAL_USART_FULL_DUPLEX
+#define SERIAL_USART_TX_PIN GP10
+#define SERIAL_USART_RX_PIN GP9
+#define RGB_DI_PIN GP16
+#define DRIVER_LED_TOTAL 2
+#define RGB_MATRIX_SPLIT { 1, 1 }
+#define RGBLED_NUM 1
+#define EE_HANDS

+ 130 - 0
keyboards/handwired/alcor_dactyl/info.json

@@ -0,0 +1,130 @@
+{
+    "manufacturer": "Ethan",
+    "keyboard_name": "alcor_dactyl",
+    "maintainer": "rocketstrong",
+    "bootloader": "rp2040",
+    "processor": "RP2040",
+    "url": "",
+    "usb": {
+        "device_version": "1.0.0",
+        "pid": "0x0000",
+        "vid": "0xFEED"
+    },
+    "features": {
+        "command": false,
+        "console": false,
+        "extrakey": true,
+        "mousekey": true,
+        "nkro": true,
+        "rgb_matrix": true
+    },
+    "split": {
+        "enabled": true
+    },
+    "diode_direction": "COL2ROW",
+    "matrix_pins": {
+        "cols": ["GP29", "GP28", "GP27", "GP26", "GP15", "GP14", "GP13"],
+        "rows": ["GP5", "GP4", "GP3", "GP2", "GP1", "GP0"]
+    },
+    "rgb_matrix": {
+        "driver": "WS2812",
+        "layout": [
+            {"x":0, "y":0.375},
+            {"x":16.5, "y":0.38}
+        ]
+    },
+    "layouts": {
+        "LAYOUT":{
+            "layout":[
+                {"matrix":[0,0], "x":0, "y":0.375, "w":1.5},
+                {"matrix":[0,1], "x":1.5, "y":0.38},
+                {"matrix":[0,2], "x":2.5, "y":0.125},
+                {"matrix":[0,3], "x":3.5, "y":0.25},
+                {"matrix":[0,4], "x":4.5, "y":0.25},
+                {"matrix":[0,5], "x":5.5, "y":0.25},
+                {"matrix":[0,6], "x":6.5, "y":0.25},
+
+                {"matrix":[6,6], "x":10.5, "y":0.25},
+                {"matrix":[6,5], "x":11.5, "y":0.25},
+                {"matrix":[6,4], "x":12.5, "y":0.25},
+                {"matrix":[6,3], "x":13.5, "y":0.25},
+                {"matrix":[6,2], "x":14.5, "y":0.13},
+                {"matrix":[6,1], "x":15.5, "y":0.38},
+                {"matrix":[6,0], "x":16.5, "y":0.38, "w":1.5},
+
+                {"matrix":[1,0], "x":0, "y":1.375, "w":1.5},
+                {"matrix":[1,1], "x":1.5, "y":1.375},
+                {"matrix":[1,2], "x":2.5, "y":1.125},
+                {"matrix":[1,3], "x":3.5, "y":1.25},
+                {"matrix":[1,4], "x":4.5, "y":1.25},
+                {"matrix":[1,5], "x":5.5, "y":1.25},
+                {"matrix":[1,6], "x":6.5, "y":1.25},
+
+                {"matrix":[7,6], "x":10.5, "y":1.25},
+                {"matrix":[7,5], "x":11.5, "y":1.25},
+                {"matrix":[7,4], "x":12.5, "y":1.25},
+                {"matrix":[7,3], "x":13.5, "y":1.25},
+                {"matrix":[7,2], "x":14.5, "y":1.13},
+                {"matrix":[7,1], "x":15.5, "y":1.38},
+                {"matrix":[7,0], "x":16.5, "y":1.38, "w":1.5},
+
+                {"matrix":[2,0], "x":0, "y":2.375, "w":1.5},
+                {"matrix":[2,1], "x":1.5, "y":2.375},
+                {"matrix":[2,2], "x":2.5, "y":2.125},
+                {"matrix":[2,3], "x":3.5, "y":2.25},
+                {"matrix":[2,4], "x":4.5, "y":2.25},
+                {"matrix":[2,5], "x":5.5, "y":2.25},
+                {"matrix":[2,6], "x":6.5, "y":2.25},
+
+                {"matrix":[8,6], "x":10.5, "y":2.25},
+                {"matrix":[8,5], "x":11.5, "y":2.25},
+                {"matrix":[8,4], "x":12.5, "y":2.25},
+                {"matrix":[8,3], "x":13.5, "y":2.25},
+                {"matrix":[8,2], "x":14.5, "y":2.13},
+                {"matrix":[8,1], "x":15.5, "y":2.38},
+                {"matrix":[8,0], "x":16.5, "y":2.38, "w":1.5},
+
+                {"matrix":[3,0], "x":0, "y":3.375, "w":1.5},
+                {"matrix":[3,1], "x":1.5, "y":3.375},
+                {"matrix":[3,2], "x":2.5, "y":3.125},
+                {"matrix":[3,3], "x":3.5, "y":3.25},
+                {"matrix":[3,4], "x":4.5, "y":3.25},
+                {"matrix":[3,5], "x":5.5, "y":3.25},
+
+                {"matrix":[9,5], "x":11.5, "y":3.25},
+                {"matrix":[9,4], "x":12.5, "y":3.25},
+                {"matrix":[9,3], "x":13.5, "y":3.25},
+                {"matrix":[9,2], "x":14.5, "y":3.13},
+                {"matrix":[9,1], "x":15.5, "y":3.38},
+                {"matrix":[9,0], "x":16.5, "y":3.38, "w":1.5},
+
+                {"matrix":[4,0], "x":0.5, "y":4.375},
+                {"matrix":[4,1], "x":1.5, "y":4.375},
+                {"matrix":[4,2], "x":2.5, "y":4.125},
+                {"matrix":[4,3], "x":3.5, "y":4.25},
+
+                {"matrix":[10,3], "x":13.5, "y":4.25},
+                {"matrix":[10,2], "x":14.5, "y":4.13},
+                {"matrix":[10,1], "x":15.5, "y":4.38},
+                {"matrix":[10,0], "x":16.5, "y":4.38},
+
+                {"matrix":[4,4], "x":5, "y":4.5, "h":2},
+                {"matrix":[4,5], "x":6.25, "y":4.5, "h":1.5},
+                {"matrix":[10,5], "x":10.75, "y":4.5, "h":1.5},
+                {"matrix":[10,4], "x":12, "y":4.5, "h":2},
+
+                {"matrix":[5,4], "x":6.25, "y":6.25},
+                {"matrix":[5,5], "x":7.5, "y":6.25},
+
+                {"matrix":[11,5], "x":9.5, "y":6.25},
+                {"matrix":[11,4], "x":10.75, "y":6.25},
+
+                {"matrix":[5,2], "x":6.25, "y":7.25},
+                {"matrix":[5,3], "x":7.25, "y":7.25},
+
+                {"matrix":[11,3], "x":9.75, "y":7.25},
+                {"matrix":[11,2], "x":10.75, "y":7.25}
+            ]
+        }
+    }
+}

+ 100 - 0
keyboards/handwired/alcor_dactyl/keymaps/colemak_dh/keymap.c

@@ -0,0 +1,100 @@
+// Copyright 2022 Ethan (@rocketstrong)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+/*
+ *          ┌──┐┌──┐┌──┐┌──┐┌──┐            ┌──┐┌──┐┌──┐┌──┐┌──┐
+ *┌────┐┌──┐│  ││  ││  ││  ││  │            │  ││  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘└──┘            └──┘└──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐┌──┐┌──┐┌──┐            ┌──┐┌──┐┌──┐┌──┐┌──┐└──┘└────┘
+ *┌────┐┌──┐│  ││  ││  ││  ││  │            │  ││  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘└──┘            └──┘└──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐┌──┐┌──┐┌──┐            ┌──┐┌──┐┌──┐┌──┐┌──┐└──┘└────┘
+ *┌────┐┌──┐│  ││  ││  ││  ││  │            │  ││  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘└──┘            └──┘└──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐┌──┐┌──┐                    ┌──┐┌──┐┌──┐┌──┐└──┘└────┘
+ *┌────┐┌──┐│  ││  ││  ││  │                    │  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘                    └──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐                                    ┌──┐┌──┐└──┘└────┘
+ *  ┌──┐┌──┐│  ││  │  ┌──┐ ┌──┐              ┌──┐ ┌──┐  │  ││  │┌──┐┌──┐
+ *  │  ││  │└──┘└──┘  │  │ │  │              │  │ │  │  └──┘└──┘│  ││  │
+ *  └──┘└──┘          │  │ │  │              │  │ │  │          └──┘└──┘
+ *                    │  │ └──┘              └──┘ │  │
+ *                    └──┘ ┌──┐ ┌──┐    ┌──┐ ┌──┐ └──┘
+ *                         │  │ │  │    │  │ │  │
+ *                         └──┘ └──┘    └──┘ └──┘
+ *                         ┌──┐┌──┐      ┌──┐┌──┐
+ *                         │  ││  │      │  ││  │
+ *                         └──┘└──┘      └──┘└──┘
+ */
+
+enum Colemaklayers {
+  _ARSTG,
+  _NUMPAD,
+  _SYMBOLS
+};
+
+enum custom_keycodes {
+    AD_DDS = SAFE_RANGE,
+    AD_SCOPE
+};
+
+#define TT_NUM TT(_NUMPAD)
+#define TT_SYM TT(_SYMBOLS)
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case AD_DDS:
+            if (!record->event.pressed) {
+                // when keycode AD_DDS is pressed
+                SEND_STRING("../");
+            } else {
+                // when keycode AD_DDS is released
+            }
+            break;
+        case AD_SCOPE:
+            if (!record->event.pressed) {
+                // when keycode AD_DDS is pressed
+                SEND_STRING("::");
+            } else {
+                // when keycode AD_DDS is released
+            }
+            break;
+    }
+    return true;
+}
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_ARSTG] = LAYOUT(
+        KC_GRV  , KC_1    , KC_2    , KC_3    , KC_4    , KC_5    , KC_MINS  ,      KC_EQL  , KC_6    , KC_7    , KC_8    , KC_9    , KC_0    , KC_ESC  ,
+        KC_TAB  , KC_Q    , KC_W    , KC_F    , KC_P    , KC_B    , KC_LBRC ,       KC_RBRC , KC_J    , KC_L    , KC_U    , KC_Y    , KC_SCLN , KC_BSLS ,
+        KC_ESC  , KC_A    , KC_R    , KC_S    , KC_T    , KC_G    , KC_PSCR ,       KC_PAUS , KC_M    , KC_N    , KC_E    , KC_I    , KC_O    , KC_QUOT ,
+        KC_LSFT , KC_Z    , KC_X    , KC_C    , KC_D    , KC_V    ,                           KC_K    , KC_H    , KC_COMM , KC_DOT  , KC_SLSH , KC_RSFT ,
+        KC_LCTL , KC_LGUI , KC_LALT , KC_DEL  ,                                                                   KC_LEFT , KC_UP   , KC_DOWN , KC_RIGHT,
+                                                        KC_SPC  , KC_BSPC ,           KC_TAB  , KC_ENT  ,
+                                                          TT_NUM  , KC_LSFT ,       KC_RSFT , TT_SYM  ,
+                                                          KC_LCTL , KC_LALT ,       KC_RALT , KC_RCTL
+    ),
+    [_NUMPAD] = LAYOUT(
+        KC_NO   , 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_NO   ,
+        KC_TRNS , KC_PGUP , KC_HOME , KC_UP   , KC_END  , KC_NO   , KC_NO   ,       KC_NO   , KC_NUM  , KC_P7   , KC_P8   , KC_P9   , KC_PMNS , KC_NO   ,
+        KC_TRNS , KC_PGDN , KC_LEFT , KC_DOWN , KC_RIGHT, KC_NO   , KC_TRNS ,       KC_TRNS , KC_PSLS , KC_P4   , KC_P5   , KC_P6   , KC_PPLS , KC_NO   ,
+        KC_TRNS , KC_NO   , KC_NO   , KC_NO   , KC_NO   , KC_NO   ,                           KC_PAST , KC_P1   , KC_P2   , KC_P3   , KC_PEQL , KC_NO   ,
+        KC_TRNS , KC_NO   , KC_NO   , KC_NO   ,                                                                   KC_P0   , KC_PDOT , KC_PCMM , KC_NO   ,
+                                                        KC_TRNS , KC_TRNS ,           KC_TRNS , KC_PENT ,
+                                                          KC_TRNS , KC_TRNS ,       KC_TRNS , KC_TRNS ,
+                                                          KC_TRNS , QK_BOOT ,       KC_TRNS , KC_TRNS
+    ),
+    [_SYMBOLS] = LAYOUT(
+        KC_NO   , 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_NO   ,
+        KC_TRNS , KC_QUOT , KC_LT   , KC_GT   , KC_DQT  , KC_DOT  , KC_NO   ,       KC_NO   , KC_AMPR , AD_SCOPE, KC_LBRC , KC_RBRC , KC_PERC , KC_NO   ,
+        KC_TRNS , KC_EXLM , KC_MINS , KC_PLUS , KC_EQL  , KC_HASH , KC_NO   ,       KC_NO   , KC_PIPE , KC_COLN , KC_LPRN , KC_RPRN , KC_QUES , KC_NO   ,
+        KC_TRNS , KC_CIRC , KC_SLSH , KC_ASTR , KC_BSLS , AD_DDS  ,                           KC_TILD , KC_DLR  , KC_LCBR , KC_RCBR , KC_AT   , KC_NO   ,
+        KC_TRNS , KC_NO   , KC_NO   , KC_NO   ,                                                                   KC_NO   , KC_NO   , KC_NO   , KC_NO   ,
+                                                        KC_TRNS , KC_TRNS ,           KC_TRNS , KC_PENT ,
+                                                          KC_TRNS , KC_TRNS ,       KC_TRNS , KC_TRNS ,
+                                                          KC_TRNS , KC_TRNS ,       QK_BOOT , KC_TRNS
+    )
+};

+ 43 - 0
keyboards/handwired/alcor_dactyl/keymaps/default/keymap.c

@@ -0,0 +1,43 @@
+// Copyright 2022 Ethan (@rocketstrong)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+/*
+ *          ┌──┐┌──┐┌──┐┌──┐┌──┐            ┌──┐┌──┐┌──┐┌──┐┌──┐
+ *┌────┐┌──┐│  ││  ││  ││  ││  │            │  ││  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘└──┘            └──┘└──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐┌──┐┌──┐┌──┐            ┌──┐┌──┐┌──┐┌──┐┌──┐└──┘└────┘
+ *┌────┐┌──┐│  ││  ││  ││  ││  │            │  ││  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘└──┘            └──┘└──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐┌──┐┌──┐┌──┐            ┌──┐┌──┐┌──┐┌──┐┌──┐└──┘└────┘
+ *┌────┐┌──┐│  ││  ││  ││  ││  │            │  ││  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘└──┘            └──┘└──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐┌──┐┌──┐                    ┌──┐┌──┐┌──┐┌──┐└──┘└────┘
+ *┌────┐┌──┐│  ││  ││  ││  │                    │  ││  ││  ││  │┌──┐┌────┐
+ *│    ││  │└──┘└──┘└──┘└──┘                    └──┘└──┘└──┘└──┘│  ││    │
+ *└────┘└──┘┌──┐┌──┐                                    ┌──┐┌──┐└──┘└────┘
+ *  ┌──┐┌──┐│  ││  │  ┌──┐ ┌──┐              ┌──┐ ┌──┐  │  ││  │┌──┐┌──┐
+ *  │  ││  │└──┘└──┘  │  │ │  │              │  │ │  │  └──┘└──┘│  ││  │
+ *  └──┘└──┘          │  │ │  │              │  │ │  │          └──┘└──┘
+ *                    │  │ └──┘              └──┘ │  │
+ *                    └──┘ ┌──┐ ┌──┐    ┌──┐ ┌──┐ └──┘
+ *                         │  │ │  │    │  │ │  │
+ *                         └──┘ └──┘    └──┘ └──┘
+ *                         ┌──┐┌──┐      ┌──┐┌──┐
+ *                         │  ││  │      │  ││  │
+ *                         └──┘└──┘      └──┘└──┘
+ */
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT(
+        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,
+        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,
+        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,
+        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, 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,
+                                            KC_NO, KC_NO,    KC_NO, KC_NO
+    )
+};

+ 28 - 0
keyboards/handwired/alcor_dactyl/readme.md

@@ -0,0 +1,28 @@
+# alcor_dactyl
+
+![alcor_dactyl](https://i.imgur.com/F0E1JCQh.jpg)
+
+This is a handwired dactyl manufor utalising an RP2040-zero
+
+* Keyboard Maintainer: [Ethan](https://github.com/rocketstrong)
+* Hardware Supported: Waveshare RP2040-Zero
+* Hardware Availability: https://www.waveshare.com/wiki/RP2040-Zero
+* 3D Print File Source: https://dactyl.mbugert.de/manuform
+
+Make example for this keyboard (after setting up your build environment):
+
+    make handwired/alcor_dactyl:default
+
+Flashing example for this keyboard:
+
+    make handwired/alcor_dactyl:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

+ 2 - 0
keyboards/handwired/alcor_dactyl/rules.mk

@@ -0,0 +1,2 @@
+SERIAL_DRIVER = vendor
+WS2812_DRIVER = vendor

+ 18 - 0
keyboards/handwired/dactyl_manuform/5x6_6/5x6_6.c

@@ -0,0 +1,18 @@
+/*
+Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#include "5x6_6.h"

+ 47 - 0
keyboards/handwired/dactyl_manuform/5x6_6/5x6_6.h

@@ -0,0 +1,47 @@
+/*
+Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#include "quantum.h"
+#pragma once
+
+#define XXX KC_NO
+
+#define LAYOUT_split_5x6_6( \
+    L00, L01, L02, L03, L04, L05,                          R00, R01, R02, R03, R04, R05, \
+    L10, L11, L12, L13, L14, L15,                          R10, R11, R12, R13, R14, R15, \
+    L20, L21, L22, L23, L24, L25,                          R20, R21, R22, R23, R24, R25, \
+    L30, L31, L32, L33, L34, L35,                          R30, R31, R32, R33, R34, R35, \
+              L42, L43, L44, L45,                          R40, R41, R42, R43, \
+                        L54, L55,                          R50, R51, \
+                        L64, L65,                          R60, R61 \
+) { \
+    { L00, L01, L02, L03, L04, L05 }, \
+    { L10, L11, L12, L13, L14, L15 }, \
+    { L20, L21, L22, L23, L24, L25 }, \
+    { L30, L31, L32, L33, L34, L35 }, \
+    { XXX, XXX, L42, L43, L44, L45 }, \
+    { XXX, XXX, XXX, XXX, L54, L55 }, \
+    { XXX, XXX, XXX, XXX, L64, L65 }, \
+\
+    { R00, R01, R02, R03, R04, R05 }, \
+    { R10, R11, R12, R13, R14, R15 }, \
+    { R20, R21, R22, R23, R24, R25 }, \
+    { R30, R31, R32, R33, R34, R35 }, \
+    { R40, R41, R42, R43, XXX, XXX }, \
+    { R50, R51, XXX, XXX, XXX, XXX }, \
+    { R60, R61, XXX, XXX, XXX, XXX } \
+}

+ 34 - 0
keyboards/handwired/dactyl_manuform/5x6_6/config.h

@@ -0,0 +1,34 @@
+/*
+Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_COLS 6
+#define MATRIX_ROWS 14
+
+#undef SOFT_SERIAL_PIN
+#define SOFT_SERIAL_PIN D3
+
+// wiring of each half
+#define MATRIX_COL_PINS { D4, C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION COL2ROW

+ 93 - 0
keyboards/handwired/dactyl_manuform/5x6_6/info.json

@@ -0,0 +1,93 @@
+{
+    "keyboard_name": "Dactyl Manuform 5x6+6",
+    "url": "https://github.com/fgoodwin/dactyl-manuform-5x6_6/tree/main/5x6_6",
+    "maintainer": "fgoodwin",
+    "usb": {
+        "vid": "0x444D",
+        "pid": "0x3536",
+        "device_version": "0.0.3"
+    },
+    "layouts": {
+        "LAYOUT_split_5x6_6": {
+            "layout": [
+                {"x": 0, "y": 0},
+                {"x": 1, "y": 0},
+                {"x": 2, "y": 0},
+                {"x": 3, "y": 0},
+                {"x": 4, "y": 0},
+                {"x": 5, "y": 0},
+
+                {"x": 11, "y": 0},
+                {"x": 12, "y": 0},
+                {"x": 13, "y": 0},
+                {"x": 14, "y": 0},
+                {"x": 15, "y": 0},
+                {"x": 16, "y": 0},
+
+                {"x": 0, "y": 1},
+                {"x": 1, "y": 1},
+                {"x": 2, "y": 1},
+                {"x": 3, "y": 1},
+                {"x": 4, "y": 1},
+                {"x": 5, "y": 1},
+
+                {"x": 11, "y": 1},
+                {"x": 12, "y": 1},
+                {"x": 13, "y": 1},
+                {"x": 14, "y": 1},
+                {"x": 15, "y": 1},
+                {"x": 16, "y": 1},
+
+                {"x": 0, "y": 2},
+                {"x": 1, "y": 2},
+                {"x": 2, "y": 2},
+                {"x": 3, "y": 2},
+                {"x": 4, "y": 2},
+                {"x": 5, "y": 2},
+
+                {"x": 11, "y": 2},
+                {"x": 12, "y": 2},
+                {"x": 13, "y": 2},
+                {"x": 14, "y": 2},
+                {"x": 15, "y": 2},
+                {"x": 16, "y": 2},
+
+                {"x": 0, "y": 3},
+                {"x": 1, "y": 3},
+                {"x": 2, "y": 3},
+                {"x": 3, "y": 3},
+                {"x": 4, "y": 3},
+                {"x": 5, "y": 3},
+
+                {"x": 11, "y": 3},
+                {"x": 12, "y": 3},
+                {"x": 13, "y": 3},
+                {"x": 14, "y": 3},
+                {"x": 15, "y": 3},
+                {"x": 16, "y": 3},
+
+                {"x": 2, "y": 4},
+                {"x": 3, "y": 4},
+
+                {"x": 5, "y": 4},
+                {"x": 6, "y": 4},
+                {"x": 7, "y": 4},
+
+                {"x": 9, "y": 4},
+                {"x": 10, "y": 4},
+                {"x": 11, "y": 4},
+
+                {"x": 13, "y": 4},
+                {"x": 14, "y": 4},
+
+                {"x": 5, "y": 5},
+                {"x": 6, "y": 5},
+                {"x": 7, "y": 5},
+
+                {"x": 5, "y": 5},
+                {"x": 9, "y": 5},
+                {"x": 10, "y": 5}
+            ]
+        }
+    }
+}

+ 39 - 0
keyboards/handwired/dactyl_manuform/5x6_6/keymaps/default/keymap.c

@@ -0,0 +1,39 @@
+/*
+Copyright 2022 fgoodwin <fgoodwin@north-tech.net>
+
+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 <http://www.gnu.org/licenses/>.
+*/
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+    [0] = LAYOUT_split_5x6_6(
+        KC_ESC,    KC_1,      KC_2,      KC_3,     KC_4,       KC_5,         KC_6,      KC_7,    KC_8,     KC_9,     KC_0,    KC_BSLS,
+        KC_GRV,    KC_Q,      KC_W,      KC_E,     KC_R,       KC_T,         KC_Y,      KC_U,    KC_I,     KC_O,     KC_P,    KC_EQL,
+        KC_TAB,    KC_A,      KC_S,      KC_D,     KC_F,       KC_G,         KC_H,      KC_J,    KC_K,     KC_L,     KC_SCLN, KC_QUOT,
+        KC_LSFT,     KC_Z,      KC_X,      KC_C,     KC_V,       KC_B,         KC_N,      KC_M,    KC_COMM,  KC_DOT,   KC_SLSH, KC_MINS,
+                              KC_NO,     KC_LGUI,  KC_LCTL,    KC_SPC,       KC_RSFT,   KC_ENT,  KC_LBRC,     KC_RBRC,
+                                                   MO(1),      LCTL(KC_C),   KC_BSPC,   MO(1),
+                                                   KC_LALT,    LCTL(KC_V),   KC_DEL,    KC_RSFT
+    ),
+    [1] = LAYOUT_split_5x6_6(
+        KC_TRNS,   KC_F1,     KC_F2,     KC_F3,    KC_F4,         KC_F5,     KC_F6,       KC_F7,      KC_F8,       KC_F9,       KC_F10,     KC_F11,
+        KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,  KC_TRNS,       KC_TRNS,   KC_TRNS,     KC_TRNS,    KC_TRNS,     KC_TRNS,     KC_TRNS,    KC_F12,
+        KC_TRNS,   KC_TRNS,   KC_PSCR,   KC_DOWN,  KC_UP,         KC_HOME,   KC_END,      KC_LEFT,    KC_RIGHT,    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_BSLS,    KC_TRNS,
+                   RESET,     KC_TRNS,   KC_TRNS,  KC_TRNS,       KC_TRNS,   KC_TRNS,     KC_TRNS,    KC_TRNS,
+                                         MO(1),    LCTL(KC_C),    KC_TRNS,   MO(1),
+                                         KC_TRNS,  LCTL(KC_V),    KC_TRNS,   KC_TRNS
+    )
+};

+ 22 - 0
keyboards/handwired/dactyl_manuform/5x6_6/readme.md

@@ -0,0 +1,22 @@
+# Dactyl Manuform (5x6) with 6 thumb cluster
+
+The [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) is a split curved keyboard based on the design of [adereth dactyl](https://github.com/adereth/dactyl-keyboard) and thumb cluster design of the [manuform](https://geekhack.org/index.php?topic=46015.0) keyboard, the hardware is similar to the let's split keyboard. All information needed for making one is in the first link.
+
+![Imgur](https://i.imgur.com/MvtMG1vh.png)
+
+* Keyboard Maintainer: fgoodwin
+* Hardware Supported: Pro Micro Micro Micro USB or USB C
+
+Make example for this keyboard (after setting up your build environment):
+
+    make handwired/dactyl_manuform/5x6_6:default
+
+Flashing example for this keyboard:
+
+    make handwired/dactyl_manuform/5x6_6:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+Enter the bootloader in 2 ways:
+**Physical reset button**: Briefly press the reset button on the bottom of the case, or bridge the reset and ground pins momentarily on the pro micro
+**Keycode in layout**: Press the key mapped to `QK_BOOT` (by default hold down `MO(1)` and press the left most key in row 5 on the left hand half of the keyboard)

+ 19 - 0
keyboards/handwired/dactyl_manuform/5x6_6/rules.mk

@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes            # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
+AUDIO_ENABLE = no           # Audio output
+SPLIT_KEYBOARD = yes

+ 2 - 32
keyboards/keebio/viterbi/keymaps/ericgebhart/keymap.c

@@ -1,5 +1,5 @@
 /*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 
   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
@@ -15,34 +15,4 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "keymap_bepo.h"
-#include "ericgebhart.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  // 4x10
-  [_DVORAK]  = BASE_5x14(___NUMS___, ___DVORAK___),
-  [_QWERTY]  = BASE_5x14(___NUMS___, ___QWERTY___),
-  [_COLEMAK] = BASE_5x14(___NUMS___, ___COLEMAK_DH___),
-  [_BEAKL]   = BASE_5x14(___BKLNUMS___, ___BEAKL15___),
-
-  //[_DVORAK_BP] = BASE_5x14_bepo(___DVORAK_FR___),
-  //[_BEAKL_BP]  = BASE_5x14_bepo(___BEAKL15_FR___),
-
-  // 4x12
-  //[_BEPO]      = BASE_5x14_bepo6(___BEPO6_FR___),
-
-  // transient macro takes a 3x12 for args
-  [_SYMB]    = TRANSIENT_5x14(___12___, ___SYMB_BEAKLA_3x12___),
-  //[_SYMB_BP] = TRANSIENT_5x14(___SYMB_BEAKLA_BP_3x12___),
-
-  [_TOPROWS]    = TRANSIENT_5x14(___12___, ___TOPROWS_3x12___),
-  //[_TOPROWS_BP] = TRANSIENT_5x14(___TOPROWS_BP_3x12___),
-
-  [_KEYPAD]    = TRANSIENT_5x14(___12___, ___KP_C_3x12___),
-  //[_KEYPAD_BP] = TRANSIENT_5x14(___KP_C_BP_3x12___),
-
-  // Navigation and control
-  [_NAV]    = TRANSIENT_5x14(___12___, ___NAV_3x12___),
-  [_LAYERS] = TRANSIENT_5x14(___12___, ___LAYERS_3x12___),
-  //[_RGB]  = TRANSIENT_5x14(___12___, ___RGB_3x12___),
-};
+// See: users/ericgebhart.

+ 2 - 37
keyboards/kinesis/keymaps/ericgebhart/keymap.c

@@ -1,5 +1,5 @@
 /*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 
   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
@@ -14,40 +14,5 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include "keymap_bepo.h"
-#include "ericgebhart.h"
 
-#define LAYOUT_PVARG(...)     LAYOUT_pretty(__VA_ARGS__)
-
-#define Kinesis_base(...)        Base_4x6_4_6(__VA_ARGS__)
-#define Kinesis_bepo_base(...)   Base_bepo_4x6_4_6(__VA_ARGS__)
-#define Kinesis_bepo_base6(...)  Base_bepo6_4x6_4_6(__VA_ARGS__)
-#define Kinesis_transient(...)   Transient6_4x6_4_6(__VA_ARGS__)
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-  // Qwerty Base layers
-  [_DVORAK]  = Kinesis_base(___NUMS___, ___DVORAK___),
-  [_QWERTY]  = Kinesis_base(___NUMS___, ___QWERTY___),
-  [_COLEMAK] = Kinesis_base(___NUMS___, ___COLEMAK_DH___),
-  [_BEAKL]   = Kinesis_base(___BKLNUMS___, ___BEAKL15___),
-  // Bepo Base layers
-  [_DVORAK_BP] = Kinesis_bepo_base(___NUMS_BP___, ___DVORAK_FR___),
-  [_BEAKL_BP]  = Kinesis_bepo_base(___BKLNUMS_BP___,   ___BEAKL15_FR___),
-
-  [_BEPO]      = Kinesis_bepo_base6(___BEPO6___),
-
-  // transient layers.
-  // Switch to using a transient layer macro
-  [_SYMB]    = Kinesis_transient(___12_FUNC___, ___SYMB_BEAKLA_3x12___),
-  [_SYMB_BP] = Kinesis_transient(___12_FUNC___, ___SYMB_BEAKLA_BP_3x12___),
-
-  [_TOPROWS]    = Kinesis_transient(___12___, ___TOPROWS_3x12___),
-  [_TOPROWS_BP] = Kinesis_transient(___12___, ___TOPROWS_BP_3x12___),
-
-  [_NAV]    = Kinesis_transient(___12___, ___NAV_3x12___),
-  [_LAYERS] = Kinesis_transient(___12___, ___LAYERS_3x12___),
-  [_ADJUST] = Kinesis_transient(___12___, ___ADJUST_3x12___),
-  //[_RGB]    = Kinesis_transient(___12___, ___RGB_3x12___),
-};
+// See: users/ericgebhart.

+ 1 - 2
keyboards/kinesis/keymaps/ericgebhart/rules.mk

@@ -11,6 +11,5 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 MIDI_ENABLE = no            # MIDI controls
 AUDIO_ENABLE = no           # Audio output
 UNICODE_ENABLE = no         # Unicode
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight. 
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
 SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-

+ 60 - 0
keyboards/laser_ninja/pumpkin_pad/config.h

@@ -0,0 +1,60 @@
+/* Copyright 2022 Joah Nelson (Jels)
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+#ifdef RGB_MATRIX_ENABLE
+#    define RGB_DI_PIN A10
+#    define RGBLED_NUM 28
+#    define DRIVER_LED_TOTAL RGBLED_NUM
+#    define BACKLIGHT_LIMIT_VAL 200
+#    define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#    define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#    define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#    define ENABLE_RGB_MATRIX_BREATHING
+#    define ENABLE_RGB_MATRIX_BAND_SAT
+#    define ENABLE_RGB_MATRIX_BAND_VAL
+#    define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#    define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#    define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#    define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#    define ENABLE_RGB_MATRIX_CYCLE_ALL
+#    define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#    define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#    define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#    define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#    define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#    define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#    define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#    define ENABLE_RGB_MATRIX_DUAL_BEACON
+#    define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#    define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#    define ENABLE_RGB_MATRIX_RAINDROPS
+#    define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#    define ENABLE_RGB_MATRIX_HUE_BREATHING
+#    define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#    define ENABLE_RGB_MATRIX_HUE_WAVE
+#    define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+#    define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#    define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#endif
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE

+ 78 - 0
keyboards/laser_ninja/pumpkin_pad/info.json

@@ -0,0 +1,78 @@
+{
+    "keyboard_name": "Pumpkin Pad",
+    "manufacturer": "Laser Ninja",
+    "url": "",
+    "maintainer": "Jels",
+    "processor": "STM32F072",
+    "bootloader": "stm32-dfu",
+    "debounce": 5,
+    "features": {
+        "bootmagic": true,
+        "command": false,
+        "console": false,
+        "extrakey": false,
+        "mousekey": false,
+        "nkro": false,
+        "rgb_matrix": true
+    },
+    "matrix_pins": {
+        "direct": [
+            ["A9", "B3", "B9", "NO_PIN"],
+            ["A8", "B12", "A2", "A1"],
+            ["B15", "B14", "B13", "NO_PIN"]
+        ]
+    },
+    "usb": {
+        "vid": "0x6C6E",
+        "pid": "0x7070",
+        "device_version": "0.0.1"
+    },
+    "layouts": {
+        "LAYOUT": {
+            "layout": [
+                { "matrix": [0, 0], "x": 0.5, "y": 0 },
+                { "matrix": [0, 1], "x": 1.5, "y": 0 },
+                { "matrix": [0, 2], "x": 2.5, "y": 0 },
+                { "matrix": [1, 0], "x": 0, "y": 1 },
+                { "matrix": [1, 1], "x": 1, "y": 1 },
+                { "matrix": [1, 2], "x": 2, "y": 1 },
+                { "matrix": [1, 3], "x": 3, "y": 1 },
+                { "matrix": [2, 0], "x": 0.5, "y": 2 },
+                { "matrix": [2, 1], "x": 1.5, "y": 2 },
+                { "matrix": [2, 2], "x": 2.5, "y": 2 }
+            ]
+        }
+    },
+    "rgb_matrix": {
+        "driver": "WS2812",
+        "layout": [
+            { "flags": 2, "x": 36, "y": 3 },
+            { "flags": 2, "x": 86, "y": 2 },
+            { "flags": 2, "x": 138, "y": 2 },
+            { "flags": 2, "x": 188, "y": 2 },
+            { "flags": 2, "x": 215, "y": 16 },
+            { "flags": 2, "x": 215, "y": 16 },
+            { "flags": 4, "matrix": [0, 2], "x": 167, "y": 17 },
+            { "flags": 4, "matrix": [0, 1], "x": 112, "y": 17 },
+            { "flags": 4, "matrix": [0, 0], "x": 57, "y": 17 },
+            { "flags": 2, "x": 9, "y": 15 },
+            { "flags": 2, "x": 9, "y": 15 },
+            { "flags": 2, "x": 6, "y": 34 },
+            { "flags": 2, "x": 9, "y": 48 },
+            { "flags": 2, "x": 9, "y": 48 },
+            { "flags": 4, "matrix": [1, 0], "x": 29, "y": 38 },
+            { "flags": 4, "matrix": [1, 1], "x": 84, "y": 38 },
+            { "flags": 4, "matrix": [1, 2], "x": 140, "y": 38 },
+            { "flags": 2, "x": 218, "y": 34 },
+            { "flags": 2, "x": 215, "y": 48 },
+            { "flags": 2, "x": 215, "y": 48 },
+            { "flags": 2, "x": 188, "y": 61 },
+            { "flags": 4, "matrix": [2, 2], "x": 167, "y": 59 },
+            { "flags": 2, "x": 138, "y": 61 },
+            { "flags": 4, "matrix": [2, 1], "x": 112, "y": 59 },
+            { "flags": 2, "x": 86, "y": 61 },
+            { "flags": 4, "matrix": [2, 0], "x": 57, "y": 59 },
+            { "flags": 2, "x": 36, "y": 61 }
+        ]
+    }
+}

+ 31 - 0
keyboards/laser_ninja/pumpkin_pad/keymaps/default/keymap.c

@@ -0,0 +1,31 @@
+ /* Copyright 2022 Joah Nelson (Jels)
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT(
+    KC_F1, KC_F2, KC_F3,
+    KC_F4, KC_F5, KC_F6, KC_F7,
+    KC_F8, MO(1), KC_F10
+),
+[1] = LAYOUT(
+    RGB_TOG, RGB_MOD, RGB_RMOD,
+    RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
+    RGB_VAI, RGB_VAD, _______
+)
+};

+ 41 - 0
keyboards/laser_ninja/pumpkin_pad/keymaps/via/keymap.c

@@ -0,0 +1,41 @@
+ /* Copyright 2022 Joah Nelson (Jels)
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[0] = LAYOUT(
+    KC_F1, KC_F2, KC_F3,
+    KC_F4, KC_F5, KC_F6, KC_F7,
+    KC_F8, MO(1), KC_F10
+),
+[1] = LAYOUT(
+    RGB_TOG, RGB_MOD, RGB_RMOD,
+    RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD,
+    RGB_VAI, RGB_VAD, _______
+),
+[2] = LAYOUT(
+    _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, _______, _______
+),
+[3] = LAYOUT(
+    _______, _______, _______,
+    _______, _______, _______, _______,
+    _______, _______, _______
+)
+};

+ 1 - 0
keyboards/laser_ninja/pumpkin_pad/keymaps/via/rules.mk

@@ -0,0 +1 @@
+VIA_ENABLE = yes

+ 23 - 0
keyboards/laser_ninja/pumpkin_pad/readme.md

@@ -0,0 +1,23 @@
+# Pumpkin Pad
+
+![pumpkin-pad](https://i.imgur.com/jFkl9rwh.jpg)
+
+A 60% PCB
+
+-   Keyboard Maintainer: [Jels](https://github.com/Jels02)
+-   Hardware Supported: Pumpkin Pad PCB
+-   Hardware Availabililty: [Laser_Ninja](https://kennui.com/w/Laser_Ninja)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make laser_ninja/pumpkin_pad:default
+
+Flashing example for this keyboard:
+
+    make laser_ninja/pumpkin_pad:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+-   **Bootmagic reset**: Hold down the top left key and plug in the keyboard
+-   **Physical reset button**: Briefly press the button on the back of the PCB
+-   **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

+ 1 - 0
keyboards/laser_ninja/pumpkin_pad/rules.mk

@@ -0,0 +1 @@
+# This file is intentionally left blank.

+ 2 - 85
keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/keymap.c

@@ -1,5 +1,5 @@
 /*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 
   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
@@ -14,88 +14,5 @@
   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
-#include "ericgebhart.h"
-#include "layouts.h"
 
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  // Qwerty based Base layers
-  [_DVORAK]  = Rebound_base(___DVORAK___),
-  [_BEAKL]   = Rebound_base(___BEAKL15___),
-  [_COLEMAK] = Rebound_base(___COLEMAK_DH___),
-  [_QWERTY]  = Rebound_base(___QWERTY___),
-
-  // Bepo base layers
-  [_BEAKL_BP]  = Rebound_base_bepo(___BEAKL15_FR___),
-  [_DVORAK_BP] = Rebound_base_bepo(___DVORAK_FR___),
-  [_BEPO]      = Rebound_base_bepo6(___BEPO6___),
-
-  // Transient layers.
-  [_SYMB]    = Rebound_transient(___SYMB_BEAKLA_3x12___),
-  [_SYMB_BP] = Rebound_transient(___SYMB_BEAKLA_BP_3x12___),
-
-  [_KEYPAD]    = Rebound_transient(___KP_C_3x12___),
-  [_KEYPAD_BP] = Rebound_transient(___KP_C_BP_3x12___),
-
-  [_TOPROWS]    = Rebound_transient(___TOPROWS_3x12___),
-  [_TOPROWS_BP] = Rebound_transient(___TOPROWS_BP_3x12___),
-  [_NAV]    = Rebound_transient(___NAV_3x12___),
-  [_LAYERS] = Rebound_transient(___LAYERS_3x12___),
-};
-
-
-bool encoder_update_user(uint8_t index, bool clockwise) {
-  switch(get_highest_layer(layer_state)){
-  case _DVORAK:
-    if (clockwise) {
-      tap_code16(KC_VOLD);
-    } else {
-      tap_code16(KC_VOLU);
-    }
-    break;
-
-  case _NAV:
-    if (clockwise) {
-      tap_code16(S(KC_TAB));
-    } else {
-      tap_code16(KC_TAB);
-    }
-    break;
-  }
-  return true;
-}
-
-#ifdef OLED_ENABLE
-void oled_task_user(void) {
-  // Host Keyboard Layer Status
-  oled_write_P(PSTR(""), false);
-
-  switch (get_highest_layer(layer_state)) {
-  case _BASE:
-    oled_write_P(PSTR("Rebound\n"), false);
-    oled_write_P(PSTR("Rev4\n"), false);
-    break;
-  case _NAV:
-    oled_write_P(PSTR("Nav\n"), false);
-    break;
-  case _SYMB_BEAKL:
-  case _SYMB:
-    oled_write_P(PSTR("Symbols\n"), false);
-    break;
-  case _KEYPAD:
-    oled_write_P(PSTR("Top Rows\n"), false);
-    break;
-  default:
-    // Or use the write_ln shortcut over adding '\n' to the end of your string
-    oled_write_ln_P(PSTR("Undefined"), false);
-  }
-
-  // Host Keyboard LED Status
-  led_t led_state = host_keyboard_led_state();
-  oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR("    "), false);
-  oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR("    "), false);
-  oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR("    "), false);
-
-}
-
-#endif
+// See: users/ericgebhart.

+ 0 - 113
keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/layouts.h

@@ -1,113 +0,0 @@
-/*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
-
-  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 <http://www.gnu.org/licenses/>.
-*/
-
-/********************************************************************/
-/* Rebound 4 rows, 1x12, 3x13  */
-/********************************************************************/
-
-#define LVARG_rebound(...)    LAYOUT_all(__VA_ARGS__)
-#define LAYOUT_rebound_base(                                            \
-                            K01, K02, K03, K04, K05,                    \
-                            K06, K07, K08, K09, K0A,                    \
-                            K11, K12, K13, K14, K15,                    \
-                            K16, K17, K18, K19, K1A,                    \
-                            K21, K22, K23, K24, K25,                    \
-                            K26, K27, K28, K29, K2A                     \
-                                                                        ) \
-  LVARG_rebound(                                                        \
-                ROW1_LEFT(K01, K02, K03, K04, K05),                     \
-                ROW1_RIGHT(K06, K07, K08, K09, K0A),                    \
-                                                                        \
-                ROW2_LEFT(K11, K12, K13, K14, K15),                     \
-                KC_CCCV,                                                \
-                ROW2_RIGHT(K16, K17, K18, K19, K1A),                    \
-                                                                        \
-                ROW3_LEFT(K21, K22, K23, K24, K25),                     \
-                MO(_ADJUST),                                            \
-                ROW3_RIGHT(K26, K27, K28, K29, K2A),                    \
-                ___13_BOTTOM___                                         \
-                                                                        )
-
-#define LAYOUT_rebound_base_bepo(                                       \
-                                 K01, K02, K03, K04, K05,               \
-                                 K06, K07, K08, K09, K0A,               \
-                                 K11, K12, K13, K14, K15,               \
-                                 K16, K17, K18, K19, K1A,               \
-                                 K21, K22, K23, K24, K25,               \
-                                 K26, K27, K28, K29, K2A                \
-                                                                        ) \
-  LVARG_rebound(                                                        \
-                ROW1_LEFT_BP(K01, K02, K03, K04, K05),                  \
-                ROW1_RIGHT_BP(K06, K07, K08, K09, K0A),                 \
-                                                                        \
-                ROW2_LEFT_BP(K11, K12, K13, K14, K15),                  \
-                KC_CCCV,                                                \
-                ROW2_RIGHT_BP(K16, K17, K18, K19, K1A),                 \
-                                                                        \
-                ROW3_LEFT_BP(K21, K22, K23, K24, K25),                  \
-                MO(_ADJUST),                                            \
-                ROW3_RIGHT_BP(K26, K27, K28, K29, K2A),                 \
-                ___13_BOTTOM_BP___                                      \
-                                                                        )
-
-// Just for bepo because it's a 3x6 matrix on each side.
-// So 3 pairs of 6 keys, left and right.
-#define LAYOUT_rebound_base_bepo6(                                      \
-                                  K01, K02, K03, K04, K05, K06,         \
-                                  K07, K08, K09, K0A, K0B, K0C,         \
-                                  K11, K12, K13, K14, K15, K16,         \
-                                  K17, K18, K19, K1A, K1B, K1C,         \
-                                  K21, K22, K23, K24, K25, K26,         \
-                                  K27, K28, K29, K2A, K2B, K2C          \
-                                                                        ) \
-  LVARG_rebound(                                                        \
-                ROW1_LEFT_BP6(K01, K02, K03, K04, K05, K06),            \
-                ROW1_RIGHT_BP6(K07, K08, K09, K0A, K0B, K0C),           \
-                                                                        \
-                ROW2_LEFT_BP6(K11, K12, K13, K14, K15, K16),            \
-                KC_CCCV,                                                \
-                ROW2_RIGHT_BP6(K17, K18, K19, K1A, K1B, K1C),           \
-                                                                        \
-                ROW3_LEFT_BP6(K21, K22, K23, K24, K25, K26),            \
-                MO(_ADJUST),                                            \
-                ROW3_RIGHT_BP6(K27, K28, K29, K2A, K2B, K2C),           \
-                ___13_BOTTOM_BP___                                      \
-                                                                        )
-
-#define LAYOUT_rebound_transient(                                       \
-                                 K01, K02, K03, K04, K05, K06,          \
-                                 K07, K08, K09, K0A, K0B, K0C,          \
-                                 K11, K12, K13, K14, K15, K16,          \
-                                 K17, K18, K19, K1A, K1B, K1C,          \
-                                 K21, K22, K23, K24, K25, K26,          \
-                                 K27, K28, K29, K2A, K2B, K2C           \
-                                                                        ) \
-  LVARG_rebound(                                                        \
-                K01, K02, K03, K04, K05, K06,                           \
-                K07, K08, K09, K0A, K0B, K0C,                           \
-                K11, K12, K13, K14, K15, K16,                           \
-                ___,                                                    \
-                K17, K18, K19, K1A, K1B, K1C,                           \
-                K21, K22, K23, K24, K25, K26,                           \
-                ___,                                                    \
-                K27, K28, K29, K2A, K2B, K2C,                           \
-                ___, ___12___)
-
-#define Rebound_base(...)       LAYOUT_rebound_base(__VA_ARGS__)
-#define Rebound_base_bepo(...)  LAYOUT_rebound_base_bepo(__VA_ARGS__)
-#define Rebound_base_bepo6(...) LAYOUT_rebound_base_bepo6(__VA_ARGS__)
-#define Rebound_transient(...)  LAYOUT_rebound_transient(__VA_ARGS__)

+ 2 - 0
keyboards/montsinger/rebound/rev4/keymaps/ericgebhart/rules.mk

@@ -1,6 +1,7 @@
 # Build Options
 #   change yes to no to disable
 #
+#
 BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
 MOUSEKEY_ENABLE = yes       # Mouse keys
 EXTRAKEY_ENABLE = yes       # Audio control and System control
@@ -11,6 +12,7 @@ BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
 MIDI_ENABLE = no            # MIDI controls
 AUDIO_ENABLE = no           # Audio output
 UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
 RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.
 SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
 TAP_DANCE_ENABLE = yes      # Enable the tap dance feature.

+ 43 - 0
keyboards/nixkeyboards/day_off/config.h

@@ -0,0 +1,43 @@
+/* Copyright 2021 Nix Keyboards
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#include "config_common.h"
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+#define MATRIX_ROW_PINS \
+    { B3, B7, F5, F4, F1 }
+#define MATRIX_COL_PINS \
+    { F0, F7, C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, D1, D0 }
+#define DIODE_DIRECTION COL2ROW
+
+/* encoder */
+#define ENCODERS_PAD_A \
+    { B0 }
+#define ENCODERS_PAD_B \
+    { B1 }
+#define ENCODER_RESOLUTION 4
+
+/* Debounce reduces chatter */
+#define DEBOUNCE 5
+
+/* Set the Bootmagic key to the escape key (default key doesn't exist 0,0) */
+#define BOOTMAGIC_LITE_ROW 0
+#define BOOTMAGIC_LITE_COLUMN 1

+ 16 - 0
keyboards/nixkeyboards/day_off/day_off.c

@@ -0,0 +1,16 @@
+/* Copyright 2021 Nix Keyboards
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#include "day_off.h"

+ 32 - 0
keyboards/nixkeyboards/day_off/day_off.h

@@ -0,0 +1,32 @@
+/* Copyright 2021 Nix Keyboards
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_all(K001, K002, K003, K004, K005, K006, K007, K008, K009, K010,\
+	       K011, K012, K013, K014, K101, K102, K103, K104, K105, K106, \
+	       K107, K108, K109, K110, K111, K112, K113, K114, K200, K201, \
+	       K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \
+	       K212, K213, K214, K300, K301, K302, K303, K304, K305, K306, \
+	       K307, K308, K309, K310, K311, K312, K313, K314, K400, K401, \
+	       K402, K403, K405, K407, K408, K410, K411, K412, K413, K414) \
+    {   {KC_NO, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014}, \
+      	{KC_NO, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114}, \
+        {K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214}, \
+	{K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K313, K314}, \
+	{K400, K401, K402, K403, KC_NO, K405, KC_NO, K407, K408, KC_NO, K410, K411, K412, K413, KC_NO} \
+    }

+ 87 - 0
keyboards/nixkeyboards/day_off/info.json

@@ -0,0 +1,87 @@
+{
+    "keyboard_name": "DayOff",
+    "manufacturer": "NixKeyboards",
+    "url": "nixkeyboards.com",
+    "maintainer": "Schrobie",
+    "usb": {
+        "vid": "0x6E6B",
+        "pid": "0x444F",
+        "device_version": "0.0.1"
+    },
+    "layouts": {
+        "LAYOUT_all": {
+            "layout": [
+                {"label":"~", "x":1.5, "y":0},
+                {"label":"!", "x":2.5, "y":0},
+                {"label":"@", "x":3.5, "y":0},
+                {"label":"#", "x":4.5, "y":0},
+                {"label":"$", "x":5.5, "y":0},
+                {"label":"%", "x":6.5, "y":0},
+                {"label":"^", "x":7.5, "y":0},
+                {"label":"&", "x":8.5, "y":0},
+                {"label":"*", "x":9.5, "y":0},
+                {"label":"(", "x":10.5, "y":0},
+                {"label":")", "x":11.5, "y":0},
+                {"label":"_", "x":12.5, "y":0},
+                {"label":"+", "x":13.5, "y":0},
+                {"label":"Bksp", "x":14.5, "y":0},
+                {"label":"Del", "x":15.5, "y":0},
+                {"label":"Tab", "x":1.5, "y":1, "w":1.5},
+                {"label":"Q", "x":3, "y":1},
+                {"label":"W", "x":4, "y":1},
+                {"label":"E", "x":5, "y":1},
+                {"label":"R", "x":6, "y":1},
+                {"label":"T", "x":7, "y":1},
+                {"label":"Y", "x":8, "y":1},
+                {"label":"U", "x":9, "y":1},
+                {"label":"I", "x":10, "y":1},
+                {"label":"O", "x":11, "y":1},
+                {"label":"P", "x":12, "y":1},
+                {"label":"{", "x":13, "y":1},
+                {"label":"}", "x":14, "y":1},
+                {"label":"|", "x":15, "y":1, "w":1.5},
+                {"label":"M1", "x":0, "y":2},
+                {"label":"Caps Lock", "x":1.5, "y":2, "w":1.75},
+                {"label":"A", "x":3.25, "y":2},
+                {"label":"S", "x":4.25, "y":2},
+                {"label":"D", "x":5.25, "y":2},
+                {"label":"F", "x":6.25, "y":2},
+                {"label":"G", "x":7.25, "y":2},
+                {"label":"H", "x":8.25, "y":2},
+                {"label":"J", "x":9.25, "y":2},
+                {"label":"K", "x":10.25, "y":2},
+                {"label":"L", "x":11.25, "y":2},
+                {"label":":", "x":12.25, "y":2},
+                {"label":"\"", "x":13.25, "y":2},
+                {"label":"Enter", "x":14.25, "y":2, "w":2.25},
+                {"label":"M2", "x":0, "y":3},
+                {"label":"", "x":1.5, "y":3, "w":1.25},
+                {"label":"Shift", "x":2.75, "y":3},
+                {"label":"Z", "x":3.75, "y":3},
+                {"label":"X", "x":4.75, "y":3},
+                {"label":"C", "x":5.75, "y":3},
+                {"label":"V", "x":6.75, "y":3},
+                {"label":"B", "x":7.75, "y":3},
+                {"label":"N", "x":8.75, "y":3},
+                {"label":"M", "x":9.75, "y":3},
+                {"label":"<", "x":10.75, "y":3},
+                {"label":">", "x":11.75, "y":3},
+                {"label":"?", "x":12.75, "y":3},
+                {"label":"Shift", "x":13.75, "y":3, "w":1.75},
+                {"label":"", "x":15.5, "y":3},
+                {"label":"M3", "x":0, "y":4},
+                {"label":"Ctrl", "x":1.5, "y":4, "w":1.25},
+                {"label":"Win", "x":2.75, "y":4, "w":1.25},
+                {"label":"Alt", "x":4, "y":4, "w":1.25},
+                {"label":"Space", "x":5.25, "y":4, "w":6.25},
+                {"label":"Space", "x":5.25, "y":4, "w":2.25},
+                {"label":"Mod", "x":7.5, "y":4, "w":1.25},
+                {"label":"Space", "x":8.75, "y":4, "w":2.25},
+                {"label":"Alt", "x":11.5, "y":4, "w":1.25},
+                {"label":"Win", "x":12.75, "y":4, "w":1.25},
+                {"label":"Menu", "x":14, "y":4, "w":1.25},
+                {"label":"Ctrl", "x":15.25, "y":4, "w":1.25}
+            ]
+        }
+    }
+}

+ 60 - 0
keyboards/nixkeyboards/day_off/keymaps/default/keymap.c

@@ -0,0 +1,60 @@
+/* Copyright 2021 Nix Keyboards
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [0] = LAYOUT_all(
+                  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_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_BSPC,
+      KC_MPLY,    KC_CAPS,   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_BSLS,  KC_ENT,
+      KC_MNXT,    KC_LSFT,   KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,  KC_BSLS,
+      KC_MPRV,    KC_LCTL,   KC_LALT, KC_LGUI,          KC_SPC,           KC_SPC,  KC_SPC,           KC_RGUI, KC_RALT, KC_APP,  KC_RCTL,  RESET
+    ),
+    
+    [1] = LAYOUT_all(
+                  RESET,     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_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_BSPC,
+      KC_MPLY,    KC_CAPS,   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_BSLS,  KC_ENT,
+      KC_MNXT,    KC_LSFT,   KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,  KC_BSLS,
+      KC_MPRV,    KC_LCTL,   KC_LALT, KC_LGUI,          KC_SPC,           KC_SPC,  KC_SPC,           KC_RGUI, KC_RALT, KC_APP,  KC_RCTL,  RESET
+    ),
+    
+    [2] = LAYOUT_all(
+                     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_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_BSPC,
+         KC_MPLY,    KC_CAPS,   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_BSLS,  KC_ENT,
+         KC_MNXT,    KC_LSFT,   KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,  KC_BSLS,
+         KC_MPRV,    KC_LCTL,   KC_LALT, KC_LGUI,          KC_SPC,           KC_SPC,  KC_SPC,           KC_RGUI, KC_RALT, KC_APP,  KC_RCTL,  RESET
+    ),
+    
+    [3] = LAYOUT_all(
+                     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_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_BSPC,
+         KC_MPLY,    KC_CAPS,   KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_BSLS,  KC_ENT,
+         KC_MNXT,    KC_LSFT,   KC_NUBS, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT,  KC_BSLS,
+         KC_MPRV,    KC_LCTL,   KC_LALT, KC_LGUI,          KC_SPC,           KC_SPC,  KC_SPC,           KC_RGUI, KC_RALT, KC_APP,  KC_RCTL,  RESET
+    ),
+};
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+    if (clockwise) {
+        tap_code(KC_VOLU);
+    } 
+    else {
+        tap_code(KC_VOLD);
+    }
+    return false;
+}

+ 23 - 0
keyboards/nixkeyboards/day_off/readme.md

@@ -0,0 +1,23 @@
+# Day Off Vial Support
+
+[More info at nixkeyboards.com](https://nixkeyboards.com/)
+
+* Keyboard Maintainer: [Schrobie](https://github.com/schrobie)
+* Hardware Supported: Day Off PCBs, both solderable and hotswap
+* Hardware Availability: [Nix Keyboards](https://nixkeyboards.com/)
+
+Make example for this keyboard (after setting up your build environment):
+
+    make nixkeyboards/day_off:default
+
+Flashing example for this keyboard:
+
+    make nixkeyboards/day_off:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,1) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available

+ 19 - 0
keyboards/nixkeyboards/day_off/rules.mk

@@ -0,0 +1,19 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no       # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes       # Mouse keys
+EXTRAKEY_ENABLE = yes       # Audio control and System control
+CONSOLE_ENABLE = no         # Console for debug
+COMMAND_ENABLE = no         # Commands for debug and configuration
+NKRO_ENABLE = yes           # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
+AUDIO_ENABLE = no           # Audio output
+ENCODER_ENABLE = yes

+ 45 - 0
keyboards/preonic/keymaps/rmeli/config.h

@@ -0,0 +1,45 @@
+/* Copyright 2015-2021 Jack Humbert
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef AUDIO_ENABLE
+#    define STARTUP_SONG SONG(PREONIC_SOUND)
+// #define STARTUP_SONG SONG(NO_SOUND)
+
+#    define DEFAULT_LAYER_SONGS \
+        { SONG(QWERTY_SOUND), SONG(COLEMAK_SOUND), SONG(DVORAK_SOUND) }
+#endif
+
+#define MUSIC_MASK (keycode != KC_NO)
+
+/*
+ * MIDI options
+ */
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+
+#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED

+ 231 - 0
keyboards/preonic/keymaps/rmeli/keymap.c

@@ -0,0 +1,231 @@
+/* Copyright 2015-2021 Jack Humbert
+ * Copyright 2022 Rocco Meli <@RMeli>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "muse.h"
+
+#include "rmeli.h"
+
+enum preonic_layers { _QWERTY, _COLEMAK, _LOWER, _RAISE, _ADJUST };
+enum preonic_keycodes { QWERTY = SAFE_RANGE, COLEMAK, LOWER, RAISE, BACKLIT };
+
+#define ____________________BOTTOM_L_x6_____________________ BACKLIT, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC
+#define ____________________BOTTOM_R_x6_____________________ KC_ENT, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
+
+/* LAYOUT
+ *
+ * ,-----------------------------------------------------------.
+ * |    |    |    |    |    |    |    |    |    |    |    |    |
+ * |----+----+----+----+----+----+----+----+----+----+----+----|
+ * |    |    |    |    |    |    |    |    |    |    |    |    |
+ * |----+----+----+----+----+----+----+----+----+----+----+----|
+ * |    |    |    |    |    |    |    |    |    |    |    |    |
+ * |----+----+----+----+----+----+----+----+----+----+----+----|
+ * |    |    |    |    |    |    |    |    |    |    |    |    |
+ * |----+----+----+----+----+----+----+----+----+----+----+----|
+ * |    |    |    |    |    |    |    |    |    |    |    |    |
+ * `----+----+----+----+----+----+----+----+----+----+----+----'
+ */
+
+// Define wrapper for standard CRKB layout
+#define LAYOUT_wrapper(...) LAYOUT_preonic_grid(__VA_ARGS__)
+
+// clang-format off
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT_wrapper(
+    ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
+    ___________________QWERTY_L1_x6_____________________, ___________________QWERTY_R1_x6_____________________,
+    ___________________QWERTY_L2_x6_____________________, ___________________QWERTY_R2_x6_____________________,
+    ___________________QWERTY_L3_x6_____________________, ___________________QWERTY_R3_x6_____________________,
+    ____________________BOTTOM_L_x6_____________________, ____________________BOTTOM_R_x6_____________________
+),
+
+[_COLEMAK] = LAYOUT_wrapper(
+    ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
+    ________________COLEMAK_MOD_DH_L1_x6________________, ________________COLEMAK_MOD_DH_R1_x6________________,
+    ________________COLEMAK_MOD_DH_L2_x6________________, ________________COLEMAK_MOD_DH_R2_x6________________,
+    ________________COLEMAK_MOD_DH_L3_x6________________, ________________COLEMAK_MOD_DH_R3_x6________________,
+    ____________________BOTTOM_L_x6_____________________, ____________________BOTTOM_R_x6_____________________
+),
+
+[_LOWER] = LAYOUT_wrapper(
+  ____________________FUNC_LEFT_x6____________________, ____________________FUNC_RIGHT_x6___________________,
+  ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
+  _______, ______________UNICODE_L2_x5________________, ________________NAV_R2_x5__________________, XXXXXXX,
+  _______, ______________UNICODE_L3_x5________________, ________________NAV_R3_x5__________________, _______,
+  ______________________BLANK_6x______________________, ______________________BLANK_6x______________________
+),
+
+[_RAISE] = LAYOUT_wrapper(
+  ___________________NUMBER_LEFT_x6___________________, ___________________NUMBER_RIGHT_x6__________________,
+  ___________________SYMBOL_LEFT_x6___________________, ___________________SYMBOL_RIGHT_x6__________________,
+  _______, ____________NAV_VIM_x4____________, XXXXXXX, ____________________SYMBOL_R2_x6____________________,
+  _______, _________________NONE_5x___________________, ____________________SYMBOL_R3_x6____________________,
+  ______________________BLANK_6x______________________, ______________________BLANK_6x______________________
+),
+
+[_ADJUST] = LAYOUT_wrapper(
+  QK_BOOT, _________________NONE_5x___________________, ______________________NONE_6x_______________________,
+  XXXXXXX, MU_ON,   AU_ON,   MI_ON,   XXXXXXX, XXXXXXX, _______________CONFIG_R1_x5________________,  QWERTY,
+  RESET,   MU_MOD,  AU_TOG,  MI_TOG,  XXXXXXX, XXXXXXX, _______________CONFIG_R2_x5________________, XXXXXXX,
+  XXXXXXX, MU_OFF,  AU_OFF,  MI_OFF,  XXXXXXX, XXXXXXX, _______________CONFIG_R3_x5________________, COLEMAK,
+  ______________________BLANK_6x______________________, ______________________BLANK_6x______________________
+)
+};
+// clang-format on
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    switch (keycode) {
+        case QWERTY:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_QWERTY);
+            }
+            return false;
+            break;
+        case COLEMAK:
+            if (record->event.pressed) {
+                set_single_persistent_default_layer(_COLEMAK);
+            }
+            return false;
+            break;
+        case LOWER:
+            if (record->event.pressed) {
+                layer_on(_LOWER);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            } else {
+                layer_off(_LOWER);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            }
+            return false;
+            break;
+        case RAISE:
+            if (record->event.pressed) {
+                layer_on(_RAISE);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            } else {
+                layer_off(_RAISE);
+                update_tri_layer(_LOWER, _RAISE, _ADJUST);
+            }
+            return false;
+            break;
+        case BACKLIT:
+            if (record->event.pressed) {
+                register_code(KC_RSFT);
+#ifdef BACKLIGHT_ENABLE
+                backlight_step();
+#endif
+#ifdef RGBLIGHT_ENABLE
+                rgblight_step();
+#endif
+#ifdef __AVR__
+                writePinLow(E6);
+#endif
+            } else {
+                unregister_code(KC_RSFT);
+#ifdef __AVR__
+                writePinHigh(E6);
+#endif
+            }
+            return false;
+            break;
+    }
+    return true;
+};
+
+bool     muse_mode      = false;
+uint8_t  last_muse_note = 0;
+uint16_t muse_counter   = 0;
+uint8_t  muse_offset    = 70;
+uint16_t muse_tempo     = 50;
+
+bool encoder_update_user(uint8_t index, bool clockwise) {
+    if (muse_mode) {
+        if (IS_LAYER_ON(_RAISE)) {
+            if (clockwise) {
+                muse_offset++;
+            } else {
+                muse_offset--;
+            }
+        } else {
+            if (clockwise) {
+                muse_tempo += 1;
+            } else {
+                muse_tempo -= 1;
+            }
+        }
+    } else {
+        if (clockwise) {
+            register_code(KC_PGDN);
+            unregister_code(KC_PGDN);
+        } else {
+            register_code(KC_PGUP);
+            unregister_code(KC_PGUP);
+        }
+    }
+    return true;
+}
+
+bool dip_switch_update_user(uint8_t index, bool active) {
+    switch (index) {
+        case 0:
+            if (active) {
+                layer_on(_ADJUST);
+            } else {
+                layer_off(_ADJUST);
+            }
+            break;
+        case 1:
+            if (active) {
+                muse_mode = true;
+            } else {
+                muse_mode = false;
+            }
+    }
+    return true;
+}
+
+void matrix_scan_user(void) {
+#ifdef AUDIO_ENABLE
+    if (muse_mode) {
+        if (muse_counter == 0) {
+            uint8_t muse_note = muse_offset + SCALE[muse_clock_pulse()];
+            if (muse_note != last_muse_note) {
+                stop_note(compute_freq_for_midi_note(last_muse_note));
+                play_note(compute_freq_for_midi_note(muse_note), 0xF);
+                last_muse_note = muse_note;
+            }
+        }
+        muse_counter = (muse_counter + 1) % muse_tempo;
+    } else {
+        if (muse_counter) {
+            stop_all_notes();
+            muse_counter = 0;
+        }
+    }
+#endif
+}
+
+bool music_mask_user(uint16_t keycode) {
+    switch (keycode) {
+        case RAISE:
+        case LOWER:
+            return false;
+        default:
+            return true;
+    }
+}

+ 1 - 0
keyboards/preonic/keymaps/rmeli/readme.md

@@ -0,0 +1 @@
+# The default Preonic layout - largely based on the Planck's

+ 12 - 0
keyboards/preonic/keymaps/rmeli/rules.mk

@@ -0,0 +1,12 @@
+TAP_DANCE_ENABLE = yes
+AUTO_SHIFT_ENABLE = no
+
+MAGIC_ENABLE = yes
+
+UNICODEMAP_ENABLE = yes
+
+# Turn off rev3_drop options
+RGBLIGHT_ENABLE = no
+MOUSEKEY_ENABLE = no
+
+SRC += muse.c

+ 25 - 0
keyboards/splitkb/kyria/keymaps/ericgebhart/config.h

@@ -0,0 +1,25 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+Copyright 2015 Jack Humbert
+
+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 <http://www.gnu.org/licenses/>.
+*/
+
+#pragma once
+
+// otherwise the other promicro v3 isn't found
+#define SPLIT_USB_DETECT
+#define OLED_DISPLAY_128X64

+ 18 - 0
keyboards/splitkb/kyria/keymaps/ericgebhart/keymap.c

@@ -0,0 +1,18 @@
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+// See: users/ericgebhart.

+ 3 - 0
keyboards/splitkb/kyria/keymaps/ericgebhart/rules.mk

@@ -0,0 +1,3 @@
+EXTRAKEY_ENABLE = no      # Audio control and System control
+ENCODER_ENABLE = no       # Enables the use of one or more encoders
+RGBLIGHT_ENABLE = no      # Enable keyboard RGB underglow

+ 2 - 123
keyboards/xiudi/xd75/keymaps/ericgebhart/keymap.c

@@ -1,5 +1,5 @@
 /*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
 
   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
@@ -15,125 +15,4 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "keymap_bepo.h"
-#include "ericgebhart.h"
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  // 4x10
-  [_DVORAK]  = BASE_5x15(___NUMS___, ___DVORAK___),
-  [_QWERTY]  = BASE_5x15(___NUMS___, ___QWERTY___),
-  [_COLEMAK] = BASE_5x15(___NUMS___, ___COLEMAK_DH___),
-  [_BEAKL]   = BASE_5x15(___BKLNUMS___, ___BEAKL15___),
-
-  //[_DVORAK_BP] = BASE_5x15_bepo(___DVORAK_FR___),
-  //[_BEAKL_BP]  = BASE_5x15_bepo(___BEAKL15_FR___),
-
-  // 4x12
-  //[_BEPO]      = BASE_5x15_bepo6(___BEPO6_FR___),
-
-  // transient macro takes a 4x12 for args
-  [_SYMB]    = TRANSIENT_5x15(___12___, ___SYMB_BEAKLA_3x12___),
-  //[_SYMB_BP] = TRANSIENT_5x15(___12___, ___SYMB_BEAKLA_BP_3x12___),
-
-  [_TOPROWS]    = TRANSIENT_5x15(___12___, ___TOPROWS_3x12___),
-  //[_TOPROWS_BP] = TRANSIENT_5x15(___12___, ___TOPROWS_BP_3x12___),
-
-  [_KEYPAD]    = TRANSIENT_5x15(___12___, ___KP_C_3x12___),
-  //[_KEYPAD_BP] = TRANSIENT_5x15(___12___, ___KP_C_BP_3x12___),
-
-  // Navigation and control
-  [_NAV]    = TRANSIENT_5x15(___12___, ___NAV_3x12___),
-  [_LAYERS] = TRANSIENT_5x15(___12___, ___LAYERS_3x12___),
-  //[_RGB]  = TRANSIENT_5x15(___12___, ___RGB_3x12___),
-  [_ADJUST]    = TRANSIENT_5x15(___12___, ___ADJUST_3x12___),
-};
-
-
-/********************************************************************************/
-/* Using layers to do RGB underlighting */
-/********************************************************************************/
-
-const rgblight_segment_t PROGMEM on_bepo[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                     {0, 2, HSV_AZURE}
-                                                                     );
-
-const rgblight_segment_t PROGMEM bepo[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                  {3, 2, HSV_MAGENTA}
-                                                                  );
-
-const rgblight_segment_t PROGMEM dvorak[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                    {3, 2, HSV_AZURE}
-                                                                    );
-
-const rgblight_segment_t PROGMEM media[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                   {5, 1, HSV_GREEN}
-                                                                   );
-
-const rgblight_segment_t PROGMEM symbol[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                    {4, 2, HSV_GOLD}
-                                                                    );
-
-const rgblight_segment_t PROGMEM keypad[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                    {4, 2, HSV_BLUE}
-                                                                    );
-
-const rgblight_segment_t PROGMEM layers[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                    {5, 1, HSV_RED}
-                                                                    );
-
-const rgblight_segment_t PROGMEM rgb[] = RGBLIGHT_LAYER_SEGMENTS(
-                                                                 {5, 1, HSV_ORANGE}
-                                                                 );
-
-const rgblight_segment_t* const PROGMEM rgb_layers[] = RGBLIGHT_LAYERS_LIST(on_bepo, bepo, dvorak, media, symbol,
-                                                                            keypad, layers, rgb);
-
-void keyboard_post_init_user(void) {
-  rgblight_sethsv_noeeprom(HSV_PURPLE);
-  rgblight_layers = rgb_layers;
-}
-
-layer_state_t layer_state_set_user(layer_state_t state) {
-  // rgblight_set_layer_state(0, !on_qwerty());
-  rgblight_set_layer_state(0, layer_state_cmp(state, _DVORAK));
-
-  rgblight_set_layer_state(1, layer_state_cmp(state, _BEPO));
-  rgblight_set_layer_state(2, layer_state_cmp(state, _DVORAK));
-  //|| layer_state_cmp(state, DVORAK_ON_BEPO)));
-  rgblight_set_layer_state(3, layer_state_cmp(state, _NAV));
-  rgblight_set_layer_state(4, layer_state_cmp(state, _SYMB) );
-
-  //(layer_state_cmp(state, SYMB) || (layer_state_cmp(state, SYMB_ON_BEPO))));
-  rgblight_set_layer_state(5, layer_state_cmp(state, _KEYPAD) );
-  ///(layer_state_cmp(state, KEYPAD) || (layer_state_cmp(state, KEYPAD_ON_BEPO))));
-  rgblight_set_layer_state(6, layer_state_cmp(state, _LAYERS));
-  rgblight_set_layer_state(7, layer_state_cmp(state, _RGB));
-  return state;
-}
-
-/* void suspend_power_down_user(void) { */
-/*   rgblight_disable(); */
-/* } */
-
-/* void suspend_wakeup_init_user(void) { */
-/*   rgblight_enable(); */
-/* } */
-
-/* bool is_shift_pressed = false; */
-
-/* bool led_update_user(led_t led_state) { */
-/*   rgblight_set_layer_state(2, is_shift_pressed != led_state.caps_lock); */
-/*   return true; */
-/* } */
-
-/* bool process_record_user(uint16_t keycode, keyrecord_t* record) { */
-/*   switch (keycode) { */
-/*   case KC_LSFT: */
-/*   case KC_RSFT: */
-/*     is_shift_pressed = record->event.pressed; */
-/*     rgblight_set_layer_state(2, is_shift_pressed != host_keyboard_led_state().caps_lock); */
-/*   default: */
-/*     return true; */
-/*   } */
-/* } */
+// See: users/ericgebhart.

+ 0 - 1
keyboards/xiudi/xd75/keymaps/ericgebhart/readme.md

@@ -1 +0,0 @@
-# The default keymap for xd75, with led controls

+ 1 - 1
keyboards/xiudi/xd75/keymaps/ericgebhart/rules.mk

@@ -1,3 +1,3 @@
 RGBLIGHT_ENABLE = yes
-RGBLIGHT_ANIMATION = yes
+RGBLIGHT_ANIMATION = no
 # BACKLIGHT_ENABLE = yes

+ 0 - 94
users/ericgebhart/altlocal_keys.c

@@ -1,94 +0,0 @@
-/*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
-
-  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 <http://www.gnu.org/licenses/>.
-*/
-
-#include "ericgebhart.h"
-#include "altlocal_keys.h"
-
-#include "keymap_bepo.h"
-
-// These are the keys for dvorak on bepo.  column one is the keycode and mods for
-// the unshifted key, the second column is the keycode and mods for the shifted key.
-// GR is Good Range.  It subtracts SAFE_RANGE from the keycode so we can make a
-// reasnably sized array without difficulties. The macro is for the constant declarations
-// the function is for when we use it.
-const uint16_t key_translations[][2][2] = {
-  [GR(DB_1)] =      {{BP_DQUO, MOD_LSFT},      {BP_DCIR, MOD_LSFT}},
-  [GR(DB_2)] =      {{BP_LDAQ, MOD_LSFT},      {BP_AT, MOD_NONE}},
-  [GR(DB_3)] =      {{BP_RDAQ, MOD_LSFT},      {BP_DLR, MOD_LSFT}},
-  [GR(DB_4)] =      {{BP_LPRN, MOD_LSFT},      {BP_DLR, MOD_NONE}},
-  [GR(DB_5)] =      {{BP_RPRN, MOD_LSFT},      {BP_PERC, MOD_NONE}},
-  [GR(DB_6)] =      {{BP_AT, MOD_LSFT},        {BP_AT, MOD_BIT(KC_RALT)}},
-  [GR(DB_7)] =      {{BP_PLUS, MOD_LSFT},      {BP_P, MOD_BIT(KC_RALT)}},
-  [GR(DB_8)] =      {{BP_MINS, MOD_LSFT},      {BP_ASTR, MOD_NONE}},
-  [GR(DB_9)] =      {{BP_SLSH, MOD_LSFT},     {BP_LPRN, MOD_NONE}},
-  [GR(DB_0)] =      {{BP_ASTR, MOD_LSFT},      {BP_RPRN, MOD_NONE}},
-  [GR(DB_GRV)] =    {{BP_PERC, MOD_LSFT},      {BP_K, MOD_BIT(KC_RALT)}},
-  [GR(DB_SCOLON)] = {{BP_COMM, MOD_LSFT},      {BP_DOT, MOD_LSFT}},
-  [GR(DB_SLASH)] =  {{BP_SLSH, MOD_NONE},     {BP_QUOT, MOD_LSFT}},
-  [GR(DB_BACKSLASH)] = {{BP_AGRV, MOD_BIT(KC_RALT)}, {BP_B, MOD_BIT(KC_RALT)}},
-  [GR(DB_EQL)] =    {{BP_EQL, MOD_NONE},       {BP_PLUS, MOD_NONE}},
-  [GR(DB_COMM)] =   {{BP_COMM, MOD_NONE},     {BP_LDAQ, MOD_BIT(KC_RALT)}},
-  [GR(DB_DOT)] =    {{BP_DOT, MOD_NONE},       {BP_RDAQ, MOD_BIT(KC_RALT)}},
-  [GR(DB_QUOT)] =   {{BP_QUOT, MOD_NONE},      {BP_DQUO, MOD_NONE}},
-  [GR(DB_MINUS)] =  {{BP_MINS, MOD_NONE},     {KC_SPC, MOD_BIT(KC_RALT)}},
-  [GR(DB_LPRN)] =   {{BP_LPRN, MOD_NONE},      {BP_LPRN, MOD_BIT(KC_RALT)}},
-  [GR(DB_RPRN)] =   {{BP_RPRN, MOD_NONE},      {BP_RPRN, MOD_BIT(KC_RALT)}},
-  [GR(DB_LBRC)] =   {{BP_Y, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
-  [GR(DB_RBRC)] =   {{BP_X, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
-  // For the symbol layer
-  [GR(DB_HASH)] =   {{BP_DLR, MOD_LSFT},          {BP_DLR, MOD_LSFT}},
-  [GR(DB_LCBR)] =   {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_LPRN, MOD_BIT(KC_RALT)}},
-  [GR(DB_RCBR)] =   {{BP_LPRN, MOD_BIT(KC_RALT)}, {BP_RPRN, MOD_BIT(KC_RALT)}},
-  [GR(DB_PIPE)] =   {{BP_B, MOD_BIT(KC_RALT)},    {BP_B, MOD_BIT(KC_RALT)}},
-  [GR(DB_TILD)] =   {{BP_K, MOD_BIT(KC_RALT)},    {BP_K, MOD_BIT(KC_RALT)}},
-  [GR(DB_CIRC)] =   {{BP_AT, MOD_BIT(KC_RALT)},   {BP_AT, MOD_BIT(KC_RALT)}},
-  [GR(DB_LESS)] =   {{BP_LDAQ, MOD_BIT(KC_RALT)}, {BP_LDAQ, MOD_BIT(KC_RALT)}},
-  [GR(DB_GRTR)] =   {{BP_RDAQ, MOD_BIT(KC_RALT)}, {BP_RDAQ, MOD_BIT(KC_RALT)}},
-  // Keys for BEAKL on Qwerty
-  [GR(BQ_COMM)] =   {{KC_COMMA, MOD_NONE},    {KC_1, MOD_LSFT}},
-  [GR(BQ_DOT)]  =   {{KC_DOT, MOD_NONE},      {KC_2, MOD_LSFT}},
-  [GR(BQ_QUOT)] =   {{KC_QUOT, MOD_NONE},     {KC_GRV, MOD_NONE}},
-};
-
-
-uint8_t gr(uint16_t kc){
-    return (kc - SAFE_RANGE);
-}
-// send the right keycode for the right mod.
-// remove the mods we are taking care of,
-// send our keycodes then restore them.
-// all so we can make dvorak keys from bepo keycodes.
-void send_keycode(uint16_t kc){
-    uint8_t tmp_mods = get_mods();
-    bool is_shifted = ( tmp_mods & (MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)) );
-    //uint8_t key[2][2] = key_translations[GR(kc)];
-    // need to turn of the shift if it is on.
-    unregister_mods((MOD_BIT(KC_LSFT)|MOD_BIT(KC_RSFT)));
-    if(is_shifted){
-        register_mods(SHIFTED_MODS(kc));
-        register_code(SHIFTED_KEY(kc));
-        unregister_code(SHIFTED_KEY(kc));
-        unregister_mods(SHIFTED_MODS(kc));
-    } else{
-        register_mods(UNSHIFTED_MODS(kc));
-        register_code(UNSHIFTED_KEY(kc));
-        unregister_code(UNSHIFTED_KEY(kc));
-        unregister_mods(UNSHIFTED_MODS(kc));
-    }
-    clear_mods();
-  register_mods(tmp_mods);
-}

+ 90 - 0
users/ericgebhart/base_layers/accents.h

@@ -0,0 +1,90 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+// probably best to have e and é on different fingers.
+
+// doesnt work, oled displays garbage
+/* #define CARTE_ACCENTED                          \ */
+/*   carte_de_map(" æœêùì  ¿ïüöë ",                \ */
+/*                " àôèéî  ûçñß^",                 \ */
+/*                " âöíúí       ") */
+
+// need to figure out a better way to display these on the oled.
+#define CARTE_ACCENTED                          \
+  carte_de_map(" aoeui  ?iuoe ",                \
+               " aoeei  ucnS^",                 \
+               " aoiúi       ")
+
+#define ___ACCENTED___                                                  \
+  LANG_MAP(_AE,   _OE,   _ECIR, _UGRV, _IGRV,   _IQUE, _IIAE, _UIAE, _OIAE, _EIAE, \
+           _AGRV, _OCIR, _EGRV, _EACU, _ICIR,   _UCIR, _CCED, _NTIL, _SS,   _DCIR, \
+           _AACU, _ODIA, _IACU, _UACU, _IACU,   _SPC,  _SPC,  _SPC , _SPC,  _SPC)
+
+
+// A dead key layer, optimized for Most common,
+// western european.
+#define CARTE_MORTE                             \
+  carte_de_map(" ˝˘̉   ̛ ˙° ",                    \
+               "/`^´  ¸¨~¤",                    \
+               " ,ˇ.  ˛µ¯")
+
+#define ___MORTE___                                                     \
+  LANG_MAP(_,     _DACU, _BREV, _HOKA, _,   _, _HORN, _DOTA, _RNGA, _,  \
+           _DSLS, _DGRV, _DCIR, _ACUT, _,   _, _CEDL, _DIAE, _DTIL, _CURR, \
+           _,     _DCMM, _CARN, _DOTB, _,   _, _OGON, _DGRK, _MACR, _)
+
+// Just taking a guess and putting the things I know are most
+// used in easy to use places., not sure about ntil and ss, put
+// them in their dvorak spots on the home row.
+
+/* #define CARTE_ACCENTS_MORTE                     \ */
+/*   carte_de_map(" æœêùì  ¿`^´ë ",                \ */
+/*                " àôèéî  ¸çñß~",                 \ */
+/*                " âö,úí   ¨ˇ°   ") */
+
+#define CARTE_ACCENTS_MORTE                     \
+  carte_de_map(" aoeui  ?`^'e ",                \
+               " aoeei  ,cnS~",                 \
+               " ao,ui   \"^o")
+
+#define ___ACCENTS_MORTE___                                             \
+  LANG_MAP(_AE,   _OE,    _ECIR,  _UGRV,  _IGRV,    _IQUE, _DGRV, _DCIR, _ACUT, _EIAE, \
+           _AGRV, _OCIR,  _EGRV,  _EACU,  _ICIR,    _CEDL, _CCED, _NTIL, _SS,   _DTIL, \
+           _AACU, _OIAE,  _DCMM,  _UACU,  _IACU,    _OGON, _DIAE, _CARN, _RNGA, _HORN)
+
+/* // DEAD layer. */
+/* BP_DCIR // ^ (dead) */
+/* BP_ACUT // ´ (dead) */
+/* BP_DGRV // ` (dead) */
+/* BP_CARN // ˇ (dead) */
+/* BP_DSLS // / (dead) */
+/* BP_BREV // ˘ (dead) */
+/* BP_DIAE // ¨ (dead) */
+/* BP_DTIL // ~ (dead) */
+/* BP_MACR // ¯ (dead) */
+/* BP_CEDL // ¸ (dead) */
+/* BP_RNGA // ° (dead) */
+/* BP_DGRK // µ (dead Greek key) */
+/* BP_OGON // ˛ (dead) */
+/* BP_DACU // ˝ (dead) */
+/* BP_DOTA // ˙ (dead) */
+/* BP_CURR // ¤ (dead) */
+/* BP_HORN // ̛  (dead) */
+/* BP_DCMM // , (dead) */
+/* BP_HOKA // ̉  (dead) */
+/* BP_DOTB // ̣  (dead) */

+ 150 - 0
users/ericgebhart/base_layers/alt.h

@@ -0,0 +1,150 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+// e goes on the left thumb
+#define CARTE_MALTRON                           \
+  carte_de_map("   qpycb  vmuzl",               \
+               "   anisf  ctdor",               \
+               "   ;/jg,  .wk-x e")
+
+#define ___MALTRON___                                                   \
+  LANG_MAP(_Q,      _P,      _Y, _C, _B,       _V,     _M, _U, _Z,      _L, \
+           _A,      _N,      _I, _S, _F,       _D,     _T, _D, _O,      _R, \
+           TL_SCLN, TL_SLSH, _J, _G, TL_COMM,  TL_DOT, _W, _K, TL_MINS, _X)
+
+#define CARTE_EUCALYN                           \
+  carte_de_map("   /,.fq  aoeiu",               \
+               "   zxcvw  mrdyp",               \
+               "   gtksn  bhjl;")
+
+#define ___EUCALYN___                                                   \
+  LANG_MAP(TL_SLSH, TL_COMM, TL_DOT, _F, _Q,   _A, _O, _E, _I, _U,      \
+           _Z,      _X,      _C,     _V, _W,   _M, _R, _D, _Y, _P,      \
+           _G,      _T,      _K,     _S, _N,   _B, _H, _J, _L, TL_SCLN)
+
+
+
+// RSTHD
+/* j c y f k | z l , u q = */
+/* r s t h d | m n a i o - */
+/* / v g p b | x w . ; ' */
+/* e */
+
+// need a thumb cluster for this.
+// removed = and -, edge keys if you've got them.
+// e goes on left thumb
+
+#define CARTE_RSTHD                           \
+  carte_de_map("   jcyfk  zl,uq",             \
+               "   rsthd  mnaio",             \
+               "   /vgpb  xw.;' e")
+
+#define ___RSTHD___                                                     \
+  LANG_MAP(_J, _C, _Y, _F, _K,   _Z, _L, TL_COMM, _U,      _Q,          \
+           _R, _S, _T, _H, _D,   _M, _N, _A,      _I,      _O,          \
+           _/, _V, _G, _P, _B,   _X, _W, TL_DOT,  TL_SCLN, TL_QUOT)
+
+#define CARTE_HANDS_UP                    \
+  carte_de_map("  fyou,  kwclp",          \
+               "  hiea.  dtsrn",          \
+               "  bj'z;  vmgxq")
+
+#define ___HANDS_UP___                                         \
+  LANG_MAP(_F, _Y, _O,      _U, TL_COMM,   _K, _W, _C, _L, _P, \
+           _H, _I, _E,      _A, TL_DOT ,   _D, _T, _S, _R, _N, \
+           _B, _J, TL_QUOT, _Z, TL_SCLN,   _V, _M, _G, _X, _Q)
+
+#define CARTE_WHITE                             \
+  carte_de_map("  vyd,'  jmlu-",                \
+               "  atheb  csnoi",                \
+               "  pkgwq  xrf.z")
+
+#define ___WHITE___                                                     \
+  LANG_MAP(_V, _Y, _D, TL_COMM, TL_QUOT,   _J, _M, _L, _U,     _MINS,   \
+           _A, _T, _H, _E,      _B,        _C, _S, _N, _O,     _I,      \
+           _P, _K, _G, _W,      _Q,        _X, _R, _F, TL_DOT, _Z)
+
+
+#define CARTE_ISRT                              \
+  carte_de_map("  yclmk  zfu,'",                \
+               "  isrtg  pneao",                \
+               "  qvwdj  bh/.x")
+
+#define ___ISRT___                                                      \
+  LANG_MAP(_Y, _C, _L, _M, _K,   _Z, _F, _U,      TL_COMM, TL_QUOT,     \
+           _I, _S, _R, _T, _G,   _P, _N, _E,      _A,      _O,          \
+           _Q, _V, _W, _D, _J,   _B, _H, TL_SLSH, TL_DOT,  _X)
+
+#define CARTE_SOUL                              \
+  carte_de_map("  qwldp  kmuy;",                \
+               "  srtg   fneio",                \
+               "  zxcvj  bh,./")
+
+#define ___SOUL___                                                      \
+  LANG_MAP(_Q, _W, _L, _D, _P,   _K, _M, _U,      _Y,     TL_SCLN,      \
+           _A, _S, _R, _T, _G,   _F, _N, _E,      _I,     _O,           \
+           _Z, _X, _C, _V, _J,   _B, _H, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_NIRO                              \
+  carte_de_map("  qwudp  jfyl;",                \
+               "  asetg  hniro",                \
+               "  zxcvb  km,./")
+
+#define ___NIRO___                                                      \
+  LANG_MAP(_Q, _W, _U, _D, _P,   _J, _F, _Y,      _L,     TL_SCLN,      \
+           _A, _S, _E, _T, _G,   _H, _N, _I,      _R,     _O,           \
+           _Z, _X, _C, _V, _B,   _K, _M, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_ASSET                             \
+  carte_de_map("  qwjfg   ypul;",               \
+               "  asetd   hnior",               \
+               "  zxcvb   km,./")
+
+#define ___Asset___                                                     \
+  LANG_MAP(_Q, _W, _J, _F, _G,    _Y, _P, _U,      _L,     TL_SCLN,     \
+           _A, _S, _E, _T, _D,    _H, _N, _I,      _O,     _R,          \
+           _Z, _X, _C, _V, _B,    _K, _M, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_WHORF                             \
+  carte_de_map("flhdm  vwou,",                  \
+               "srntk  gyaei",                  \
+               "xjbzq  pc';. ")
+
+#define ___WHORF___                                                    \
+  LANG_MAP(_F, _L, _H, _D, _M,   _V, _W, _O,      _U,      TL_COMM,    \
+           _S, _R, _N, _T, _K,   _G, _Y, _A,      _E,      _I,         \
+           _X, _J, _B, _Z, _Q,   _P, _C, TL_QUOT, TL_SCLN, TL_DOT )
+
+#define CARTE_WHORF6                            \
+  carte_de_map("vlhkj  gwou.",                  \
+               "srntk  ydeai",                  \
+               "xqbfz  pc',; ")
+
+#define ___WHORF6___                                                    \
+  LANG_MAP(_V, _L, _H, _D, _M,   _G, _W, _O,      _U,      TL_DOT,      \
+           _S, _R, _N, _T, _K,   _Y, _D, _E,      _A,      _I,          \
+           _X, _Q, _B, _F, _Z,   _P, _C, TL_QUOT, TL_COMM, TL_SCLN )
+
+/* rsht/iena */
+/* jfldv @uopq */
+/* zrshtg   .iena: */
+/* xcmwk  /y,b?       */
+
+// pine
+/* y l r d w  j m o u ,  */
+/* c s n t g  p h a e i  */
+/* x z q v k  b f ' / .  */

+ 58 - 0
users/ericgebhart/base_layers/base_layers.h

@@ -0,0 +1,58 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+#include "keycodes.h"
+#include "lang_map.h"
+#include "oled_stuff.h"
+
+
+// an empty template.
+
+/* #define CARTE_EMPTY                \ */
+/*   carte_de_map("  ",               \ */
+/*                "  ",               \ */
+/*                "  ") */
+/*                      */
+/* #define ___EMPTY___                             \ */
+/*   LANG_MAP(_, _, _, _, _,   _, _, _, _, _,      \ */
+/*            _, _, _, _, _,   _, _, _, _, _,      \ */
+/*            _, _, _, _, _,   _, _, _, _, _)        */
+
+
+// dvorak, capewell-dvorak, ahei, and boo.
+#include "dvorak.h"
+//qwerty, workman, norman,
+#include "qwerty.h"
+// Colemak, halmak, minimak, etc.
+#include "maks.h"
+// eucalyn, maltron
+#include "alt.h"
+// mtgap, ctgap, apt
+#include "gap.h"
+// some hands down.
+#include "hands_down.h"
+// some beakls.
+#include "beakl.h"
+// bepo, optimot, beakl19bis, godox-fr?.
+#include "bepo.h"
+// some carpalxs.
+#include "carpalx.h"
+// The symbol, number function rows for all the above.
+#include "toprows.h"
+// some layers with accents and dead keys.
+#include "accents.h"

+ 158 - 0
users/ericgebhart/base_layers/beakl.h

@@ -0,0 +1,158 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+// beakl, balanced effort key layout.
+// Beakl 15 and 19 are somewhat more related.
+// Beakl-wi is the latest. It feels a little bit more like a system.
+
+
+// Remember the - and ; outside pinky keys.
+// Or use the 6 size.
+// Both are on the symbol layer too. So you
+// wont lose them at least.
+// KC_BK_COMM, KC_BK_QUOT, KC_BK_DOT - Beakl->Qwerty
+// BP_BK_COMM, BP_BK_QUOT, BP_BK_DOT - Beakl->Bepo
+// take care of the different shifted chars.
+
+
+/* BEAKL 27 (main layer): */
+/* // altered shifted pairs: dot = .`  comma = ,?   dquot = !" */
+/* Alt target is BK2 */
+
+/* 32104 76598 */
+/* qhoux gcmrv */
+/* yiea. dstnb */
+/* j",k' wflpz */
+
+/* BEAKL 27 (shift layer): */
+/*   !@$#% ^(*)& */
+/*   QHOUX GCMRV */
+/*   YIEA` DSTNB */
+/*   J!?K' WFLPZ */
+
+
+#define CARTE_BEAKL27                           \
+  carte_de_map(" qhoux gcmrz ",                 \
+               " yiea. dstnb ",                 \
+               " j\",k' wflpv ")
+
+// Alt target is BK
+#define ___BEAKL27___                                                   \
+  LANG_MAP(_Q, _H,      _O,      _U, _X,      _G, _C, _M, _R, _Z,       \
+           _Y, _I,      _E,      _A, TL_DOT,  _D, _S, _T, _N, _B,       \
+           _J, TL_EXLM, TL_COMM, _K, TL_QUOT, _W, _F, _L, _P, _V)
+
+/* BEAKL 15 (main layer): */
+// altered shifted pairs: quot = '`  comma = ,!   dot = .@
+/*   40123 76598   */
+#define CARTE_BEAKL15                           \
+  carte_de_map(" qhoux gcrfz ",                 \
+               " yiea. dstnb ",                 \
+               " j/,k' wmlpv ")
+
+// Alt target is BK
+#define ___BEAKL15___                                           \
+  LANG_MAP(_Q, _H,    _O,      _U, _X,      _G, _C, _R, _F, _Z, \
+           _Y, _I,    _E,      _A, TL_DOT,  _D, _S, _T, _N, _B, \
+           _J, _SLSH, TL_COMM, _K, TL_QUOT, _W, _M, _L, _P, _V)
+
+/* BEAKL 19    */
+// Beakl 19.  scores better than 15, better in french also.
+// Both are lots better than dvorak or bepo.
+
+/* same symbols and keypad as 15 */
+/* number row is different */
+/*  32104 76598  */
+
+// Alt target is BK
+#define CARTE_BEAKL19                           \
+  carte_de_map(" q.ouj wdnm, ",                 \
+               " haeik gsrtp ",                 \
+               " z'/yx bclfv ")
+
+#define ___BEAKL19___                                                   \
+  LANG_MAP(_Q, _DOT,  _O,    _U, _J, _W,    _D, _N, _M, TL_COMM,        \
+           _H, _A,    _E,    _I, _K, _G,    _S, _R, _T, _P,             \
+           _Z, _QUOT, _SLSH, _Y, _X, _B,    _C, _L, _F, _V)
+
+//BEAKL 19bis - original.
+// the é and è were simply added for analysis not real use.
+// even so, this layout scores well for french, better than
+// bepo and mtgap
+/*  qyouz  wdnck   */
+/* -hiea,  gtrsp; */
+/* èj'é.x  vmlfb   */
+
+// A 3x12
+//BEAKL 19bis mod z.
+// French optimised with some english.
+// This version rearranges things a little based on fequency.
+// Since it needs 3x12, I filled in the corners and removed ;.
+// Leaving y where it is. the o and the e might cause sfbs.
+// Put é on a different finger from e.
+// swap z, e's, add à, ^, and ê, swap ; for -.
+// it might be beneficial to swap w and à, as à is much more frequent than w
+#define CARTE_BEAKL19bis                        \
+  carte_de_map(" àqyoué  wdnck^ ",              \
+               " ;hiea,  gtrsp- ",              \
+               " zj'è.x  vmlfbê  ")
+
+#define ___BEAKL19bis_3x12___                                           \
+  LANG_MAP6(                                                            \
+            _AGRV, _Q, _Y,    _O,    _U,   _EACU,   _W, _D, _N, _C, _K, _DCIR, \
+            _SCLN, _H, _I,    _E,    _A,   _COMM,   _G, _T, _R, _S, _P, _MINS, \
+            _Z,    _J, _QUOT, _EGRV, _DOT, _X,      _V, _M, _L, _F, _B, _ECIR)
+
+
+// Beakl Wi.   This is the most current beakl this size. 18/01/2022.
+// Nothing on the 6th outer columns but layer toggle buttons. All 6.
+// altered shifted pairs: dot = .` comma = ,~  colon = :;
+// i is on the left thumb.
+/* ;you- ctrsv */
+/* qheaw gdnmz */
+/* j,.k' bplfx */
+/*    i        */
+
+#define CARTE_BEAKLWI                           \
+  carte_de_map(" ;you- ctrsv ",                 \
+               " qheaw gdnmz ",                 \
+               " j,.k' bplfx i")
+
+#define ___BEAKLWI___                                                   \
+  LANG_MAP(TL_COLN, _Y,      _O,     _U, _MINS,   _C, _T, _R, _S, _V,   \
+           _Q,      _H,      _E,     _A, _W,      _G, _D, _N, _M, _Z,   \
+           _J,      TL_COMM, TL_DOT, _K, _QUOT,   _B, _P, _L, _F, _X)
+
+// Thumbs.
+#define ___BEAKLWI_CRKBD_THUMBS___ LT_ESC, LT_I, LT_TAB,  LT_ENT, LT_SPC, LT_BSPC
+
+// My version, loses KC_mins, because it's easier on my symbol layer.
+// put I in it's dvorak spot instead of thumbs, move W up to make room for I.
+// I'd rather have w and i on different fingers. One domino...
+
+// beakl-wi - mod iw-
+
+#define CARTE_BEAKLWIa                          \
+  carte_de_map(" ;youw ctrsv ",                 \
+               " qheai gdnmz ",                 \
+               " j,.k' bplfx ")
+
+// Alt target is BKW
+#define ___BEAKLWIa___                                                  \
+  LANG_MAP(TL_COLN, _Y,      _O,     _U, _W,      _C, _T, _R, _S, _V,   \
+           _Q,      _H,      _E,     _A, _I,      _G, _D, _N, _M, _Z,   \
+           _J,      TL_COMM, TL_DOT, _K, _QUOT,   _B, _P, _L, _F, _X)

+ 114 - 0
users/ericgebhart/base_layers/bepo.h

@@ -0,0 +1,114 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+// Maps based on BEPO  Mostly 3x12
+
+// BEAKL 19bis - English with French optimisations.
+// Least used letters in french xzykw QJÀ are fairly high.
+// XZ are good choices for pushing out, from english and french,
+// or using chords in both languages.
+
+// Note: The percentages came from different sources so do not
+// match between languages.
+// French
+/* Q	0.89 % */
+/* J	0.71 % */
+/* À	0.54 % */
+/*-------------*/
+/* X	0.42 % */
+/* È	0.35 % */
+/* Ê	0.24 % */
+/* Z	0.21 % */
+/* Y	0.19 % */
+/* K	0.16 % */
+/* Ô	0.07 % */
+/* Û	0.05 % */
+/* W	0.04 % */
+
+/* Least used letters in english. */
+/* X	0.2902%	1.48 */
+/* Z	0.2722%	1.39 */
+/* J	0.1965%	1.00 */
+/* Q	0.1962%	(1) */
+
+
+// OPtimot by @Pyjam.
+/*  àjoéb fdl’qxz */
+/*  aieu, ptsrn^ç */
+/* êkyè.w gcmhvz */
+
+// -- rearranged z, and ç to get 3x12
+#define CARTE_OPTIMOT                           \
+  carte_de_map(" çàjoéb fdl’qx ",               \
+               "  aieu, ptsrn^ ",               \
+               " êkyè.w gcmhvz ")
+
+#define ___OPTIMOT_3x12___                                              \
+  LANG_MAP6(                                                            \
+            _CCED, _AGRV, _J, _O,    _EACU, _B,     _F, _D, _L, _QUOT, _Q,  _X, \
+            _TAB,  _A,    _I, _E,    _U,    _COMM,  _P, _T, _S, _R,    _N,  _DCIR, \
+            _ECIR, _K,    _Y, _EGRV, _DOT,  _W,     _G, _C, _M, _H,    _V,  _Z)
+
+// no z or x. combos exist for them.
+#define CARTE_OPTIMOT_COMPACT                  \
+  carte_de_map(" àjoéb fdl’q ",                \
+               " aieu, ptsrn ",                \
+               " kyè.w gcmhv ")
+
+#define ___OPTIMOT_3x10___                                             \
+  LANG_MAP6(                                                           \
+            _AGRV, _J, _O,    _EACU, _B,     _F, _D, _L, _QUOT, _Q,    \
+            _A,    _I, _E,    _U,    _COMM,  _P, _T, _S, _R,    _N,    \
+            _K,    _Y, _EGRV, _DOT,  _W,     _G, _C, _M, _H,    _V,)
+
+// Maybe Use this for C
+//BP_C_CCED = MT(BP_CCED, BP_C)
+
+// BEPO
+
+// No quot, à or ç
+/* bépoè vdljz */
+/* auie, ctsrn */
+/* myx.k qghfw */
+#define CARTE_BEPOc                             \
+  carte_de_map("   bépoè  vdljz",               \
+               "   auie,  ctsrn",               \
+               "   myx.k  qghfw")
+
+#define ___BEPOc_3x10___                                        \
+  LANG_MAP(                                                     \
+           _B, _EACU, _P, _O,   _EGRV,    _V, _D, _L, _J, _Z,   \
+           _A, _U,    _I, _E,   _COMM,    _C, _T, _S, _R, _N,   \
+           _M, _Y,    _X, _DOT, _K,       _Q, _G, _H, _F, _W)
+
+
+#define CARTE_BEPO                              \
+  carte_de_map(" çbépoè ^vdljz ",               \
+               "  auie, ctsrnm ",               \
+               " êàyx.k ’qghfw ")
+
+#define ___BEPO_3x12___                                                 \
+  LANG_MAP6(_CCED, _B,    _EACU, _P, _O,   _EGRV,    _DCIR, _V, _D, _L, _J, _Z, \
+            _TAB,  _A,    _U,    _I, _E,   _COMM,    _C,    _T, _S, _R, _N, _M, \
+            _ECIR, _AGRV, _Y,    _X, _DOT, _K,       _QUOT, _Q, _G, _H, _F, _W)
+
+// dont like this one much.
+/* #define ___GODOX_3x12___                                                \ */
+/*   LANG_MAP6(___, _AGRV, _B, _EACU, _dot, _mins,    _DCIR, _V, _L,  _M, _X, _CCED, \ */
+/*             ___,  _O,   _U, _I,    _A,   _J,       _G,    _T, _S,  _N, _R, _F, \ */
+/*             ___, _Q,    _Y, _EGRV, _P,   _K,       _W,    _D, _UP, _H, _C, _Z) */
+/* // E goes on left thumb. */

+ 46 - 0
users/ericgebhart/base_layers/carpalx.h

@@ -0,0 +1,46 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+#define CARTE_CARPALX_QFMLWY                    \
+  carte_de_map("   qfmlw  yuobj",               \
+               "   dstnr  iaeh;",               \
+               "   zvgcx  pk,./")
+
+#define ___CARPALX_QFMLWY___                                            \
+  LANG_MAP(_Q, _F, _M, _L, _W,   _Y, _U, _O,      _B,     _J,           \
+           _D, _S, _T, _N, _R,   _I, _A, _E,      _H,     TL_SCLN,      \
+           _Z, _V, _G, _C, _X,   _P, _K, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_CARPALX_QFMLWB                    \
+  carte_de_map("   qgmlw  byuv;",               \
+               "   dstnr  iaeoh",               \
+               "   zxcfj  kp,./")
+
+#define ___CARPALX_QGMLWB___                                            \
+  LANG_MAP(_Q, _G, _M, _L, _W,   _B, _Y, _U,      _V,     TL_SCLN,      \
+           _D, _S, _T, _N, _R,   _I, _A, _E,      _O,     _H,           \
+           _Z, _X, _C, _F, _J,   _K, _P, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_CARPALX_QGMLWY                    \
+  carte_de_map("   qgmlw  yfub;",               \
+               "   dstnr  iaeoh",               \
+               "   zxcvj  kp,./")
+
+#define ___CARPALX_QGMLWY___                                            \
+  LANG_MAP(_Q, _G, _M, _L, _W,   _Y, _F, _U,      _B,     TL_SCLN,      \
+           _D, _S, _T, _N, _R,   _I, _A, _E,      _O,     _H,           \
+           _Z, _X, _C, _V, _J,   _K, _P, TL_COMM, TL_DOT, TL_SLSH)

+ 73 - 0
users/ericgebhart/base_layers/dvorak.h

@@ -0,0 +1,73 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+#define CARTE_DVORAK                            \
+  carte_de_map(" ',.py fgcrl ",                 \
+               " aoeui dhtns ",                 \
+               " ;qjkx bmwvz ")
+
+#define ___DVORAK___                                                    \
+  LANG_MAP(TL_QUOT,  TL_COMM, TL_DOT, _P,  _Y,   _F, _G, _C, _R, _L,    \
+           _A,       _O,      _E,     _U,  _I,   _D, _H, _T, _N, _S,    \
+           TL_SCLN,  _Q,      _J,     _K,  _X,   _B, _M, _W, _V, _Z)
+
+#define CARTE_DVORAK_RLC_IU                     \
+  carte_de_map(" ',.py fgrlc ",                 \
+               " aoeiu dhtns ",                 \
+               " ;qjkx bmwvz ")
+
+#define ___DVORAK_RLC_IU___                                             \
+  LANG_MAP(TL_QUOT,  TL_COMM, TL_DOT, _P,  _Y,   _F, _G, _R, _L, _C,    \
+           _A,       _O,      _E,     _I,  _U,   _D, _H, _T, _N, _S,    \
+           TL_SCLN,  _Q,      _J,     _K,  _X,   _B, _M, _W, _V, _Z)
+
+#define CARTE_BOO                               \
+  carte_de_map("  ,.ucv  qfdly",                \
+               "  aoesg  bntri",                \
+               "  ;x'wz  phmkj")
+
+#define ___BOO___                                                       \
+  LANG_MAP( TL_COMM, TL_DOT, _U,      _C, _V,   _Q, _F, _D, _L, _Y,     \
+            _A,      _O,     _E,      _S, _G,   _B, _N, _T, _R, _I,     \
+            TL_SCLN, _X,     TL_QUOT, _W, _Z,   _P, _H, _M, _K, _J)
+
+#define CARTE_CAPEWELL_DVORAK                   \
+  carte_de_map( "  ',.py  qfgrk",               \
+                "  oaeiu  dhtns",               \
+                "  zxcvj  lmwb;")
+
+#define ___CAPEWELL_DVORAK___                                           \
+  LANG_MAP(TL_QUOT, TL_COMM, TL_DOT, _P, _Y,   _Q, _F, _G, _R, _K,      \
+           _O,      _A,      _E,     _I, _U,   _D, _H, _T, _N, _S,      \
+           _Z,      _X,      _C,     _V, _J,   _L, _M, _W, _B, TL_SCLN)
+
+//ahei - derived from dvorak.
+// x moved to left side. j on pinky.
+/*;pouyq gdlm/= */
+/* ahei, fstnr- */
+/* j'k.x bcwvz */
+
+#define CARTE_AHEI                              \
+  carte_de_map("pouyq  gdlm/",                  \
+               "ahei,  fstnr",                  \
+               "j'k.x  bcwvz")
+
+#define ___AHEI___                                                      \
+LANG_MAP(_P, _O,      _U, _Y,     _Q,       _G, _D, _L, _M, TL_SLSH, \
+         _A, _H,      _E, _I,     TL_COMM,  _F, _S, _T, _N, _R,      \
+         _J, TL_QUOT, _K, TL_DOT, _X,       _B, _C, _W, _V, _Z)

+ 67 - 0
users/ericgebhart/base_layers/gap.h

@@ -0,0 +1,67 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+// an alternate I found.
+/* Reference: MTGAP */
+/* y p o u - | b d l c k j */
+/* i n e a , | m h t s r v */
+/* ( " ' . _ | ) f w g x */
+/*   z */
+
+#define CARTE_MTGAP                             \
+  carte_de_map("   ypouj  kdlcw",               \
+               "   inea,  mhtsr",               \
+               "   qz/.;  bfgvx")
+
+#define ___MTGAP___                                                     \
+  LANG_MAP(_Y, _P, _O,      _U,     _J,        _K, _D, _L, _C, _W,      \
+           _I, _N, _E,      _A,     TL_COMM,   _M, _H, _T, _S, _R,      \
+           _Q, _Z, TL_SLSH, TL_DOT, TL_SCLN,   _B, _F, _G, _V, _X)
+
+/* //APT v3*/
+/* https://github.com/Apsu/APT */
+#define CARTE_APT                               \
+  carte_de_map("   wgdfb  qluoy",               \
+               "   rsthk  jneai; ",             \
+               "   xcmpv  z,.'/")
+
+#define ___APT___                                                       \
+  LANG_MAP(_W, _G, _D, _F, _B,    _Q, _L, _U, _O, _Y,                   \
+           _R, _S, _T, _H, _K,    _J, _N, _E, _A, _I, TL_SCLN,          \
+           _X, _C, _M, _P, _V,    _Z, TL_COMM, TL_DOT, TL_QUOT, TL_SLSH)
+
+
+#define CARTE_CTGAP                             \
+  carte_de_map("  vplcf  kuoyj",                \
+               "  rntsd  'aeih",                \
+               "  zbmgw  x,.;q")
+
+#define ___CTGAP___                                                     \
+  LANG_MAP(_V, _P, _L, _C, _F,   _K,      _U,      _O,     _Y,      _J, \
+           _R, _N, _T, _S, _D,   TL_QUOT, _A,      _E,     _I,      _H, \
+           _Z, _B, _M, _G, _W,   _X,      TL_COMM, TL_DOT, TL_SCLN, _Q)
+
+#define CARTE_CANARY                                           \
+  carte_de_map( "  wlypb   zfou'",                                 \
+                "  crstg   mneia",                                 \
+                "  qjvd    kxh/,.")
+
+#define ___CANARY___                                                    \
+  LANG_MAP(_W, _L, _Y, _P, _B, _Z, _F, _O,      _U,      TL_QUOT,       \
+           _C, _R, _S, _T, _G, _M, _N, _E,      _I,      _A,            \
+           _Q, _J, _V, _D, _K, _X, _H, TL_SLSH, TL_COMM, TL_DOT)

+ 147 - 0
users/ericgebhart/base_layers/hands_down.h

@@ -0,0 +1,147 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+// https://sites.google.com/alanreiser.com/handsdown/home
+
+// The only 3x12 layout. The rest are 3x10.
+#define CARTE_HD_NEU                            \
+  carte_de_map( "  wfmpv  /.q\"'z",            \
+                "  rsntb  ,aeihj",             \
+                "  xcldg  -uoykK")
+
+#define ___HD_NEU___                                                    \
+  LANG_MAP(_SML_NAV,   _W, _F, _M, _P, _V , TL_SLSH, TL_DOT, _Q, TL_DQUO, TL_QUOT, _Z, \
+           _TAB,       _R, _S, _N, _T, _B , TL_COMM, _A,     _E, _I,      _H,    _J, \
+           _OS_ACCENT, _X, _C, _L, _D, _G , TL_MINS, _U,     _O, _Y,      _K, _SML_KEYPAD)
+
+
+// modified to fit 3x10.
+#define CARTE_HD_NEU_NARROW                     \
+  carte_de_map("   xcldb  zuoyq",               \
+               "   rsntg  ,aeih",               \
+               "   wfmpv  ;./jk")
+
+#define ___HD_NEU_NARROW___                                             \
+  LANG_MAP(_X, _C, _L, _D, _B,   _Z,      _U,     _O,      _Y, _Q,      \
+           _R, _S, _N, _T, _G,   TL_COMM, _A,     _E,      _I, _H,      \
+           _W, _F, _M, _P, _V,   _SCLN, TL_DOT, TL_SLSH, _J, _K)
+
+
+#define CARTE_HD_REF                            \
+  carte_de_map("    qchpv   kyoj/",             \
+               "    rsntg   wueia",             \
+               "    xmldb   zf',.")
+
+#define ___HD_REF___                                                    \
+  LANG_MAP(_Q, _C, _H, _P, _V,   _K, _Y, _O,      _J,       TL_SLSH,    \
+           _R, _S, _N, _T, _G,   _W, _U, _E,      _I,       _A,         \
+           _X, _M, _L, _D, _B,   _Z, _F, TL_QUOT, TL_COMM,  TL_DOT )
+
+
+// All of these have a consonant or vowel on the thumb keys.
+
+/* alt shift keys "? '!  dash and elan */
+/* (< {[  - elan                       */
+/* dash has thumbs of ,; and .:        */
+/* dash and the rest get these too.    */
+/* alt shifts   ;: .& /\* '? "! ,| -+  */
+/* COMBOS - z = jg, z=vg, q=uk, q=mp.  */
+
+
+// no z or q, use combos.
+#define CARTE_HD_TITANIUM                       \
+  carte_de_map("  jgmpv  ;./\"' ",              \
+               "  csntw  ,aeih ",               \
+               "  xfldb  -uoyk  r")
+
+#define ___HD_TITANIUM___                                               \
+  LANG_MAP(_J, _G, _M, _P, _V,  TL_SCLN, TL_DOT, TL_SLSH, TL_DQUO, TL_QUOT, \
+           _C, _S, _N, _T, _W , TL_COMM, _A, _E, _I, _H,                \
+           _X, _F, _L, _D, _B , TL_MINS, _U, _O, _Y, _K)
+
+
+#define CARTE_HD_GOLD                                           \
+  carte_de_map("  jgmpv  ;./\"' ",                              \
+               "  rsndb  ,aeih ",                               \
+               "  xflcw  -uoyk  t")
+
+#define ___HD_GOLD___                                                   \
+  LANG_MAP(_J, _G, _M, _P, _V,  TL_SCLN, TL_DOT, TL_SLSH, TL_DQUO, TL_QUOT, \
+           _R, _S, _N, _D, _B , TL_COMM, _A, _E, _I, _H,                \
+           _X, _F, _L, _C, _W , TL_MINS, _U, _O, _Y, _K)
+/* t, ␣ */
+
+/* jz pq alt shifts   ;: .& /\* '? "! ,| -+ */
+
+#define CARTE_HD_PLATINUM                       \
+  carte_de_map( "jghpv   ;./'\"",               \
+                "rsntb   ,aeic",                \
+                "xfmdk   -uowy  l")
+/* l   ␣   */
+
+#define ___HD_PLATINUM___                                               \
+  LANG_MAP(_J, _G, _H, _P, _V,  TL_SCLN, TL_DOT, TL_SLSH, TL_QUOT, TL_DQUO, \
+           _R, _S, _N, _T, _B,  TL_COMM, _A, _E, _I, _C,                \
+           _X, _F, _M, _D, _K,  TL_MINS, _U, _O, _W, _Y)
+
+#define CARTE_HD_SILVER                         \
+  carte_de_map("jgmpv   ;./'\"",                \
+               "rshtb   ,aeic",                 \
+               "xfldk   -uowy  n")
+/* n   ␣   */
+
+#define ___HD_SILVER___                                 \
+  LANG_MAP(_J, _G, _M, _P, _V,  TL_SCLN, TL_DOT, TL_SLSH, TL_QUOT, TL_DQUO, \
+           _R, _S, _H, _T, _B,  TL_COMM, _A, _E, _I, _C,                \
+           _X, _F, _L, _D, _K,  TL_MINS, _U, _O, _W, _Y)
+
+#define CARTE_HD_BRONZE                         \
+  carte_de_map("jgmpv   ;./'\"",                \
+               "rsntb   ,aeic",                 \
+               "xfldk   -uowy  h")
+/* h   ␣   */
+
+#define ___HD_BRONZE___                                 \
+  LANG_MAP(_J, _G , _M, _P, _V , TL_SCLN, TL_DOT, TL_SLSH , TL_QUOT, TL_DQUO, \
+           _R, _S, _N, _T, _B , TL_COMM, _A, _E, _I, _C,                \
+           _X, _F, _L, _D, _K , TL_MINS, _U, _O, _W, _Y)
+
+#define CARTE_HD_ELAN                          \
+  carte_de_map("vghpk   /({'\"",               \
+               "rsntf   jaeci",                \
+               "xmldb   -uowy")
+/* ,; .:  ␣  ⏎ */
+
+/* vz g  h  p  kq  /\* (< {[ '! "? */
+/* TL_COMM; TL_DOT:  _␣  ⏎ */
+#define ___HD_ELAN___                                                   \
+  LANG_MAP(_V, _G, _H, _P, _K,   TL_SLSH, TL_LPRN, TL_LCBR, TL_QUOT, TL_DQUO, \
+           _R, _S, _N, _T, _F,   _J, _A, _E, _C, _I,                    \
+           _X, _M, _L, _D, _B,   TL_MINS, _U, _O, _W, _Y)
+
+
+#define CARTE_HD_DASH                          \
+    carte_de_map("jgmpv   ;.'\"/",             \
+                 "rsntb   ,haoi",              \
+                 "xcldw   -fuky  e")
+    /*   e   ␣   */
+
+#define ___HD_DASH___                                                   \
+  LANG_MAP(_J, _G, _M, _P, _V , TL_SCLN, TL_DOT, TL_QUOT, TL_DQUO, TL_SLSH, \
+           _R, _S, _N, _T, _B , TL_COMM, _H, _A, _O, _I,                \
+           _X, _C, _L, _D, _W , TL_MINS, _F, _U, _K, _Y)

+ 300 - 0
users/ericgebhart/base_layers/keymaps.txt

@@ -0,0 +1,300 @@
+/*
+This file can be commented by blocks or single lines using //
+Blank lines are ignored
+*/
+/*
+Bigram frequencies in stats.csv
+*/
+
+[keys]
+L21 L22 L23 L24 L25 L26 R26 R25 R24 R23 R22 R21
+L31 L32 L33 L34 L35 L36 R36 R35 R34 R33 R32 R31
+L41 L42 L43 L44 L45 L46 R46 R45 R44 R43 R42 R41
+
+[weights]
+5.0 3.6 2.4 1.8 2.2 3.5 3.5 2.2 1.8 2.4 3.6 5.0
+4.0 1.6 1.2 1.0 1.0 3.0 3.0 1.0 1.0 1.2 1.6 4.0
+5.0 3.4 2.6 2.2 1.8 4.0 4.0 1.8 2.2 2.6 3.4 5.0
+
+/*
+Weights should:
+- limit weak fingers
+- limit bottom row
+- increase home row
+- limit finger travel distance
+
+https://colemakmods.github.io/mod-dh/compare.html
+*/
+
+[penalties]
+  ,same_row,row_jump1,row_jump2
+ii,      2.5,     3.5,      4.5  // same finger
+im,      0.5,     1.0,      2.0
+ir,      0.5,     0.8,      1.5
+ip,      0.5,     0.8,      1.1
+mi,     -1.5,    -0.5,      1.5  // inward roll
+mm,      2.5,     3.5,      4.5  // same finger
+mr,      0.5,     1.0,      2.0
+mp,      0.5,     0.8,      1.5
+ri,     -1.5,    -0.5,      1.5  // inward roll
+rm,     -2.0,    -0.5,      1.2  // inward roll
+rr,      2.5,     3.5,      4.5  // same finger
+rp,      1.0,     1.5,      2.5
+pi,     -1.0,     0.0,      1.0  // inward roll
+pm,     -1.0,     0.0,      1.5  // inward roll
+pr,     -1.0,     0.0,      1.5  // inward roll
+pp,      3.0,     4.0,      5.5  // same finger
+
+/*
+Only apply if not the same letter, and both letters on the same hand.
+
+i, m, r, and p refer to the fingers (index, middle, ring, pinky)
+The columns refer to how many rows separate the two keys
+
+Penalties should:
+- limit same finger typing (except same key twice)
+- balance hands
+- favor inward rolling
+(last 2 in opposition with each other)
+*/
+
+[layouts]
+
+>>Qwerty
+# q w e r t y i o u p #
+é a s d f g h j k l ; '
+è z x c v b n m , . / -
+
+>>Azerty
+è a z e r t y u i o p ^
+' q s d f g h j k l m ù
+é w x c v b n , . : ! -
+
+>>Qwertz
+# q w e r t z u i o p ü
+é a s d f g h j k l ö ä
+è y x c v b n m , . - '
+
+>>Bépo 40%
+# b é p o è ^ v d l j z
+- a u i e , c t s r n m
+ç à y x . k ' q g h f w
+
+// https://github.com/TeXitoi/keyberon#whats-the-layout
+>>Bépo keyberon
+# b é p o è ^ v d l j z
+w a u i e , c t s r n m
+- à y x . k ' q g h f ç
+
+>>Dvorak
+- ' , . p y f g c r l #
+é a o e u i d h t n s #
+è ; q j k x b m w v z #
+
+>>Colemak
+# q w f p g j l u y ; #
+é a r s t d h n e i o '
+è z x c v b k m , . / -
+
+>>Colemak DH
+# q w f p b j l u y ; #
+é a r s t g m n e i o '
+è z x c d v k h , . / -
+
+>>Colemak DH mod
+# q w f p b j l u y é è
+# a r s t g m n e i o -
+# z x c d v k h , . ' /
+
+>>Workman
+# q d r w b j f u p ; #
+é a s h t g y n e o i '
+è z x m c v k l , . / -
+
+>>Norman
+# q w d f k j u r l ; #
+é a s e t g y n i o h '
+è z x c v b p m , . / -
+
+>>Carpalx
+# q g m l w b y u v ; é
+è d s t n r i a e o h '
+# z x c f j k p , . / -
+
+>>Neo
+- x v l c w k h g f q ß
+é u i a e o s n r t d y
+è ü ö ä p z b m , . j '
+
+// http://mkweb.bcgsc.ca/carpalx/?full_optimization
+>>qgmlwyfub
+# q g m l w y f u b ; é
+è d s t n r i a e o h '
+# z x c v j k p , . / -
+
+// https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/
+>>MTGAP
+# y p o u j k d l c w #
+é i n e a , m h t s r '
+è q z / . : b f g v x -
+
+// http://mtgap.bilfo.com/official_keyboard.html
+// http://mtgap.bilfo.com/completed_keyboard.html
+>>MTGAP 2.0
+# , f h d k j c u l . #
+é o a n t g m s e r i -
+è q x b p z y w ' v ; #
+
+>>MTGAP "Easy"
+# q w l d b j f u k p #
+é a s r t g h n e o i -
+è z x c v ; y m , . / '
+
+>>MTGAP "shortcuts"
+# k g l d b j h u f . #
+é r o t s w m n e a i -
+è z x v c q y p , ' ; #
+
+>>MTGAP "standard"
+# k l h c b j d u f . #
+é o r n s g w t e a i -
+è x q v m z y p , ' ; #
+
+>>MTGAP "ergonomic"
+# . f u d j q h c w k #
+é i a e t p l n s r o -
+è ' , y g z - m b v x #
+
+// https://geekhack.org/index.php?topic=67604.0
+>>Oneproduct
+# p l d w g j x o y q è
+- n r s t m u a e i h '
+# z c f v b , . ? ; k é
+
+// https://bepo.fr/wiki/Utilisateur:Bibidibop
+>>Coeur
+# é w o p y b ' d l j z
+x a u e i , c t s r n h
+# - à è . k g m f q v #
+
+// https://geekhack.org/index.php?topic=98275.0
+>>Kaehi
+# q w l d g j u o p / é
+è n r s t m k a e h i '
+# z x c v b y f , . ; -
+
+// https://deskthority.net/wiki/BEAKL
+>>BEAKL 15
+é q h o u x g c r f z #
+- y i e a . d s t n b ;
+è j / , k ' w m l p v #
+
+// https://web.archive.org/web/20190906220509/http://shenafu.com/smf/index.php?topic=89.msg2566#msg2566
+>>BEAKL 19
+é q . o u j w d n m , #
+- h a e i k g s r t p ;
+è z ' / y x b c l f v #
+
+// https://www.reddit.com/r/ErgoDoxEZ/comments/gsvpug/layout_of_the_month_beakl_15/ftcan68/?context=3
+>>BEAKL 19bis
+# q y o u z w d n c k #
+- h i e a , g t r s p ;
+è j ' é . x v m l f b #
+
+// https://www.reddit.com/r/ErgoMechKeyboards/comments/j1eopm/hands_down_layout_is_ready_for_daily_use/g7bjmr7/?context=3
+>>BEAKL 19 Opt French
+# w m r d v y u o q x #
+# g s n t p , i e a h -
+# k f l c b j é ' . z è
+
+// http://millikeys.sourceforge.net/asset/
+>>ASSET
+# q w j f g y p u l ; #
+é a s e t d h n i o r '
+è z x c v b k m , . / -
+
+// https://sourceforge.net/projects/qwpr/
+>>Qwpr
+# q w p r f y u k l ; #
+é a s d t g h n i o e '
+è z x c v b j m , . / -
+
+// http://www.minimak.org/
+>>Minimak-8key
+# q w d r k y u i l p #
+é a s t f g h n e o ; '
+è z x c v b j m , . / -
+
+// https://github.com/mw8/white_keyboard_layout
+// adapted to ergo keyboard
+>>White
+# v y d , ' j m l u ( )
+é a t h e b c s n o i -
+è p k g w q x r f . z #
+
+// https://github.com/jackrosenthal/threelayout
+>>Three
+# q f u y z x k c w b #
+é o h e a i d r t n s -
+è , m . j ; g l p v ' #
+
+//https://sites.google.com/alanreiser.com/handsdown
+>>Hands down
+# q c h g j y f o b ' #
+é s n r t p w u e i a #
+è x m l d z v k . , ; -
+
+//https://sites.google.com/alanreiser.com/handsdown
+>>Notarize
+# q w d f p y u k l ' #
+é a s t e g h n i o r #
+è z x c v b j m . , ; -
+
+// http://kennetchaz.github.io/symmetric-typing/soul.html
+>>Soul mod
+# q w l d p k m u y ; '
+è a s r t g f n e i o é
+# j z x c v b h , . / -
+
+// http://kennetchaz.github.io/symmetric-typing/niro.html
+>>Niro mod
+# q w u d p j f y l ; #
+é a s e t g h n i r o '
+è b z x c v k m , . / -
+
+// https://docs.google.com/document/d/1yiCnIi1oagV1D8ZouMt-TRFRG8d6AfSBIwQkBvSflvY/edit
+>>The-1
+# k m l u ? v d r ' q #
+é a t h e . c s n o i -
+è z p f j , b g w x y /
+
+// https://engram.dev
+>>Engram 2.0
+# b y o u ' " l d w v z
+é c i e a , . h t s n q
+è g x j k - ? r m f p #
+
+// https://github.com/MadRabbit/halmak
+>>Halmak
+# w l r b z ; q u d j #
+é s h n t , . a e o i '
+è f m v c / g p x k y -
+
+// https://keyboard-design.com/letterlayout.html?layout=optimal-digram.en.ansi
+>>Optimal digram
+# q y u . , f m l d p z
+é s i e a o h n r t c g
+è j ) ' ? ( x v w k b -
+
+// https://keyboard-design.com/letterlayout.html?layout=uciea-keyboard.en.ansi
+>>Uciea
+# p y u o - k d h f x q
+é c i e a ' g t n s r v
+è z " , . ; w m l b j -
+
+// https://keyboard-design.com/letterlayout.html?layout=x1.en.ergodox
+// . and , moved
+>>x1
+# k y o ' ! f c l p q z
+é h i e a u d s t n r v
+è j ? . , # w g m b x -

+ 61 - 0
users/ericgebhart/base_layers/maks.h

@@ -0,0 +1,61 @@
+#define CARTE_COLEMAK                           \
+  carte_de_map("   qwfpg  jluy;",               \
+               "   arstd  hneio",               \
+               "   zxcvb  km,./")
+
+#define ___COLEMAK___                                                   \
+  LANG_MAP(_Q, _W, _F, _P, _G,    _J, _L,  _U,      _Y,     TL_SCLN,    \
+           _A, _R, _S, _T, _D,    _H, _N,  _E,      _I,     _O,         \
+           _Z, _X, _C, _V, _B,    _K, _M,  TL_COMM, TL_DOT, TL_SLSH)
+
+
+#define CARTE_COLEMAK_DH                        \
+  carte_de_map("   qwfpb  jluy;",               \
+               "   arstg  mneio",               \
+               "   zxcdv  kh,./")
+
+#define ___COLEMAK_DH___                                                \
+  LANG_MAP(_Q, _W, _F, _P, _B,    _J, _L, _U,      _Y,     TL_SCLN,     \
+           _A, _R, _S, _T, _G,    _M, _N, _E,      _I,     _O,          \
+           _Z, _X, _C, _D, _V,    _K, _H, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_HALMAK                            \
+  carte_de_map("  wlrbz  ;qudj",                \
+               "  shnt,  .aeoi",                \
+               "  fmvc/  gpxky")
+
+#define ___HALMAK___                                            \
+  LANG_MAP(_W, _L, _R, _B, _Z,        TL_SCLN, _Q, _U, _D, _J,  \
+           _S, _H, _N, _T, TL_COMM,   _DOT,    _A, _E, _O, _I,  \
+           _F, _M, _V, _C, TL_SLSH,   _G,      _P, _X, _K, _Y)
+
+#define CARTE_MINIMAK                           \
+  carte_de_map("  qwdrk  yuiop",                \
+               "  astfg  hjel;",                \
+               "  zxcvb  nm,./")
+
+#define ___MINIMAK___                                                   \
+  LANG_MAP(_Q, _W, _D, _R, _K,   _Y, _U, _I,      _O,     _P,           \
+           _A, _S, _T, _F, _G,   _H, _J, _E,      _L,     TL_SCLN,      \
+           _Z, _X, _C, _V, _B,   _N, _M, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_MINIMAK_8                         \
+  carte_de_map("  qwdrk  yuilp",                \
+               "  astfg  hneo;",                \
+               "  zxcvb  jm,./")
+
+#define ___MINIMAK_8___                                                 \
+  LANG_MAP(_Q, _W, _D, _R, _K,   _Y, _U, _I,      _L,     _P,           \
+           _A, _S, _T, _F, _G,   _H, _N, _E,      _O,     TL_SCLN,      \
+           _Z, _X, _C, _V, _B,   _J, _M, TL_COMM, TL_DOT, TL_SLSH)
+
+
+#define CARTE_MINIMAK_12                        \
+  carte_de_map("  qwdfk  yuil;",                \
+               "  astrg  hneop",                \
+               "  zxcvb  jm,./")
+
+#define ___MINIMAK_12___                                                \
+  LANG_MAP(_Q, _W, _D, _F, _K,   _Y, _U, _I,      _L,     _SCLN,        \
+           _A, _S, _T, _R, _G,   _H, _N, _E,      _O,     _P,           \
+           _Z, _X, _C, _V, _B,   _J, _M, TL_COMM, TL_DOT, TL_SLSH)

+ 69 - 0
users/ericgebhart/base_layers/qwerty.h

@@ -0,0 +1,69 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+
+// Layer for combo reference. Make more than one by changing lang is.
+#define ___COMBO_REF___                                                 \
+  LANG_MAP(_1L1,  _1L2, _1L3, _1L4,  _1L5,   _1R1, _1R2, _1R3, _1R4, _1R5, \
+           _2L1,  _2L2, _2L3, _2L4,  _2L5,   _2R1, _2R2, _2R3, _2R4, _2R5, \
+           _3L1,  _3L2, _3L3, _3L4,  _3L5,   _3R1, _3R2, _3R3, _3R4, _3R5)
+
+
+#define CARTE_QWERTY                            \
+  carte_de_map("   qwert  yuiop",               \
+               "   asdfg  hjkl;",               \
+               "   zxcvb  nm,./")
+
+// Need TLKC around comm, dot, and quot, and scln
+// Qwerty based layers that I don't really use.
+#define ___QWERTY___                                                    \
+  LANG_MAP(_Q, _W, _E, _R, _T, _Y,  _U,  _I,      _O,     _P,           \
+           _A, _S, _D, _F, _G, _H,  _J,  _K,      _L,     TL_SCLN,      \
+           _Z, _X, _C, _V, _B, _N,  _M,  TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_AZERTY                           \
+  carte_de_map("   azert  yuiop",               \
+               "   qsdfg  hjkl;",               \
+               "   wxcvb  nm,./")
+
+// Need TLKC around comm, dot, and quot, and scln
+// Qwerty based layers that I don't really use.
+#define ___AZERTY___                                                    \
+  LANG_MAP(_A, _Z, _E, _R, _T, _Y,  _U,  _I,      _O,     _P,           \
+           _Q, _S, _D, _F, _G, _H,  _J,  _K,      _L,     TL_SCLN,      \
+           _W, _X, _C, _V, _B, _N,  _M,  TL_COMM, TL_DOT, TL_SLSH)
+
+
+
+#define CARTE_WORKMAN                           \
+  carte_de_map("   qdrwb  jfup;",               \
+               "   ashtg  yneio",               \
+               "   zxmcv  kl,./")
+
+#define ___WORKMAN___                                                   \
+  LANG_MAP(_Q, _D, _R, _W, _B,   _J, _F, _U,      _P,     _SCLN,        \
+           _A, _S, _H, _T, _G,   _Y, _N, _E,      _O,     _I,           \
+           _Z, _X, _M, _C, _V,   _K, _L, TL_COMM, TL_DOT, TL_SLSH)
+
+#define CARTE_NORMAN                            \
+  carte_de_map("   qwdfk  jurl;",               \
+               "   asetg  yniou",               \
+               "   zxcvb  pm,./")
+#define ___NORMAN___                                                    \
+  LANG_MAP(_Q, _W, _D, _F, _K,   _J, _U, _R,      _L,     TL_SCLN,      \
+           _A, _S, _E, _T, _G,   _Y, _N, _I,      _O,     _U,           \
+           _Z, _X, _C, _V, _B,   _P, _M, TL_COMM, TL_DOT, TL_SLSH)

+ 56 - 0
users/ericgebhart/base_layers/toprows.h

@@ -0,0 +1,56 @@
+#pragma once
+/*
+  Copyright 2018-2022 Eric Gebhart <e.a.gebhart@gmail.com>
+
+  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 <http://www.gnu.org/licenses/>.
+*/
+/*******************************************************************/
+/** TOP ROWS  Func,Symbols, Numbers you find there.               **/
+/*******************************************************************/
+// ltkc  language target keycode DV, BK, BKW, NONE
+//   _1 = DV_1 or _1 = BP_DV_1 or KC_1
+#define ___10_NUMBERS___                                \
+  LANG_ROW(_1, _2, _3, _4, _5, _6, _7, _8, _9, _0)
+
+/*  40123 76598  */
+#define ___10_NUMBERS_BEAKL15___                        \
+  LANG_ROW(_4, _0, _1, _2, _3, _7, _6, _5, _9, _8)
+
+/*  32104 76598  */
+#define ___10_NUMBERS_BEAKL19___                        \
+  LANG_ROW(_3, _2, _1, _0, _4, _7, _6, _5, _9, _8)
+
+// a top symbol row if someone wants it.
+#define ___10_SYMBOLS___                                                \
+  LANG_ROW(_EXLM, _AT, _HASH, _DLR, _PERC, _CIRC, _AMPR, _ASTR, _LPRN, _RPRN)
+
+// standard bepo top row
+#define ___10_SYMBOLS_BEPO___                                           \
+  LANG_ROW(_DQUO, _LDAQ, _RDAQ, _LPRN, _RPRN, _AT, _PLUS, _MINS, _SLSH, _ASTR)
+
+#define ___12_SYMBOLS_BEPO___                           \
+  LANG_ROW12(_DLR, _DQUO, _LDAQ, _RDAQ, _LPRN, _RPRN,   \
+             _AT,  _PLUS, _MINS, _SLSH, _ASTR, _EQL)
+
+// function key rows work for everyone.
+#define ___10_FUNCS___                                                  \
+  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10
+
+#define ___12_FUNCS___ ___10_FUNCS___, KC_F11, KC_F12
+
+#define ___10_FUNCS_BEAKL15___                  \
+  KC_F4,   KC_F10,   KC_F1,   KC_F2,   KC_F3,   \
+    KC_F7,   KC_F6,   KC_F5,   KC_F9,   KC_F8
+
+#define ___12_FUNCS_BEAKL15___ KC_F11, ___10_FUNCS_BEAKL15___, KC_F12

+ 0 - 81
users/ericgebhart/caps_word.c

@@ -1,81 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//
-// For full documentation, see
-// https://getreuer.info/posts/keyboards/caps-word
-
-#include "caps_word.h"
-
-bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
-  static bool caps_word_enabled = false;
-  static bool shifted = false;
-#ifndef NO_ACTION_ONESHOT
-  const uint8_t mods = get_mods() | get_oneshot_mods();
-#else
-  const uint8_t mods = get_mods();
-#endif  // NO_ACTION_ONESHOT
-
-  if (!caps_word_enabled) {
-    // Pressing both shift keys at the same time enables caps word.
-    if ((mods & MOD_MASK_SHIFT) == MOD_MASK_SHIFT) {
-      clear_mods();
-#ifndef NO_ACTION_ONESHOT
-      clear_oneshot_mods();
-#endif  // NO_ACTION_ONESHOT
-      shifted = false;
-      caps_word_enabled = true;
-      return false;
-    }
-    return true;
-  }
-
-  if (!record->event.pressed) { return true; }
-
-  if (!(mods & ~MOD_MASK_SHIFT)) {
-    switch (keycode) {
-    case QK_MOD_TAP ... QK_MOD_TAP_MAX:
-    case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
-      // Earlier return if this has not been considered tapped yet.
-      if (record->tap.count == 0) { return true; }
-      // Get the base tapping keycode of a mod- or layer-tap key.
-      keycode &= 0xff;
-    }
-
-    switch (keycode) {
-      // Letter keys should be shifted.
-    case KC_A ... KC_Z:
-      if (!shifted) { register_code(KC_LSFT); }
-      shifted = true;
-      return true;
-
-      // Keycodes that continue caps word but shouldn't get shifted.
-    case KC_1 ... KC_0:
-    case KC_BSPC:
-    case KC_MINS:
-    case KC_UNDS:
-      if (shifted) { unregister_code(KC_LSFT); }
-      shifted = false;
-      return true;
-
-      // Any other keycode disables caps word.
-    }
-  }
-
-  // Disable caps word.
-  caps_word_enabled = false;
-  if (shifted) { unregister_code(KC_LSFT); }
-  shifted = false;
-  return true;
-}

+ 0 - 35
users/ericgebhart/caps_word.h

@@ -1,35 +0,0 @@
-// Copyright 2021 Google LLC
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-//
-// Caps Word, activated by pressing both shift keys at the same time.
-//
-// This library implements "Caps Word", which is like conventional Caps Lock,
-// but automatically disables itself at the end of the word. This is useful for
-// typing all-caps identifiers like `MOD_MASK_ALT`.
-//
-// Caps Word is activated by pressing the left and right shift keys at the same
-// time. This way you don't need a dedicated key for using Caps Word. I've
-// tested that this works as expected with one-shot mods and Space Cadet Shift.
-// If your shift keys are mod-taps, activate Caps Word by holding both shift
-// mod-tap keys until the tapping term, release them, then begin typing.
-//
-// For full documentation, see
-// https://getreuer.info/posts/keyboards/caps-word
-
-#pragma once
-
-#include QMK_KEYBOARD_H
-
-bool process_caps_word(uint16_t keycode, keyrecord_t* record);

+ 0 - 10
users/ericgebhart/combos.def

@@ -1,10 +0,0 @@
-//   name      result           chord keys
-COMB(LNAV,      TG(_NAV),       SPC_TOPR, ENT_NAV)
-COMB(OSLSYM,    OSL(_SYMB),     ESC_TOPR, BSPC_SYMB)
-COMB(OSLSYMBP,  OSL(_SYMB_BP),  ESC_TOPR_BP, BSPC_SYMB_BP)
-COMB(LKEYPAD,   TG(_KEYPAD),    SPC_TOPR, BSPC_SYMB)
-COMB(LKEYPADBP, TG(_KEYPAD_BP), SPC_TOPR_BP, BSPC_SYMB_BP)
-COMB(LLAYERS,   OSL(_LAYERS),    KC_TAB, ENT_NAV)
-
-//COMB(JKL_SPC,  KC_SPC,   KC_J,  KC_X)
-//SUBS(TH_THE,   "the",    KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.

+ 272 - 3
users/ericgebhart/config.h

@@ -18,12 +18,11 @@
 #ifndef USERSPACE_CONFIG_H
 #define USERSPACE_CONFIG_H
 
-#include "../../config.h"
+// pro-micro v3's don't always detect otherwise.
+/* #define SPLIT_USB_DETECT */
 
 #define NO_ACTION_MACRO
 #define NO_ACTION_FUNCTION
-#define COMBO_MUST_HOLD_MODS
-#define COMBO_HOLD_TERM 150
 // Sets good default for the speed of the mouse.
 #undef MOUSEKEY_INTERVAL
 #undef MOUSEKEY_DELAY
@@ -51,4 +50,274 @@
 #define TAPPING_TERM    200
 #define IGNORE_MOD_TAP_INTERRUPT
 
+
+#define TAP_HOLD_TERM    200
+#define COMBO_MUST_HOLD_MODS
+#define COMBO_HOLD_TERM 150
+#define TAP_CODE_DELAY 5  // for send string with delay
+
+// change the behavior of Mod taps for HRMs.
+// #define GLOBAL_QUICK_TAP
+
+ /* Control switches for my keymaps. */
+ /* if needed, this goes in the keyboard's config.h */
+ /* Alternately, fix the number row in the layout template. */
+/* #define BASE_NUMBER_ROW    // turn on 4 row base templates. */
+
+// Extensions, turn them on and off.
+#define USERSPACE_H "ericgebhart.h"
+
+// Layout definitions, which language, thumb cluster, mod layer.
+// Columns in and out.
+
+// the default. set it, use it, set it back.
+// US_INT // EN, BEPO, US_INT
+#define LANG_IS US_INT
+#define DEFAULT_LANG US_INT
+#define DEFAULT_LANG_NAME " us"
+
+// Enable a second locale, for another set of layers.
+// This will add bepo versions of all layers chosen.
+/* #define SECOND_LOCALE BEPO */
+/* #define SECOND_LOCALE_NAME " bepo" */
+
+// Choose a mod layer. Can be changed per layer.
+// TRNS, ALT, HRS_NAV HRM_GACS, HRM_SCAG, HRM_GASC, MIRYOKU_HRM_GASC
+#define MODS_ARE HRS_NAV
+#define DEFAULT_MODS MODS_ARE
+
+// Choose a thumb cluster.
+// WI, WIa, DEFAULT, TEST, TRNS, MODS, LAYERS, MODS_LAYERS,
+// MIRYOKU, MIRYOKU_TR, MODS_LAYERS_NAV,
+// The following use THUMB_LETTER to place a letter on the Thumbs.
+// for use with the hands down metals, maltron, and rsthd.
+// HD, HDA, HD_SIMPLE, TH_LTR, HD_DASH,
+// MIRYOKU_TR_LTR, MIRYOKU_LTR
+#define THUMBS_ARE DEFAULT
+#define DEFAULT_THUMBS DEFAULT
+
+// pick the edge key set. normie, no kc, smart locks or test.
+// NORM, NOKC, SML, TEST
+#define EDGE_KEY_SET_IS SML
+#define DEFAULT_EDGE_SET SML
+
+// for the base layers which need a thumb cluster which takes a letter.
+#define HANDS_DOWN_LTR_THUMBS_ARE TH_LTR
+#define MALTRON_LTR_THUMBS_ARE TH_LTR
+#define RSTHD_LTR_THUMBS_ARE TH_LTR
+
+// layout io, matrix size.
+// a reasonable default for most keyboards.
+// give a 3x10 and get a 3x12, managed in keyboards/keyboards.h
+#define BASE_COLS_IN_OUT 5_6 // 5, 5_6, 6
+
+// OLED STUFF.
+#define OLED_CUSTOM_ENABLE // custom oled here.
+//#define OLED_LOGO_ENABLE // turn on/off the logo.
+#define KEYLOGGER_ENABLE // 1500 bytes, track and print keypress info to oled.
+//#define SPLIT_LAYER_STATE_ENABLE  // to sync state between sides.
+
+// EXTENSIONS
+
+// Combos
+#define COMBO_REF_LAYER_ENABLE
+// #define COMBO_REF_LAYER_TWO_ENABLE
+// works if you know the number of your layer.
+// otherwise set and use them later.
+// #define COMBO_ONLY_FROM_LAYER 2
+// #define COMBO_REF_DEFAULT 2
+
+
+// Console key logging for creation of heatmaps, etc.
+// CONSOLE must be enabled for this to work.
+// To create Precondition's heat maps, from console key logging
+// with hid_listen or qmk console
+//#define CONSOLE_KEY_LOGGER_ENABLE  // turn on keylogging for heat maps.
+
+#define ALT_LOCAL_ENABLE // alternate key combinations, with mods as needed.
+#define ACCENTED_KEYS_ENABLE // direct access to altgr keys.
+
+#define SMART_LOCK_ENABLE // smart lock layers and mods.
+//#define MOD_LOCK_ENABLE  // smart lock mods, similar/overlapping with Smart lock.
+#define NSHOT_ENABLE // smart n-shot for count.
+//#define ONESHOT_MOD_ENABLE  // oneshot mods, similar/overlapping with nshots
+
+#define TAP_HOLD_ENABLE // tap for one thing, hold for tapping term to get another.
+//#define SWAPPER_ENABLE // enable swapper keys.
+#define NOT_DEAD_ENABLE // make undead versions (US_DQUO_ND) of dead keys.
+//#define ALT_SHIFT_ENABLE // alternate shift behaviors for existing keys.
+//#define SEND_STRING_ENABLE // Turn on send string keys
+//#define SEND_UNICODE_ENABLE // Unicode must be enabled for this to work.
+
+
+// Turn on the base layers do not exceed 4 if doing two locales.
+// That will likely push a layer past 15 and then it will
+// no longer work with the LT macro.
+
+// dvorak and relatives
+#define DVORAK_LAYER_ENABLE
+//#define DVORAK_RLC_IU_LAYER_ENABLE
+//#define CAPEWELL_DVORAK_LAYER_ENABLE
+//#define AHEI_LAYER_ENABLE
+//#define BOO_LAYER_ENABLE
+
+// qwerty and derivitives
+//#define QWERTY_LAYER_ENABLE
+//#define AZERTY_LAYER_ENABLE
+//#define WORKMAN_LAYER_ENABLE
+//#define NORMAN_LAYER_ENABLE
+
+// COLEMAK and relatives
+//#define COLEMAK_LAYER_ENABLE
+//#define COLEMAK_DH_LAYER_ENABLE
+//#define HALMAK_LAYER_ENABLE
+//#define MINIMAK_LAYER_ENABLE
+//#define MINIMAK_8_LAYER_ENABLE
+//#define MINIMAK_12_LAYER_ENABLE
+
+// BEAKL
+// #define BEAKL15_LAYER_ENABLE
+//#define BEAKL19_LAYER_ENABLE
+//#define BEAKL27_LAYER_ENABLE
+//#define BEAKLWI_LAYER_ENABLE
+
+// carpalx layouts
+//#define CARPALX_QFMLWY_LAYER_ENABLE
+//#define CARPALX_QGMLWB_LAYER_ENABLE
+//#define CARPALX_QGMLWY_LAYER_ENABLE
+
+// alternate layouts
+//#define MALTRON_LAYER_ENABLE
+//#define EUCALYN_LAYER_ENABLE
+//#define HANDS_UP_LAYER_ENABLE
+//#define RSTHD_LAYER_ENABLE
+//#define HANDS_UP_LAYER_ENABLE
+//#define WHITE_LAYER_ENABLE
+//#define ISRT_LAYER_ENABLE
+//#define SOUL_LAYER_ENABLE
+//#define NIRO_LAYER_ENABLE
+//#define ASSET_LAYER_ENABLE
+//#define WHORF_LAYER_ENABLE
+//#define WHORF6_LAYER_ENABLE
+
+// mtgap and relatives
+//#define MTGAP_LAYER_ENABLE
+//#define CTGAP_LAYER_ENABLE
+//#define APT_LAYER_ENABLE
+//#define CANARY_LAYER_ENABLE
+
+// Hands down
+#define HD_NEU_NARROW_LAYER_ENABLE
+//#define HD_REF_LAYER_ENABLE
+//#define HD_DASH_LAYER_ENABLE
+//#define HD_ELAN_LAYER_ENABLE
+//#define HD_BRONZE_LAYER_ENABLE
+//#define HD_SILVER_LAYER_ENABLE
+//#define HD_PLATINUM_LAYER_ENABLE
+//#define HD_GOLD_LAYER_ENABLE
+//#define HD_TITANIUM_LAYER_ENABLE
+
+// A compact optimot for 3x10.
+// requires accent characters.
+//#define OPTIMOT_COMPACT_LAYER_ENABLE
+
+// 3x12 sized base layers
+//--------------------------
+//#define HD_NEU_LAYER_ENABLE
+
+// Optimized for french
+// All these have accent characters on base layer.
+// so these dont work for En, but do for US-international and Bepo.
+
+//#define BEPO_LAYER_ENABLE
+//#define OPTIMOT_LAYER_ENABLE
+//#define BEAKL19bis_LAYER_ENABLE
+
+
+// enable transient function layers.
+#define SYMBOL_LAYER_ENABLE
+#define NAV_LAYER_ENABLE
+// #define MOUSE_LAYER_ENABLE
+#define TOPROWS_LAYER_ENABLE
+// #define LAYERS_LAYER_ENABLE - defunct. always on.
+#define KEYPAD_LAYER_ENABLE
+//#define ADJUST_LAYER_ENABLE
+//#define RGB_LAYER_ENABLE
+//#define MEDIA_LAYER_ENABLE
+//#define FUNC_LAYER_ENABLE
+
+
+// define alternate thumb definitions for the transient layers.
+#define MEDIA_LAYER_THUMBS MEDIA_THUMBS
+#define MOUSE_LAYER_THUMBS MOUSE_THUMBS
+#define NAV_LAYER_THUMBS TRNS_THUMBS
+#define KEYPAD_LAYER_THUMBS KEYPAD_THUMBS
+#define SYMB_LAYER_THUMBS SYMB_THUMBS
+#define TOPROWS_LAYER_THUMBS DEFAULT
+
+// Extra character layers.
+// Bepo has dead keys (altgr) and accented keycodes
+// A layer of accented keys
+// #define ACCENTS_LAYER_ENABLE
+// A layer of dead keys
+// #define MORTE_LAYER_ENABLE
+// A layer of the most popular accented keys and dead keys
+#define ACCENTS_MORTE_LAYER_ENABLE
+
+// Functional layer choices.
+/* configure the function layers. */
+/* They have to be turned on above. */
+/* Choose one of each as desired. */
+/* There are reasonable defaults */
+/* for each if nothing is defined. */
+
+/* nav */
+//#define NAV_FULL  // monolithic, two sided nav with mouse and arrows.
+#define NAV_FULL_LOCK_MODS // Replace left mouse buttons with lockmods.
+
+// Just the non mouse bits, with lock mods, n-shot mods on the left.
+// if mousekeys enabled, adds a mouse layer accessible via smart lock.
+// #define NAV_NO_MOUSE
+// #define NAV_MIRYOKU
+// #define NAV_MOUSE_MIRYOKU
+
+
+/* keypads */
+// beakl keypads are usual, if not chosen, regular keypads will be used.
+// left side is the default.
+// Beakl, except for WI, is only on the left side.
+// Miryoku is on the left also.
+
+//#define KEYPAD_RIGHT
+#define KEYPAD_BEAKL        // beakl doesn't have a rightside, swap hands?
+//#define KEYPAD_MODS      //  give mods on the other side instead of funcs.
+//#define KEYPAD_BEAKL_WI  //  right side with hexpad on left.
+//#define KEYPAD_MIRYOKU   //  use the miryoku keypad
+// the default if nothing chosen,
+// is a functionpad on the left and normal keypad on the right.
+
+// funcpad from miryoku
+// #define FUNCPAD_MIRYOKU
+
+
+/* symbols */
+// pick one of these or get the default.
+//#define SYMBOL_BEAKL         // original - the default if nothing else.
+//#define SYMBOL_BEAKL_EXT     // extended for non beakl base layers.
+//#define SYMBOL_BEAKL_EXT_VI  // extended with vi keybinding in mind.
+#define SYMBOL_BEAKL_C         // more alterations by frequency
+// #define SYMBOL_NEO             // The symbol layer from the Neo layout.
+// #define SYMBOL_MIRYOKU      // minimalist symbols after miryoku
+//#define SYMBOL_BEAKL_WI      // original wi
+
+
+/* toprows. */
+// The default, if not defined, is a standard qwerty set of rows.
+// symbols, numbers, function keys. Numbers on the home row.
+
+// #define TOPROWS_BKL_15_NUMS  // center row with Beakl15 order. 40123 76598.
+// #define TOPROWS_BKL_19_NUMS // Beakl 19 order: 32104  76598
+#define TOPROWS_MOD  // beakl 15 nums, oneshot and smart lock mods. no Fkeys.
+
+
 #endif

+ 0 - 280
users/ericgebhart/core_keys.h

@@ -1,280 +0,0 @@
-#pragma once
-/*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
-
-  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 <http://www.gnu.org/licenses/>.
-*/
-
-#include "quantum.h"
-#include "process_keycode/process_tap_dance.h"
-#include "eeconfig.h"
-#include "keymap_bepo.h"
-#include "altlocal_keys.h"
-
-//#define ONESHOT_TAP_TOGGLE 2  /* Tapping this number of times holds the key until tapped once again. */
-
-bool process_record_secrets(uint16_t keycode, keyrecord_t *record);
-
-enum userspace_custom_keycodes {
-  // keep the keycodes using the send_key function close to SAFE_RANGE
-  // so the array of keycodes remains a reasonbale size.
-  DB_1 = SAFE_RANGE,  // can always be here
-  DB_2,
-  DB_3,
-  DB_4,
-  DB_5,
-  DB_6,
-  DB_7,
-  DB_8,
-  DB_9,
-  DB_0,
-  DB_GRV,
-  DB_SCOLON,
-  DB_SLASH,
-  DB_BACKSLASH,
-  DB_EQL,
-  DB_DOT,
-  DB_COMM,
-  DB_QUOT,
-  DB_MINUS,
-  DB_RPRN,
-  DB_LPRN,
-  DB_RBRC,
-  DB_LBRC,
-  // for symbols layer
-  DB_HASH,
-  DB_LCBR,
-  DB_RCBR,
-  DB_PIPE,
-  DB_TILD,
-  DB_CIRC,
-  DB_LESS,
-  DB_GRTR,
-  // End of dvorak on bepo translation keys.
-  // BEAKL on Qwerty..
-  BQ_DOT,
-  BQ_COMM,
-  BQ_QUOT,
-  // End of beakl on qwerty
-  BB_DOT,
-  BB_COMM,
-  BB_QUOT,
-  // End of beakl on Bepo
-
-  EPRM,
-  VRSN,
-  // Default keyboard layouts - Same order as enum.
-  KC_DVORAK,
-  KC_QWERTY,
-  KC_COLEMAK,
-  KC_BEAKL,
-  // KC_WORKMAN,
-  // KC_NORMAN,
-  // KC_MALTRON,
-  // KC_EUCALYN,
-  // KC_CARPLAX,
-  KC_DVORAK_BP,
-  KC_BEAKL_BP,
-  KC_BEPO,
-  KC_LAYERS,
-
-  // Misc.
-  KC_MAKE,
-  KC_RESET,
-  KC_RGB_T,
-  RGB_IDL,
-  KC_SECRET_1,
-  KC_SECRET_2,
-  KC_SECRET_3,
-  KC_SECRET_4,
-  KC_SECRET_5,
-  KC_CCCV,      // Ctrl-C V in one key.
-  BP_CCCV,
-  KC_CTCN,      // Ctrl-T N in one key.
-  BP_CTCN,
-  KC_CWCQ,      // Ctrl-W Q in one key.
-  BP_CWCQ,
-  KC_XM_PORD,   // Xmonad gui-e, gui-t for the scratchpads or desktops.
-  BP_XM_PORD,
-  KC_OCPRN,   // Open, or open and close, cursor in the middle with hold.
-  BP_OCPRN,
-  KC_OCBRC,
-  BP_OCBRC,
-  KC_OCCBR,
-  BP_OCCBR,
-  KC_OCDQUO,
-  BP_OCDQUO,
-  KC_OCQUOT,
-  BP_OCQUOT,
-  KC_OCGRV,
-  BP_OCGRV,
-  KC_OCLTGT,
-  BP_OCLTGT,
-  UC_FLIP,
-  UC_TABL,
-  UC_SHRG,
-  UC_DISA,
-  KC_SPACETEST,
-  NEW_SAFE_RANGE
-};
-
-#define CTLGUI_T(kc) MT(MOD_LGUI | MOD_LCTL, kc)
-#define SFTGUI_T(kc) MT(MOD_LGUI | MOD_LSFT, kc)
-#define ALTGUI_T(kc) MT(MOD_LGUI | MOD_LALT, kc)
-
-#define ALT_ENT     ALT_T(KC_ENT)       // Alt or enter
-#define CTL_SPC     CTL_T(KC_SPC)       // ctrl or space
-#define CTL_BSPC    CTL_T(KC_BSPC)      // ctrl or backspace
-#define ALT_DEL     ALT_T(KC_DEL)       // Alt or delete
-#define GUI_ESC     GUI_T(KC_ESC)       // Gui or escape
-#define ALGR_SYMB   ALGR_T(TG(_SYMB))    // Alt gre or toggle symbol layer
-
-#define ENT_NAV LT(_NAV, KC_ENT)
-#define ENT_TOPR LT(_TOPROWS, KC_ENT)
-#define ENT_TOPR_BP LT(_TOPROWS_BP, KC_ENT)
-#define ESC_TOPR LT(_TOPROWS, KC_ESC)
-#define ESC_TOPR_BP LT(_TOPROWS_BP, KC_ESC)
-#define ESC_SYMB LT(_SYMB, KC_ESC)
-#define ESC_SYMB_BP LT(_SYMB_BP, KC_ESC)
-#define SPC_NAV LT(_NAV, KC_SPC)
-#define SPC_TOPR LT(_TOPROWS, KC_SPC)
-#define SPC_TOPR_BP LT(_TOPROWS_BP, KC_SPC)
-#define SPC_LAYR LT(_LAYERS, KC_SPC)
-#define SPC_LAYR_BP LT(_LAYERS, KC_SPC)
-#define SPC_ADJ LT(_ADJUST, KC_SPC)
-#define SPC_ADJ_BP LT(_ADJUST, KC_SPC)
-#define BSPC_SYMB LT(_SYMB, KC_BSPC)
-#define BSPC_SYMB_BP LT(_SYMB_BP, KC_BSPC)
-#define BSPC_TOPR LT(_TOPROWS, KC_BSPC)
-#define BSPC_TOPR_BP LT(_TOPROWS_BP, KC_BSPC)
-#define SPC_NUM LT(_KEYPAD, KC_SPC)
-#define SPC_NUM_BP LT(_KEYPAD_BP, KC_SPC)
-#define BSPC_NUM LT(_KEYPAD, KC_BSPC)
-#define BSPC_NUM_BP LT(_KEYPAD_BP, KC_BSPC)
-
-// OSM keycodes, to keep things clean and easy to change
-#define KC_MLSF OSM(MOD_LSFT)
-#define KC_MRSF OSM(MOD_RSFT)
-#define OS_LGUI OSM(MOD_LGUI)
-#define OS_RGUI OSM(MOD_RGUI)
-#define OS_LSFT OSM(MOD_LSFT)
-#define OS_RSFT OSM(MOD_RSFT)
-#define OS_LCTL OSM(MOD_LCTL)
-#define OS_RCTL OSM(MOD_RCTL)
-#define OS_LALT OSM(MOD_LALT)
-#define OS_RALT OSM(MOD_RALT)
-#define ALT_APP ALT_T(KC_APP)
-
-#define MG_NKRO MAGIC_TOGGLE_NKRO
-
-#define UC_IRNY UC(0x2E2E)
-#define UC_CLUE UC(0x203D)
-
-
-////  TAP DANCE
-
-  typedef struct {
-    bool is_press_action;
-    int state;
-  } tdtap;
-
-enum {
-      SINGLE_TAP = 1,
-      SINGLE_HOLD = 2,
-      DOUBLE_TAP = 3,
-      DOUBLE_HOLD = 4,
-      DOUBLE_SINGLE_TAP = 5, //send two single taps
-      TRIPLE_TAP = 6,
-      TRIPLE_HOLD = 7
-};
-
-//Tap Dance Declarations
-enum {
-      TD_ESC_CAPS = 0,
-      TD_TAB_BKTAB = 1,
-      TD_MDIA_SYMB = 2,
-      TD_HOME_END = 3,
-      TD_XMONAD_ESC = 4,
-      TD_DEF_LAYER_SW = 5,
-      TD_DEF_OS_LAYER_SW = 6,
-      TD_MOUSE_BTNS = 7,
-      TD_DVORAK_BEPO = 8,
-      TD_UP_HOME = 9,
-      TD_DOWN_END = 10,
-      TD_RIGHT_TAB = 11,
-      TD_LEFT_BACKTAB = 12
-};
-
-
-// Tap dance
-#define KC_BKTAB       LSFT(KC_TAB)
-#define TAB_BKTAB       TD(TD_TAB_BKTAB)  // Tab or backtab tapdance.
-#define MDIA_SYMB_KP_LAYERS TD(TD_MDIA_SYMB)  // MDIA, symb, keypad, layouts layer tapdance toggle.
-#define DEF_LAYER_SW    TD(TD_DEF_LAYER_SW)  // dvorak, dvorak_on_bepo, bepo default layer
-#define DEF_OS_LAYER_SW TD(TD_DEF_OS_LAYER_SW)  // dvorak, dvorak_on_bepo, bepo default layer
-#define HOME_END        TD(TD_HOME_END)  // home or end tapdance.
-#define XMONAD_ESC      TD(TD_XMONAD_ESC)  // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
-#define DVORAK_ET_BEPO  TD(TD_DVORAK_BEPO)  // Escape, dvorak, media or symb. - tap and hold tap dance. 1-4
-#define TDMOUSE_BTNS    TD(TD_MOUSE_BTNS)  // hmmm. 1-5
-#define RIGHT_TAB       TD(TD_RIGHT_TAB)   // Bad idea these 4. Maybe with good timing...
-#define LEFT_BACKTAB    TD(TD_LEFT_BACKTAB)
-#define UP_HOME         TD(TD_UP_HOME)
-#define DOWN_END        TD(TD_DOWN_END)  //  No! Down Down Not End....
-
-// HOME ROW LAYER TOGGLE (LT) and Shift.
-// both sides of the home row have  "shift, ___, media , symb, ___"  and  "___, symb, media, ___, shift".
-// so pinky fingers are shift when held and the index and second fingers are symbol and
-// media layers when held.
-
-// The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators).
-// The KC_CCCV key takes care of the last two...
-#define MK_CUT    LSFT(KC_DEL)  // shift + delete
-#define MK_COPY   LCTL(KC_INS)  // ctrl + insert
-#define MK_PASTE  LSFT(KC_INS)  // shift + insert
-
-#undef ___ //kint defines it as KC_NO
-#define ___ KC_TRNS
-#define XXX KC_NO
-
-// Blocking keys
-#define _X_ XXX
-#define ___X___ XXX
-#define ___X2___ XXX, XXX
-#define ___X3___ ___X2___, XXX
-#define ___X5___ ___X3___, XXX, XXX
-#define ___X6___ ___X5___, XXX
-#define ___X12___ ___X6___, ___X6___
-#define ___X15___ ___X5___, ___X5___,  ___X5___
-
-// Transparent keys
-#define ___2___ ___, ___
-#define ___3___ ___2___, ___
-#define ___4___ ___3___, ___
-#define ___5___ ___4___, ___
-#define ___6___ ___5___, ___
-#define ___12___ ___6___, ___6___
-#define ___14___ ___5___, ___4___,  ___5___
-#define ___15___ ___5___, ___5___,  ___5___
-#define ___16___ ___15___, ___
-
-int on_qwerty(void);
-int get_xmonad_layer(void);
-
-#ifdef TAP_DANCES_ENABLE
-int cur_dance (qk_tap_dance_state_t *state);
-
-//for the x tap dance. Put it here so it can be used in any keymap
-void x_finished (qk_tap_dance_state_t *state, void *user_data);
-void x_reset (qk_tap_dance_state_t *state, void *user_data);
-#endif

+ 0 - 345
users/ericgebhart/core_keysets.h

@@ -1,345 +0,0 @@
-#pragma once
-/*
-  Copyright 2018 Eric Gebhart <e.a.gebhart@gmail.com>
-
-  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 <http://www.gnu.org/licenses/>.
-*/
-
-#include "core_keys.h"
-/********************************************************************/
-/**  The Core rows of each given layout.                           **/
-/********************************************************************/
-//Dvorak on a qwerty software layer in the OS
-#define ___DVORAK_L1___ KC_QUOT,  KC_COMM, KC_DOT, KC_P,  KC_Y
-#define ___DVORAK_L2___ KC_A,     KC_O,    KC_E,   KC_U,  KC_I
-#define ___DVORAK_L3___ KC_SCLN,  KC_Q,    KC_J,   KC_K,  KC_X
-
-#define ___DVORAK_R1___ KC_F, KC_G,  KC_C, KC_R, KC_L
-#define ___DVORAK_R2___ KC_D, KC_H,  KC_T, KC_N, KC_S
-#define ___DVORAK_R3___ KC_B, KC_M,  KC_W, KC_V, KC_Z
-
-#define ___DVORAK___ ___DVORAK_L1___, ___DVORAK_R1___,  \
-        ___DVORAK_L2___, ___DVORAK_R2___,  \
-        ___DVORAK_L3___, ___DVORAK_R3___
-
-/* BEAKL 15 (main layer): */
-/*   40123 76598   */
-/*   qhoux gcrfz   */
-/* - yiea. dstnb ; */
-/*   j/,k' wmlpv   */
-
-// Remember the - and ; outside pinky keys.
-// Or use the 6 size.
-// Both are on the symbol layer too. So you
-// wont lose them at least.
-// BQ_COMM, BQ_QUOT, BQ_DOT - Beakl->Qwerty
-// BB_COMM, BB_QUOT, BB_DOT - Beakl->Bepo
-// take care of the different shifted chars.
-/* BEAKL 15 (shift layer): */
-/*   QHOUX GCRFZ   */
-/* - YIEA@ DSTNB ; */
-/*   J?!K` WMLPV   */
-#define ___BEAKL15_L1___ KC_Q, KC_H,     KC_O,    KC_U, KC_X
-#define ___BEAKL15_L2___ KC_Y, KC_I,     KC_E,    KC_A, BQ_DOT
-#define ___BEAKL15_L3___ KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
-
-#define ___BEAKL15_R1___ KC_G, KC_C,     KC_R,    KC_F, KC_Z
-#define ___BEAKL15_R2___ KC_D, KC_S,     KC_T,    KC_N, KC_B
-#define ___BEAKL15_R3___ KC_W, KC_M,     KC_L,    KC_P, KC_V
-
-#define ___BEAKL15___ ___BEAKL15_L1___, ___BEAKL15_R1___,       \
-        ___BEAKL15_L2___, ___BEAKL15_R2___,                     \
-        ___BEAKL15_L3___, ___BEAKL15_R3___
-
-#define ___6BEAKL15_L1___ ___,     KC_Q, KC_H,     KC_O,    KC_U, KC_X
-#define ___6BEAKL15_L2___ KC_MINS, KC_Y, KC_I,     KC_E,    KC_A, BQ_DOT
-#define ___6BEAKL15_L3___ ___,     KC_J, KC_SLASH, BQ_COMM, KC_K, BQ_QUOT
-
-#define ___6BEAKL15_R1___ KC_G, KC_C,     KC_R,    KC_F, KC_Z, ___
-#define ___6BEAKL15_R2___ KC_D, KC_S,     KC_T,    KC_N, KC_B, KC_SCLN
-#define ___6BEAKL15_R3___ KC_W, KC_M,     KC_L,    KC_P, KC_V, ___
-
-#define ___6BEAKL15___ ___6BEAKL15_L1___, ___6BEAKL15_R1___,    \
-        ___6BEAKL15_L2___, ___6BEAKL15_R2___,                   \
-        ___6BEAKL15_L3___, ___6BEAKL15_R3___
-
-// Qwerty based layers that I don't really use.
-#define ___QWERTY_L1___ KC_Q,  KC_W,  KC_E,    KC_R,   KC_T
-#define ___QWERTY_L2___ KC_A,  KC_S,  KC_D,    KC_F,   KC_G
-#define ___QWERTY_L3___ KC_Z,  KC_X,  KC_C,    KC_V,   KC_B
-
-#define ___QWERTY_R1___ KC_Y,  KC_U,  KC_I,    KC_O,   KC_P
-#define ___QWERTY_R2___ KC_H,  KC_J,  KC_K,    KC_L,   KC_SCLN
-#define ___QWERTY_R3___ KC_N,  KC_M,  KC_COMM, KC_DOT, KC_SLASH
-
-#define ___QWERTY___ ___QWERTY_L1___, ___QWERTY_R1___,          \
-        ___QWERTY_L2___, ___QWERTY_R2___,                       \
-        ___QWERTY_L3___, ___QWERTY_R3___
-
-// Qwerty based layers that I don't really use.
-
-// COLEMAK
-#define ___COLEMAK_L1___ KC_Q, KC_W,  KC_F,    KC_P,   KC_G
-#define ___COLEMAK_L2___ KC_A, KC_R,  KC_S,    KC_T,   KC_D
-#define ___COLEMAK_L3___ KC_Z, KC_X,  KC_C,    KC_V,   KC_B
-
-#define ___COLEMAK_R1___ KC_J, KC_L,  KC_U,    KC_Y,   KC_SCLN
-#define ___COLEMAK_R2___ KC_H, KC_N,  KC_E,    KC_I,   KC_O
-#define ___COLEMAK_R3___ KC_K, KC_M,  KC_COMM, KC_DOT, KC_SLASH
-
-#define ___COLEMAK___ ___COLEMAK_L1___, ___COLEMAK_R1___,       \
-        ___COLEMAK_L2___, ___COLEMAK_R2___,                     \
-        ___COLEMAK_L3___, ___COLEMAK_R3___
-
-// COLEMAK-DH
-#define ___COLEMAK_DH_L1___ KC_Q,  KC_W,  KC_F,  KC_P,  KC_B
-#define ___COLEMAK_DH_L2___ KC_A,  KC_R,  KC_S,  KC_T,  KC_G
-#define ___COLEMAK_DH_L3___ KC_Z,  KC_X,  KC_C,  KC_D,  KC_V
-
-#define ___COLEMAK_DH_R1___ KC_J,  KC_L,  KC_U,    KC_Y,    KC_SCLN
-#define ___COLEMAK_DH_R2___ KC_M,  KC_N,  KC_E,    KC_I,    KC_O
-#define ___COLEMAK_DH_R3___ KC_K,  KC_H,  KC_COMM, KC_DOT,  KC_SLASH
-
-#define ___COLEMAK_DH___ ___COLEMAK_DH_L1___, ___COLEMAK_DH_R1___,      \
-        ___COLEMAK_DH_L2___, ___COLEMAK_DH_R2___,                       \
-        ___COLEMAK_DH_L3___, ___COLEMAK_DH_R3___
-
-
-// WORKMAN
-#define ___WORKMAN_L1___ KC_Q,  KC_D,  KC_R,  KC_W,  KC_B
-#define ___WORKMAN_L2___ KC_A,  KC_S,  KC_H,  KC_T,  KC_G
-#define ___WORKMAN_L3___ KC_Z,  KC_X,  KC_M,  KC_C,  KC_V
-
-#define ___WORKMAN_R1___ KC_J,  KC_F,  KC_U,     KC_P,    KC_SCLN
-#define ___WORKMAN_R2___ KC_Y,  KC_N,  KC_E,     KC_O,    KC_I
-#define ___WORKMAN_R3___ KC_K,  KC_L,  KC_COMM,  KC_DOT,  KC_SLASH
-
-#define ___WORKMAN___ ___WORKMAN_L1___, ___WORKMAN_R1___,       \
-        ___WORKMAN_L2___, ___WORKMAN_R2___,                     \
-        ___WORKMAN_L3___, ___WORKMAN_R3___
-
-
-// NORMAN
-#define ___NORMAN_L1___ KC_Q,  KC_W,   KC_D,  KC_F,  KC_K
-#define ___NORMAN_L2___ KC_A,  KC_S,   KC_E,  KC_T,  KC_G
-#define ___NORMAN_L3___ KC_Z,  KC_X,   KC_C,  KC_V,  KC_B
-
-#define ___NORMAN_R1___ KC_J,   KC_U,  KC_R,     KC_L,    KC_SCLN
-#define ___NORMAN_R2___ KC_Y,   KC_N,  KC_I,     KC_O,    KC_U
-#define ___NORMAN_R3___ KC_P,   KC_M,  KC_COMM,  KC_DOT,  KC_SLASH
-
-#define ___NORMAN___ ___NORMAN_L1___, ___NORMAN_R1___,     \
-        ___NORMAN_L2___, ___NORMAN_R2___,                  \
-        ___NORMAN_L3___, ___NORMAN_R3___
-
-
-#define ___MALTRON_L1___ KC_Q,    KC_P,    KC_Y,    KC_C,    KC_B
-#define ___MALTRON_L2___ KC_A,    KC_N,    KC_I,    KC_S,    KC_F
-#define ___MALTRON_L3___ KC_SCLN, KC_SLSH, KC_J,    KC_G,    KC_COMM
-
-#define ___MALTRON_R1___ KC_V,    KC_M,    KC_U,    KC_Z,    KC_L
-#define ___MALTRON_R2___ KC_D,    KC_T,    KC_D,    KC_O,    KC_R
-#define ___MALTRON_R3___ KC_DOT,  KC_W,    KC_K,    KC_MINS, KC_X
-
-#define ___MALTRON___ ___MALTRON_L1___, ___MALTRON_R1___,       \
-        ___MALTRON_L2___, ___MALTRON_R2___,                     \
-        ___MALTRON_L3___, ___MALTRON_R3___
-
-
-#define ___EUCALYN_L1___ KC_SLSH, KC_COMM, KC_DOT,  KC_F,    KC_Q
-#define ___EUCALYN_L2___ KC_A,    KC_O,    KC_E,    KC_I,    KC_U
-#define ___EUCALYN_L3___ KC_Z,    KC_X,    KC_C,    KC_V,    KC_W
-
-#define ___EUCALYN_R1___ KC_M,    KC_R,    KC_D,    KC_Y,    KC_P
-#define ___EUCALYN_R2___ KC_G,    KC_T,    KC_K,    KC_S,    KC_N
-#define ___EUCALYN_R3___ KC_B,    KC_H,    KC_J,    KC_L,    KC_SCLN
-
-#define ___EUCALYN___ ___EUCALYN_L1___, ___EUCALYN_R1___,       \
-        ___EUCALYN_L2___, ___EUCALYN_R2___,                     \
-        ___EUCALYN_L3___, ___EUCALYN_R3___
-
-
-#define ___CARPLAX_QFMLWY_L1___ KC_Q,    KC_F,    KC_M,    KC_L,    KC_W
-#define ___CARPLAX_QFMLWY_L2___ KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define ___CARPLAX_QFMLWY_L3___ KC_Z,    KC_V,    KC_G,    KC_C,    KC_X
-
-#define ___CARPLAX_QFMLWY_R1___ KC_Y,    KC_U,    KC_O,    KC_B,    KC_J
-#define ___CARPLAX_QFMLWY_R2___ KC_I,    KC_A,    KC_E,    KC_H,    KC_SCLN
-#define ___CARPLAX_QFMLWY_R3___ KC_P,    KC_K,    KC_COMM, KC_DOT,  KC_SLSH
-
-#define ___CARPLAX_QFMLWY___ ___CARPLAX_QFMLWY_L1___, ___CARPLAX_QFMLWY_R1___, \
-        ___CARPLAX_QFMLWY_L2___, ___CARPLAX_QFMLWY_R2___,               \
-        ___CARPLAX_QFMLWY_L3___, ___CARPLAX_QFMLWY_R3___
-
-
-#define ___CARPLAX_QGMLWB_L1___ KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
-#define ___CARPLAX_QGMLWB_L2___ KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define ___CARPLAX_QGMLWB_L3___ KC_Z,    KC_X,    KC_C,    KC_F,    KC_J
-
-#define ___CARPLAX_QGMLWB_R1___ KC_B,    KC_Y,    KC_U,    KC_V,    KC_SCLN
-#define ___CARPLAX_QGMLWB_R2___ KC_I,    KC_A,    KC_E,    KC_O,    KC_H
-#define ___CARPLAX_QGMLWB_R3___ KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
-
-#define ___CARPLAX_QGMLWB___ ___CARPLAX_QGMLWB_L1___, ___CARPLAX_QGMLWB_R1___, \
-        ___CARPLAX_QGMLWB_L2___, ___CARPLAX_QGMLWB_R2___,               \
-        ___CARPLAX_QGMLWB_L3___, ___CARPLAX_QGMLWB_R3___
-
-
-#define ___CARPLAX_QGMLWY_L1___ KC_Q,    KC_G,    KC_M,    KC_L,    KC_W
-#define ___CARPLAX_QGMLWY_L2___ KC_D,    KC_S,    KC_T,    KC_N,    KC_R
-#define ___CARPLAX_QGMLWY_L3___ KC_Z,    KC_X,    KC_C,    KC_V,    KC_J
-
-#define ___CARPLAX_QGMLWY_R1___ KC_Y,    KC_F,    KC_U,    KC_B,    KC_SCLN
-#define ___CARPLAX_QGMLWY_R2___ KC_I,    KC_A,    KC_E,    KC_O,    KC_H
-#define ___CARPLAX_QGMLWY_R3___ KC_K,    KC_P,    KC_COMM, KC_DOT,  KC_SLSH
-
-#define ___CARPLAX_QGMLWY___ ___CARPLAX_QGMLWY_L1___, ___CARPLAX_QGMLWY_R1___, \
-        ___CARPLAX_QGMLWY_L2___, ___CARPLAX_QGMLWY_R2___,               \
-        ___CARPLAX_QGMLWY_L3___, ___CARPLAX_QGMLWY_R3___
-
-
-// BEPO Based Layouts.
-// Bepo, Dvorak and Beakl on fr-bepo software layer in the OS.
-// for dvorak and all the other qwerty like keyboards on bepo
-#define ___DVORAK_FR_L1___ DB_QUOT,    DB_COMM,  DB_DOT,  BP_P,  BP_Y
-#define ___DVORAK_FR_L2___ BP_A,       BP_O,     BP_E,    BP_U,  BP_I
-#define ___DVORAK_FR_L3___ DB_SCOLON,    BP_Q,     BP_J,    BP_K,  BP_X
-
-#define ___DVORAK_FR_R1___ BP_F, BP_G, BP_C,  BP_R,  BP_L
-#define ___DVORAK_FR_R2___ BP_D, BP_H, BP_T,  BP_N,  BP_S
-#define ___DVORAK_FR_R3___ BP_B, BP_M, BP_W,  BP_V,  BP_Z
-
-#define ___DVORAK_FR___ ___DVORAK_FR_L1___, ___DVORAK_FR_R1___, \
-        ___DVORAK_FR_L2___, ___DVORAK_FR_R2___,                 \
-        ___DVORAK_FR_L3___, ___DVORAK_FR_R3___
-
-/* BEAKL 15 (main layer): */
-
-#define ___DVORAK6_FR_L1___ DB_GRV,    ___DVORAK_FR_L1___
-#define ___DVORAK6_FR_L2___ TAB_BKTAB, ___DVORAK_FR_L2___
-#define ___DVORAK6_FR_L3___ ___,       ___DVORAK_FR_L3___
-
-#define ___DVORAK6_FR_R1___ ___DVORAK_FR_R1___,  BP_MIN
-#define ___DVORAK6_FR_R2___ ___DVORAK_FR_R2___,  BP_SLSH
-#define ___DVORAK6_FR_R3___ ___DVORAK_FR_R3___,  DB_BACKSLASH
-
-#define ___6DVORAK_FR___ ___6DVORAK_FR_L1___, ___6DVORAK_FR_R1___,      \
-        ___6DVORAK_FR_L2___, ___6DVORAK_FR_R2___,                       \
-        ___6DVORAK_FR_L3___, ___6DVORAK_FR_R3___
-
-// dont forget ; and -.  the 'a' home row is official placement.
-#define ___BEAKL15_FR_L1___          BP_Q, BP_H,     BP_O,    BP_U, BP_X
-#define ___BEAKL15_FR_L2___          BP_Y, BP_I,     BP_E,    BP_A, BB_DOT
-#define ___BEAKL15_FR_L2a___ BP_MIN, BP_Y, BP_I,     BP_E,    BP_A, BB_DOT
-#define ___BEAKL15_FR_L3___          BP_J, BP_SLSH, BB_COMM, BP_K, BB_QUOT
-
-#define ___BEAKL15_FR_R1___  BP_G, BP_C, BP_R, BP_F, BP_Z
-#define ___BEAKL15_FR_R2___  BP_D, BP_S, BP_T, BP_N, BP_B
-#define ___BEAKL15_FR_R2a___ BP_D, BP_S, BP_T, BP_N, BP_B, DB_SCLN
-#define ___BEAKL15_FR_R3___  BP_W, BP_M, BP_L, BP_P, BP_V
-
-#define ___6BEAKL15_FR___ ___, ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, ___, \
-        ___BEAKL15_FR_L2a___, ___BEAKL15_FR_R2a___,                     \
-        ___, ___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___, ___
-
-#define ___BEAKL15_FR___ ___BEAKL15_FR_L1___, ___BEAKL15_FR_R1___, \
-        ___BEAKL15_FR_L2___, ___BEAKL15_FR_R2___,                \
-        ___BEAKL15_FR_L3___, ___BEAKL15_FR_R3___
-
-#define ___BEPO_L1___             BP_B,    BP_EACU, BP_P,   BP_O,   BP_EGRV
-#define ___BEPO_L2___             BP_A,    BP_U,    BP_I,   BP_E,   BP_COMM
-#define ___BEPO_L3___ /*BP_ECRC*/ BP_AGRV, BP_Y,    BP_X,   BP_DOT, BP_K
-
-#define ___BEPO_R1___  /* BP_DCRC,*/  BP_V,     BP_D,  BP_L,  BP_J,  BP_Z
-#define ___BEPO_R2___  /* BP_C,   */  BP_T,     BP_S,  BP_R,  BP_N,  BP_M  //BP_CCED
-#define ___BEPO_R3___                 BP_QUOT,  BP_Q,  BP_G,  BP_H,  BP_F //BP_SFT_T_W
-
-// Bepo for a 3x6 split.  CCED switched hands. :-(  'Altgr-c c'  does the same.
-// W has to drop down to the bottom. Silly unbalanced layout.
-#define ___BEPO6_L1___  BP_CCED,   ___BEPO_L1___
-#define ___BEPO6_L2___  TAB_BKTAB, ___BEPO_L2___
-#define ___BEPO6_L3___  BP_ECIR,   ___BEPO_L3___
-
-#define ___BEPO6_R1___   ___BEPO_R1___, BP_PERC
-#define ___BEPO6_R2___   ___BEPO_R2___,  BP_C
-#define ___BEPO6_R3___   ___BEPO_R3___, BP_W
-
-#define ___BEPO6___ ___BEPO6_L1___, ___BEPO6_R1___,  \
-        ___BEPO6_L2___, ___BEPO6_R2___,              \
-        ___BEPO6_L3___, ___BEPO6_R3___
-
-#define ___BEPO___ ___BEPO_L1___, ___BEPO_R1___,  \
-        ___BEPO_L2___, ___BEPO_R2___,             \
-        ___BEPO_L3___, ___BEPO_R3___
-
-
-/*******************************************************************/
-/** TOP ROWS  Func,Symbols, Numbers you find there.               **/
-/*******************************************************************/
-// for everything on qwerty.
-#define ___NUMBER_L___ KC_1,    KC_2,    KC_3,    KC_4,    KC_5
-#define ___NUMBER_R___ KC_6,    KC_7,    KC_8,    KC_9,    KC_0
-
-#define ___NUMBER_BEAKL15_L___ KC_4, KC_0, KC_1, KC_2, KC_3
-#define ___NUMBER_BEAKL15_R___ KC_7, KC_6, KC_5, KC_9, KC_8
-
-// a top symbol row if someone wants it.
-#define ___SYMB_L___   KC_EXLM,   KC_AT,    KC_HASH,  KC_DLR,   KC_PERC
-#define ___SYMB_R___   KC_CIRC,   KC_AMPR,  KC_ASTR,   KC_LPRN,  KC_RPRN
-
-/// BEPO ////
-// For numbers on bepo. Bepo has numbers on shifted keys, the
-// reverse of many layouts.
-#define ___NUMBER_BEPO_L___ DB_1,   DB_2,   DB_3,   DB_4,   DB_5
-#define ___NUMBER_BEPO_R___ DB_6,   DB_7,   DB_8,   DB_9,   DB_0
-
-// In case you want to try BEAKL 15 Numbers
-#define ___NUMBER_BEAKL15_BP_L___ DB_4, DB_0, DB_1, DB_2, DB_3
-#define ___NUMBER_BEAKL15_BP_R___ DB_7, DB_6, DB_5, DB_9, DB_8
-
-// The top row.  Bepo has symbols not numbers. Numbers are the shifted values.
-// There are actually 13 keys specified for bepo.
-#define ___SYMBOL_BEPO_L___ /* BP_DLR */ BP_DQUO,  BP_LDAQ,   BP_RDAQ,   BP_LPRN,   BP_RPRN
-#define ___SYMBOL_BEPO_R___    BP_AT,    BP_PLUS,  BP_MINS,   BP_SLSH,  BP_ASTR /* BP_EQL,  BP_PERC */
-
-#define ___6SYMBOL_BEPO_L___  BP_DLR, ___SYMBOL_BEPO_L___
-#define ___6SYMBOL_BEPO_R___  ___SYMBOL_BEPO_R___, BP_EQL  /*  BP_PERC */
-
-// a top qwerty style symbol row if someone wants it.
-#define ___SYMB_L_FR___   DB_EXLM,   BP_AT,    BP_HASH,  BP_DLR,   BP_PERC
-#define ___SYMB_R_FR___   DB_CIRC,   BP_AMPR,  BP_ASTR,  BP_LPRN,  BP_RPRN
-
-
-// function key rows, works for everyone.
-#define ___FUNC_L___   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5
-#define ___FUNC_R___   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10
-
-#define ___FUNC_1_6___   KC_F1,   KC_F2,   KC_F3,   KC_F4,  KC_F5,  KC_F6
-#define ___FUNC_7_12___  KC_F7,   KC_F8,   KC_F9,   KC_F10, KC_F11, KC_F12
-
-#define ___FUNC_BEAKL_L___ KC_F4, KC_F10, KC_F1, KC_F2, KC_F3
-#define ___FUNC_BEAKL_R___ KC_F7, KC_F6, KC_F5, KC_F9, KC_F8
-
-#define ___12_FUNC_BEAKL___ KC_F11, ___FUNC_BEAKL_L___, ___FUNC_BEAKL_R___, KC_F12
-
-// Altogether. Defines all the various top rows that
-// are present with all these layouts.
-// All together as blocks of 10
-#define ___NUMS___      ___NUMBER_L___,         ___NUMBER_R___
-#define ___SYMS___      ___SYMB_L___,           ___SYMB_R___
-#define ___BKLNUMS___   ___NUMBER_BEAKL15_L___, ___NUMBER_BEAKL15_R___
-#define ___NUMS_BP___    ___NUMBER_BEPO_L___,    ___NUMBER_BEPO_R___
-#define ___SYMS_BEPO___ ___SYMBOL_BEPO_L___,    ___SYMBOL_BEPO_L___
-#define ___BKLNUMS_BP___  ___NUMBER_BEAKL15_BP_L___, ___NUMBER_BEAKL15_BP_R___
-#define ___FUNCS_1_10___ ___FUNC_L___, ___FUNC_R___

+ 101 - 0
users/ericgebhart/defs/accented_keys.def

@@ -0,0 +1,101 @@
+// Accented keys.
+// add them to the custom keys enum.
+// List them here, with their keycode and the accent keycode
+// that are needed to create them.
+
+
+// Last, most frequent letters in french.
+// é is further up.
+// 24	x	3 588 990	0.38%
+// 25	j	3 276 064	0.34%
+// 26	è	2 969 466	0.31%
+// 27	à	2 966 029	0.31%
+// 28	k	2 747 547	0.29%
+// 29	w	1 653 435	0.17%
+// 30	z	1 433 913	0.15%
+// 31	ê	802 211	0.08%
+// 32	ç	544 509	0.06%
+// 33	ô	357 197	0.04%
+// 34	â	320 837	0.03%
+// 35	î	280 201	0.03%
+// 36	û	164 516	0.02%
+// 37	ù	151 236	0.02%
+// 38	ï	138 221	0.01%
+// 39	á	73 751	0.01%	 - absent.
+// 79	ü	55 172	0.01%
+// 82	ë	53 862	0.01%
+//absent.
+// 83	ö	51 020	0.01%
+// 84	í	48 391	0.01%
+
+ // ACCENT
+// Custom key code,  Keycode, altgr accent keycode.
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
+ACCENTED(BP_OCIR, BP_O, BP_DCIR)
+ACCENTED(BP_ACIR, BP_A, BP_DCIR)
+ACCENTED(BP_ICIR, BP_I, BP_DCIR)
+ACCENTED(BP_UCIR, BP_U, BP_DCIR)
+//ACCENTED(BP_CCIR, BP_C, BP_DCIR)
+//ACCENTED(BP_GCIR, BP_G, BP_DCIR)
+//ACCENTED(BP_HCIR, BP_H, BP_DCIR)
+#endif
+
+ACCENTED(US_OCIR, US_O, US_DCIR)
+ACCENTED(US_ACIR, US_A, US_DCIR)
+ACCENTED(US_ICIR, US_I, US_DCIR)
+ACCENTED(US_UCIR, US_U, US_DCIR)
+ACCENTED(US_ECIR, US_E, US_DCIR)
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
+ACCENTED(BP_AACU, BP_A, BP_ACUT)
+ACCENTED(BP_OACU, BP_O, BP_ACUT)
+ACCENTED(BP_IACU, BP_I, BP_ACUT)
+ACCENTED(BP_UACU, BP_U, BP_ACUT)
+
+//ACCENTED(BP_OGRV, BP_O, BP_DGRV)
+ACCENTED(BP_IGRV, BP_I, BP_DGRV)
+#endif
+
+ACCENTED(US_IGRV, US_I, US_DGRV)
+ACCENTED(US_UGRV, US_U, US_DGRV)
+ACCENTED(US_EGRV, US_E, US_DGRV)
+ACCENTED(US_AGRV, US_A, US_DGRV)
+
+// ACCENTED(BP_NTIL, BP_N, BP_DTIL)
+// ACCENTED(BP_ATIL, BP_A, BP_DTIL)
+// ACCENTED(BP_OTIL, BP_O, BP_DTIL)
+// ACCENTED(BP_UTIL, BP_U, BP_DTIL)
+
+ACCENTED(US_IIAE, US_I, US_DIAE)
+ACCENTED(US_UIAE, US_U, US_DIAE)
+ACCENTED(US_EIAE, US_E, US_DIAE)
+ACCENTED(US_OIAE, US_O, US_DIAE)
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
+ACCENTED(BP_IIAE, BP_I, BP_DIAE)
+ACCENTED(BP_UIAE, BP_U, BP_DIAE)
+ACCENTED(BP_EIAE, BP_E, BP_DIAE)
+ACCENTED(BP_OIAE, BP_O, BP_DIAE)
+// ACCENTED(BP_AIAE, BP_A, BP_DIAE)
+#endif
+
+  // ACCENTED(E_ACUTE, SK_E, SK_ACUT)
+  // ACCENTED(R_ACUTE, SK_R, SK_ACUT)
+  // ACCENTED(U_ACUTE, SK_U, SK_ACUT)
+  // ACCENTED(I_ACUTE, SK_I, SK_ACUT)
+  // ACCENTED(O_ACUTE, SK_O, SK_ACUT)
+  // ACCENTED(A_ACUTE, SK_A, SK_ACUT)
+  // ACCENTED(L_ACUTE, SK_L, SK_ACUT)
+  // ACCENTED(Y_ACUTE, SK_Z, SK_ACUT)
+  // ACCENTED(T_CARON, SK_T, SK_CARN)
+  // ACCENTED(Z_CARON, SK_Y, SK_CARN)
+  // ACCENTED(O_CARON, SK_O, SK_CARN)
+  // ACCENTED(S_CARON, SK_S, SK_CARN)
+  // ACCENTED(D_CARON, SK_D, SK_CARN)
+  // ACCENTED(L_CARON, SK_L, SK_CARN)
+  // ACCENTED(C_CARON, SK_C, SK_CARN)
+  // ACCENTED(N_CARON, SK_N, SK_CARN)
+  // ACCENTED(U_UMLAU, SK_U, SK_DIAE
+  // ACCENTED(O_UMLAU,SK_O, SK_DIAE)
+  // // napis o s vokanom cez vokan rather than normalne aby sa dalo velke uo
+  // ACCENTED(O_CCIRC, SK_O, SK_CIRC)

+ 6 - 0
users/ericgebhart/defs/alt_shift.def

@@ -0,0 +1,6 @@
+// alt shift. Give an existing key code,
+// and maybe an alternate shift keycode.
+
+ALT_SHIFT(US_EXLM, US_PERC)
+SHIFT_FOR_2(US_AT)
+SHIFT_FOR_3(US_DLR)

+ 208 - 0
users/ericgebhart/defs/altlocal_keys.def

@@ -0,0 +1,208 @@
+// These are to create keys which don't exist in a locale.
+// so that we can create alternate maps to qwerty, azerty, or whatever.
+// Key name,
+// unshifted key and it's required mods.
+// the desired shifted keys and it's required mods.
+
+// for dvorak on bepo
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
+  MK_KEY(BP_DV_1,    BP_DQUO, MOD_LSFT,      BP_DCIR, MOD_LSFT)
+  MK_KEY(BP_DV_2,    BP_LDAQ, MOD_LSFT,      BP_AT, MOD_NONE)
+  MK_KEY(BP_DV_3,    BP_RDAQ, MOD_LSFT,      BP_DLR, MOD_LSFT)
+  MK_KEY(BP_DV_4,    BP_LPRN, MOD_LSFT,      BP_DLR, MOD_NONE)
+  MK_KEY(BP_DV_5,    BP_RPRN, MOD_LSFT,      BP_PERC, MOD_NONE)
+  MK_KEY(BP_DV_6,    BP_AT, MOD_LSFT,        BP_AT, MOD_BIT(KC_RALT))
+  MK_KEY(BP_DV_7,    BP_PLUS, MOD_LSFT,      BP_P, MOD_BIT(KC_RALT))
+  MK_KEY(BP_DV_8,    BP_MINS, MOD_LSFT,      BP_ASTR, MOD_NONE)
+  MK_KEY(BP_DV_9,    BP_SLSH, MOD_LSFT,      BP_LPRN, MOD_NONE)
+  MK_KEY(BP_DV_0,    BP_ASTR, MOD_LSFT,      BP_RPRN, MOD_NONE)
+
+  MK_KEY(BP_DV_GRV,  BP_PERC, MOD_LSFT,      BP_K, MOD_BIT(KC_RALT))
+  MK_KEY(BP_DV_SCLN, BP_COMM, MOD_LSFT,      BP_DOT, MOD_LSFT)
+  MK_KEY(BP_DV_SLSH, BP_SLSH, MOD_NONE,     BP_QUOT, MOD_LSFT)
+  //MK_KEY(BP_DV_BSLS, BP_AGRV, MOD_BIT(KC_RALT), BP_B, MOD_BIT(KC_RALT))
+  MK_KEY(BP_DV_EQL,  BP_EQL, MOD_NONE,       BP_PLUS, MOD_NONE)
+  MK_KEY(BP_DV_COMM, BP_COMM, MOD_NONE,      BP_LDAQ, MOD_BIT(KC_RALT))
+  MK_KEY(BP_DV_DOT,  BP_DOT, MOD_NONE,       BP_RDAQ, MOD_BIT(KC_RALT))
+  MK_KEY(BP_DV_QUOT, BP_QUOT, MOD_NONE,      BP_DQUO, MOD_NONE)
+  MK_KEY(BP_DV_MINS, BP_MINS, MOD_NONE,      KC_SPC, MOD_BIT(KC_RALT))
+#endif
+
+#if defined(BEAKL15_LAYER_ENABLE) || defined(BEAKL19_LAYER_ENABLE)
+  // Keys for BEAKL 15, 19 on Qwerty
+  MK_KEY(KC_BK_DOT,  KC_DOT, MOD_NONE,    KC_2, MOD_LSFT)
+  MK_KEY(KC_BK_COMM, KC_COMM, MOD_NONE,  KC_1, MOD_LSFT)
+  MK_KEY(KC_BK_QUOT, KC_QUOT, MOD_NONE,   KC_GRV, MOD_NONE)
+
+  MK_KEY(US_BK_DOT,  KC_DOT, MOD_NONE,    KC_2, MOD_LSFT)
+  MK_KEY(US_BK_COMM, KC_COMM, MOD_NONE,  KC_1, MOD_LSFT)
+  MK_KEY(US_BK_QUOT, KC_QUOT, MOD_NONE,   KC_GRV, MOD_NONE)
+
+  // Keys for BEAKL WI on Qwerty
+  MK_KEY(KC_BKW_DOT,  KC_DOT, MOD_NONE,   KC_GRV, MOD_NONE)
+  MK_KEY(KC_BKW_COMM, KC_COMM, MOD_NONE,  KC_TILD, MOD_NONE)
+  MK_KEY(KC_BKW_COLN, KC_SCLN, MOD_LSFT,  KC_SCLN, MOD_NONE)
+
+#  if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
+  // Keys for BEAKL on BEPO
+  MK_KEY(BP_BK_DOT,  BP_DOT, MOD_NONE,    BP_AT, MOD_NONE)
+  MK_KEY(BP_BK_COMM, BP_COMM, MOD_NONE,   BP_EXLM, MOD_NONE)
+  MK_KEY(BP_BK_QUOT, BP_QUOT, MOD_NONE,   BP_PERC, MOD_LSFT)
+
+
+#    ifdef BEAKLWI_LAYER_ENABLE
+  // Keys for BEAKL WI on BEPO
+  MK_KEY(BP_BKW_DOT,  BP_DOT, MOD_NONE,   BP_GRV, MOD_NONE)
+  MK_KEY(BP_BKW_COMM, BP_COMM, MOD_NONE,  BP_TILD, MOD_NONE)
+  MK_KEY(BP_BKW_COLN, BP_COLN, MOD_LSFT,  BP_SCLN, MOD_NONE)
+#    endif
+
+  // Keys for BEAKL 27 on BEPO
+#    ifdef BEAKL27_LAYER_ENABLE
+  MK_KEY(BP_BK2_DOT,  BP_DOT, MOD_NONE,    BP_GRV, MOD_NONE)
+  MK_KEY(BP_BK2_COMM, BP_COMM, MOD_NONE,   BP_QUES, MOD_NONE)
+  MK_KEY(BP_BK2_EXLM, BP_EXLM, MOD_NONE,   BP_PERC, MOD_LSFT)
+  MK_KEY(BP_BK2_QUOT, BP_QUOT, MOD_NONE,   BP_QUOT, MOD_NONE)
+#    endif
+#  endif
+#endif
+
+#ifdef BEAKL27_LAYER_ENABLE
+  // Keys for BEAKL 27 on Qwerty
+  /* // altered shifted pairs: dot = .`  comma = ,?   dquot = "! */
+  MK_KEY(KC_BK2_DOT, KC_DOT, MOD_NONE,    KC_GRV, MOD_NONE)
+  MK_KEY(KC_BK2_COMM, KC_COMM, MOD_NONE,  KC_QUES, MOD_NONE)
+  MK_KEY(KC_BK2_EXLM, KC_EXLM, MOD_NONE,   KC_DQUO, MOD_NONE)
+  MK_KEY(KC_BK2_QUOT, KC_QUOT, MOD_NONE,   KC_QUOT, MOD_NONE)
+
+  MK_KEY(US_BK2_DOT, US_DOT, MOD_NONE,    US_GRV, MOD_NONE)
+  MK_KEY(US_BK2_COMM, US_COMM, MOD_NONE,  US_QUES, MOD_NONE)
+  MK_KEY(US_BK2_EXLM, US_EXLM, MOD_NONE,   US_DQUO, MOD_NONE)
+  MK_KEY(US_BK2_QUOT, US_QUOT, MOD_NONE,   US_QUOT, MOD_NONE)
+#endif
+
+
+// shifted pairs: dot = .` comma = ,~  colon = :;
+
+#if defined(HD_NEU_LAYER_ENABLE) ||        \
+    defined(HD_NEU_NARROW_LAYER_ENABLE) || \
+    defined(HD_GOLD_LAYER_ENABLE) ||       \
+    defined(HD_SILVER_LAYER_ENABLE) ||     \
+    defined(HD_BRONZE_LAYER_ENABLE) ||     \
+    defined(HD_PLATINUM_LAYER_ENABLE) ||   \
+    defined(HD_REF_LAYER_ENABLE)
+
+// hands down alterations.
+/* alt shifts   ;: .& /\* '? "! ,| -+ */
+// for en qwerty
+  MK_KEY(KC_HD_DQUO, KC_QUOT, MOD_LSFT, KC_1,     MOD_LSFT) // "!
+  MK_KEY(KC_HD_QUOT, KC_QUOT, MOD_NONE, KC_SLSH,  MOD_LSFT) // '?
+
+  MK_KEY(KC_HD_DOT,  KC_DOT,  MOD_NONE, KC_7,     MOD_LSFT) // .&
+  MK_KEY(KC_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN,     MOD_LSFT) // ;:
+  MK_KEY(KC_HD_COMM, KC_COMM, MOD_NONE, KC_BSLS,  MOD_LSFT) // ,|
+  MK_KEY(KC_HD_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
+  MK_KEY(KC_HD_SLSH, KC_SLSH, MOD_NONE, KC_8,     MOD_LSFT) // /*
+
+  // for us international
+  MK_KEY(US_HD_DQUO, US_QUOT, MOD_LSFT, US_1,     MOD_LSFT)
+  MK_KEY(US_HD_QUOT, US_QUOT, MOD_NONE, KC_SLSH,  MOD_LSFT)
+
+  MK_KEY(US_HD_DOT,  US_DOT,  MOD_NONE, US_7,     MOD_LSFT)
+  MK_KEY(US_HD_SCLN, KC_SCLN, MOD_NONE, KC_SCLN,  MOD_LSFT) // ;:
+  MK_KEY(US_HD_COMM, US_COMM, MOD_NONE, US_BSLS,  MOD_LSFT)
+  MK_KEY(US_HD_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT)
+  MK_KEY(US_HD_SLSH, US_SLSH, MOD_NONE, US_8,     MOD_LSFT)
+
+// for bepo
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
+  MK_KEY(BP_HD_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE)
+  MK_KEY(BP_HD_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
+  MK_KEY(BP_HD_SCLN, BP_SCLN, MOD_NONE, BP_COLN, MOD_NONE) // ;:
+
+  MK_KEY(BP_HD_DOT,  BP_DOT,  MOD_NONE, BP_AMPR, MOD_NONE)
+  MK_KEY(BP_HD_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE)
+  MK_KEY(BP_HD_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE)
+  MK_KEY(BP_HD_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE)
+#endif
+
+#endif
+
+
+/* alt shifts   ;: .& /\* '? "! ,| -+  */
+#ifdef HD_DASH_LAYER_ENABLE
+// DASH and Elan have these reversed from the metals.
+/* //alt shift keys. "? '! */
+  MK_KEY(KC_HD_D_DQUO, KC_DQUO, MOD_NONE, KC_SLSH, MOD_LSFT) // "?
+  MK_KEY(KC_HD_D_QUOT, KC_QUOT, MOD_NONE, KC_1,    MOD_LSFT) // '!
+
+  MK_KEY(KC_HD_D_DOT,  KC_DOT,  MOD_NONE, KC_7,     MOD_LSFT) // .&
+  MK_KEY(KC_HD_D_COMM, KC_COMM, MOD_NONE, KC_BSLS,  MOD_LSFT) // ,|
+  MK_KEY(KC_HD_D_MINS, KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
+  MK_KEY(KC_HD_D_SLSH, KC_SLSH, MOD_NONE, KC_8,     MOD_LSFT) // /*
+
+  // for us international
+  MK_KEY(US_HD_D_DQUO, US_QUOT, MOD_LSFT, KC_SLSH,  MOD_LSFT)
+  MK_KEY(US_HD_D_QUOT, US_QUOT, MOD_NONE, US_1,     MOD_LSFT)
+
+  MK_KEY(US_HD_D_DOT,  US_DOT,  MOD_NONE, US_7,     MOD_LSFT)
+  MK_KEY(US_HD_D_COMM, US_COMM, MOD_NONE, US_BSLS,  MOD_LSFT)
+  MK_KEY(US_HD_D_MINS, US_MINS, MOD_NONE, US_EQL, MOD_LSFT)
+  MK_KEY(US_HD_D_SLSH, US_SLSH, MOD_NONE, US_8,     MOD_LSFT)
+
+// for bepo
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
+  MK_KEY(BP_HD_D_DQUO, BP_DQUO, MOD_NONE, BP_QUES, MOD_NONE)
+  MK_KEY(BP_HD_D_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
+
+  MK_KEY(BP_HD_D_DOT,  BP_DOT,  MOD_NONE, BP_AMPR, MOD_NONE)
+  MK_KEY(BP_HD_D_COMM, BP_COMM, MOD_NONE, BP_PIPE, MOD_NONE)
+  MK_KEY(BP_HD_D_MINS, BP_MINS, MOD_NONE, BP_PLUS, MOD_NONE)
+  MK_KEY(BP_HD_D_SLSH, BP_SLSH, MOD_NONE, BP_ASTR, MOD_NONE)
+#endif
+
+#endif
+
+#ifdef HD_ELAN_LAYER_ENABLE
+// Elan has alt shift of comma and dot on the thumb.
+// en
+  MK_KEY(KC_HD_E_DQUO, KC_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
+  MK_KEY(KC_HD_E_QUOT, KC_QUOT, MOD_NONE, KC_1, MOD_LSFT)
+// the rest is the same
+  MK_KEY(KC_HD_E_MINS,    KC_MINS, MOD_NONE, KC_EQL, MOD_LSFT) // -+
+  MK_KEY(KC_HD_E_SLSH,    KC_SLSH, MOD_NONE, KC_8,     MOD_LSFT) // /*
+// until .: and ,;
+  MK_KEY(KC_HD_E_DOT,   KC_DOT,  MOD_NONE, KC_SCLN, MOD_LSFT) // .:
+  MK_SKEY(KC_HD_E_COMM, KC_COMM, KC_SCLN) // ,;
+/* (< {[ */
+  MK_KEY(KC_HD_E_LPRN, KC_LPRN, MOD_NONE, KC_COMM, MOD_LSFT)
+  MK_KEY(KC_HD_E_LCBR, KC_LCBR, MOD_NONE, KC_LBRC, MOD_NONE )
+
+// US-intl
+  MK_KEY(US_HD_E_DQUO, US_QUOT, MOD_LSFT, KC_SLSH, MOD_LSFT)
+  MK_KEY(US_HD_E_QUOT, US_QUOT, MOD_NONE, US_1, MOD_LSFT)
+// the rest is the same
+  MK_KEY(US_HD_E_MINS,    US_MINS, MOD_NONE, US_EQL, MOD_LSFT) // -+
+  MK_KEY(US_HD_E_SLSH,    US_SLSH, MOD_NONE, US_8,     MOD_LSFT) // /*
+// until .: and ,;
+  MK_KEY(US_HD_E_DOT,   KC_DOT,  MOD_NONE, US_SCLN, MOD_LSFT) // .:
+  MK_SKEY(US_HD_E_COMM, US_COMM, US_SCLN) // ,;
+/* (< {[ */
+  MK_KEY(US_HD_E_LPRN, US_LPRN, MOD_NONE, US_COMM, MOD_LSFT)
+  MK_KEY(US_HD_E_LCBR, US_LCBR, MOD_NONE, US_LBRC, MOD_NONE )
+
+// bepo
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
+  MK_KEY(BP_HD_E_DQUO, BP_DQUO, MOD_NONE, BP_SLSH, MOD_NONE)
+  MK_KEY(BP_HD_E_QUOT, BP_QUOT, MOD_NONE, BP_EXLM, MOD_NONE)
+// the rest is the same
+  MK_KEY(BP_HD_E_MINS,    BP_MINS, MOD_NONE,   BP_EQL, MOD_NONE) // -+
+  MK_KEY(BP_HD_E_SLSH,    BP_SLSH, MOD_NONE,   BP_ASTR,  MOD_NONE) // /*
+// until .: and ,;
+  MK_KEY(BP_HD_E_DOT,   KC_DOT,  MOD_NONE, BP_SCLN, MOD_LSFT) // .:
+  MK_SKEY(BP_HD_E_COMM, BP_COMM, BP_SCLN) // ,;
+/* (< {[ */
+  MK_KEY(BP_HD_E_LPRN, BP_LPRN, MOD_NONE, BP_COMM, MOD_LSFT)
+  MK_KEY(BP_HD_E_LCBR, BP_LCBR, MOD_NONE, BP_LBRC, MOD_NONE )
+#endif
+#endif

+ 139 - 0
users/ericgebhart/defs/combos.def

@@ -0,0 +1,139 @@
+// Per layer combo reference layers.
+// Default is current layer, or COMBO_REF_DEFAULT if set.
+// _COMBO_REF is the default if enabled.
+
+//COMBO_REF_LAYER(_DVORAK_BP, _COMBO_REF2)
+COMBO_REF_LAYER(_NAV, _NAV)
+
+
+// COMBOS
+//   name      result           chord keys
+
+// sml nav, sml keypad, zqxj, onshot accents, oneshot symbols
+// home, end, caps word, accents? -> aeeecio oe, ao,
+
+
+// reference COMBO_REF
+COMB(TSCTL,      TS_LCTL,       CB_1L3, CB_1L4)
+COMB(SMLNAV1,    SML_NAV,       CB_1L2, CB_1L3)
+COMB(OSACCENTMT, SML_KEYPAD,    CB_1L2, CB_1R4)
+
+#ifdef TOPROWS_LAYER_ENABLE
+COMB(OSTOPROWS,  SML_TOPROWS,   CB_1L3, CB_1R3)
+#endif
+
+//COMB(OSlsftT,    OS_LSFT,       CB_1L4, CB_1R2)
+COMB(OSSFT,      OS_LSFT,        CB_2L4, CB_2R2)
+COMB(TSCTL2,     TS_LCTL,       CB_1L4, CB_1R2)
+
+// COMB(SMLNAV,  SML_NAV,        CB_2L4, CB_2R2)
+COMB(OSCTL,      OS_LCTL,        CB_2L2, CB_2R4)
+
+COMB(OSACCENTM, OSL_ACCENTS_MORTE,  CB_2L3, CB_2R3)
+
+COMB(capsword,  CAPS_WORD,      CB_3L4, CB_3R2)
+COMB(OSRALT,    OS_RALT,        CB_3L3, CB_3R3)
+COMB(OSLALT2,   OS_LALT,        CB_3L2, CB_3R4)
+
+COMB(OSLAYER,   LAYER_OSL,      CB_3L1, CB_3R5)
+COMB(OSLSYMB,   OSL_SYMB,       CB_TH2, CB_TH5)
+COMB(LNAV,      SML_NAV,        CB_TH3, CB_TH4)
+
+COMB(_Q,  KC_Q, CB_3L2, CB_3L3)
+COMB(_X,  KC_X, CB_3L3, CB_3L4)
+COMB(_Z,  KC_Z, CB_3R3, CB_3R4)
+
+// vertical thumb combos for the kyria
+//COMB(xxx,      xxx,            CB_TH2, CB_0TH1)
+
+#ifdef MEDIA_LAYER_ENABLE
+COMB(SMLMEDIA,      SML_MEDIA,            CB_TH3, CB_0TH2)
+#endif
+
+COMB(OSLACCENT2,    OSL_ACCENTS_MORTE,        CB_TH4, CB_0TH3)
+COMB(KEYPAD,   SML_KEYPAD,     CB_TH5, CB_0TH4)
+
+
+
+// reference COMBO_REF2
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO)
+COMB(TSCTL_BP,     TS_LCTL,        CB_1L3, CB_1L4)
+COMB(SMLNAV1_bp,   SML_NAV,        CB_1L2, CB_1L3)
+
+#ifdef ACCENTS_MORTE_LAYER_ENABLE
+COMB(OSLACCENT_bp, OSL(_ACCENTS_MORTE_BP),  CB2_2L1, CB2_2L2)
+#endif
+
+COMB(SMLNAV_BP,    SML_NAV,        CB2_2L2, CB2_2L3)
+COMB(OSCTL_BP,     OS_LCTL,        CB2_2L3, CB2_2L4)
+
+COMB(OSSFT_BP,     OS_LSFT,        CB2_2R2, CB2_2R3)
+// COMB(SMLKEYPAD_BP, SML_KEYPAD_BP,  CB2_2R3, CB2_2R4)
+
+COMB(capsword_BP,  CAPS_WORD_ON,   CB2_3L4, CB2_3R2)
+
+// COMB(OSLSYMBP_BP,  OSL(_SYMB_BP),  CB2_TH2, CB2_TH5)
+COMB(LNAV_BP,      SML_NAV,        CB2_TH3, CB2_TH4)
+
+COMB(_Qbp,  BP_Q, CB2_3L2, CB2_3L3)
+COMB(_Xbp,  BP_X, CB2_3L3, CB2_3L4)
+COMB(_Zbp,  BP_Z, CB2_3R3, CB2_3R4)
+#endif
+
+
+// Reference nav layer
+COMB(END_nav,   KC_END,  KC_PGUP, KC_PGDN)
+COMB(HOME_nav,  KC_HOME, KC_UP,   KC_DOWN)
+
+
+//COMB(JKL_SPC,  KC_SPC,   KC_J,  KC_X)
+//SUBS(TH_THE,   "the",    KC_T,  KC_H) // SUBS uses SEND_STRING to output the given string.
+
+// from possum vibes to review.
+/*    COMBO NAME       | OUTPUT    | PARAMS    */
+
+// /*---- TOP ROW ----*/
+// COMB(turbonav,          NAV_TG,     KC_W, KC_R)         // Nav access
+// COMB(save,              S_SAVE,     KC_E, KC_R)         // Save
+// COMB(back_fwd,          BCK_FWD,    KC_R, KC_T)         // Back/Fwd (shifted)
+
+// COMB(undo_redo,         UND_RED,    KC_Y, KC_U)         // Undo/Redo (shifted)
+// COMB(esc,               KC_ESC,     KC_U, KC_O)         // Esc
+
+// #ifdef IS_PINKY_CLUSTER
+// COMB(delete,            KC_DEL,     KC_A, KC_SCLN)
+// COMB(caps,              KC_CAPS,    KC_Q, KC_P)
+// #endif
+
+// /*---- HOME ROW ----*/
+// COMB(cut,               S_CUT,      KC_S, KC_F)         // Shift+Del (cut)
+// COMB(copy,              S_COPY,     KC_S, KC_D)         // Ctrl+Ins (copy)
+// COMB(paste,             S_PASTE,    KC_D, KC_F)         // Shift+Del (paste)
+// COMB(panic,             PANIC,      KC_D, KC_K)         // panic!
+
+// COMB(nummode,           NUMMODE,    KC_J, KC_K)         // Nummode toggle
+// COMB(symmode,           SYM_TG,     KC_K, KC_L)         // Sym layer
+// COMB(tab,               KC_TAB,     KC_K, KC_M)         // Tab
+
+
+// /*---- BOTTOM ROW ----*/
+// COMB(hash,              KC_HASH,    KC_X, KC_C)         // #
+// COMB(fslash,            KC_SLSH,    KC_C, KC_V)         // /
+
+// COMB(dash,              KC_MINS,    KC_M, KC_COMM)      // -
+// COMB(asterisk,          KC_ASTR,    KC_COMM, KC_DOT)    // *
+// COMB(at,                KC_AT,      KC_M, KC_DOT)       // @
+
+
+// /*---- THUMBS ----*/
+// COMB(sys_lthm,          SYS_OSL,    KC_B, KC_ENT)       // Sys OSL
+
+// COMB(space_shift,       SPC_SFT,    KC_TAB, KC_SPC)     // space and activate oss
+
+// COMB(underscore_rthm,   KC_UNDS,    KC_SPC, KC_N)       // _
+
+// /*---- THUMB+ALPHAS ----*/
+// // COMB(os_fun,            FUN_OSL,    KC_ENT, KC_C)       // OS Func
+// // COMB(os_num,            NUM_OSL,    KC_A, KC_F)         // OSL num
+// // COMB(os_sym,            SYM_OSL,    KC_SPC, KC_M)       // OSL sym

+ 86 - 0
users/ericgebhart/defs/custom_keys.def

@@ -0,0 +1,86 @@
+// custom key codes.
+  EPRM,
+  //VRSN,
+  CAPS_WORD_ON,
+
+  // LAYERStuff.
+  KC_NEXT_LOCALE,
+  KC_NEXT_BASE_LAYER,
+  KC_SET_BASE,
+  // Misc.
+  KC_MAKE,
+  KC_RESET,
+  KC_RGB_T,
+  RGB_IDL,
+  KC_SECRET_1,
+  KC_SECRET_2,
+  KC_SECRET_3,
+  KC_SECRET_4,
+  KC_SECRET_5,
+
+  KC_SPACETEST,
+
+  /// Need to evaluate which to keep.
+  BCK_FWD,  // Alt left and right
+  CLEAR,    // Clears all mods, does not change layers.
+  LOCKSCR,  // locks screen per is_windows value
+  PANIC,    // Clears all One-Shot keys and returns to base layer.
+  UND_RED,  // Ctrl Z and Y
+
+  // macros
+  QMKCOMP,  // qmk compile
+  QMKFLSH,  // qmk flash
+
+  // Swapper keys - just the swapper key, maybe gets reused.
+  SW_REV,  // Dead key, reverse direction for swapper
+
+// for the combo ref layers.
+  CB_0M1, CB_0M2, CB_0M3,
+  CB_1M1, CB_1M2, CB_1M3,
+  CB_2M1, CB_2M2, CB_2M3,
+  CB_3M1, CB_3M2, CB_3M3,
+  CB_4M1, CB_4M2, CB_4M3, CB_4M4, CB_4M5,
+
+  CB_1,  CB_2, CB_3, CB_4, CB_5, CB_6, CB_7, CB_8, CB_9, CB_0,
+
+  CB_1R1, CB_1R2, CB_1R3, CB_1R4, CB_1R5,
+  CB_1L1, CB_1L2, CB_1L3, CB_1L4, CB_1L5,
+  CB_2R1, CB_2R2, CB_2R3, CB_2R4, CB_2R5,
+  CB_2L1, CB_2L2, CB_2L3, CB_2L4, CB_2L5,
+  CB_3R1, CB_3R2, CB_3R3, CB_3R4, CB_3R5,
+  CB_3L1, CB_3L2, CB_3L3, CB_3L4, CB_3L5,
+  CB_4L1, CB_4L2, CB_4L3, CB_4L4, CB_4L5,
+  CB_4R1, CB_4R2, CB_4R3, CB_4R4, CB_4R5,
+
+  CB2_0M1, CB2_0M2, CB2_0M3,
+  CB2_1M1, CB2_1M2, CB2_1M3,
+  CB2_2M1, CB2_2M2, CB2_2M3,
+  CB2_3M1, CB2_3M2, CB2_3M3,
+  CB2_4M1, CB2_4M2, CB2_4M3, CB2_4M4, CB2_4M5,
+
+  CB2_1, CB2_2, CB2_3, CB2_4, CB2_5, CB2_6, CB2_7, CB2_8, CB2_9, CB2_0,
+
+  CB2_1R1, CB2_1R2, CB2_1R3, CB2_1R4, CB2_1R5,
+  CB2_1L1, CB2_1L2, CB2_1L3, CB2_1L4, CB2_1L5,
+  CB2_2R1, CB2_2R2, CB2_2R3, CB2_2R4, CB2_2R5,
+  CB2_2L1, CB2_2L2, CB2_2L3, CB2_2L4, CB2_2L5,
+  CB2_3R1, CB2_3R2, CB2_3R3, CB2_3R4, CB2_3R5,
+  CB2_3L1, CB2_3L2, CB2_3L3, CB2_3L4, CB2_3L5,
+  CB2_4L1, CB2_4L2, CB2_4L3, CB2_4L4, CB2_4L5,
+  CB2_4R1, CB2_4R2, CB2_4R3, CB2_4R4, CB2_4R5,
+
+// core 6 thumb keys for combo reference layer
+ CB_TH1, CB_TH2, CB_TH3, CB_TH4, CB_TH5, CB_TH6,
+ CB2_TH1, CB2_TH2, CB2_TH3, CB2_TH4, CB2_TH5, CB2_TH6,
+ CB_1TH1,  CB_1TH2, CB_1TH3, CB_1TH4, CB_1TH5, CB_1TH6,
+ CB2_1TH1, CB2_1TH2, CB2_1TH3, CB2_1TH4, CB2_1TH5, CB2_1TH6,
+
+ // for the extra thumb keys on the kyria
+ CB_0TH1 , CB_0TH2, CB_0TH3, CB_0TH4,
+ CB_THA, CB_THB, CB_THC, CB_THD,
+
+// edge keys for the combo reference layer
+ L0_CB, L1_CB, L2_CB, L3_CB,
+ R0_CB, R1_CB, R2_CB, R3_CB,
+ L0_CB2, L1_CB2, L2_CB2, L3_CB2,
+ R0_CB2, R1_CB2, R2_CB2, R3_CB2,

+ 65 - 0
users/ericgebhart/defs/encoders.def

@@ -0,0 +1,65 @@
+// Layer/none, encoder index 0/1, CW_KC, CCW_KC, Qualifying mod or none
+// LAYER_NONE and MOD_NONE for a single use.
+// LEFT and RIGHT for index. 0 and 1...
+
+// default encoders, all layers no mods.
+ENCODER_ACTION(LAYER_NONE, RIGHT,  KC_PGDN, KC_PGUP, MOD_NONE)
+ENCODER_ACTION(LAYER_NONE, LEFT,   KC_DOWN, KC_UP,   MOD_NONE)
+ENCODER_ACTION(LAYER_NONE, LEFT,   KC_PGDN, KC_PGUP, MOD_LSFT)
+
+// Symbol layer encoders.
+// left and right.
+ENCODER_ACTION(_SYMB_EN, LEFT, KC_LEFT,       KC_RIGHT,       MOD_NONE)
+// word left or right.
+ENCODER_ACTION(_SYMB_EN, LEFT, LCTL(KC_LEFT), LCTL(KC_RIGHT), MOD_NONE)
+
+// Nav layer encoders.
+ENCODER_ACTION(_NAV, LEFT, KC_TAB,  S(KC_TAB), MOD_NONE)
+ENCODER_ACTION(_NAV, RIGHT, A(KC_TAB),  A(S(KC_TAB)), MOD_NONE)
+ENCODER_ACTION(_NAV, RIGHT, KC_VOLU, KC_VOLD,   MOD_NONE)
+
+// RGB functions for the RGB layer.
+#ifdef RGB_MATRIX_ENABLE
+    ENCODER_FUNCTION(_RGB, LEFT,
+                rgb_matrix_increase_speed_noeeprom,
+                rgb_matrix_decrease_speed_noeeprom, MOD_NONE)
+
+    ENCODER_FUNCTION(_RGB, RIGHT,
+                rgb_matrix_increase_hue_noeeprom,
+                rgb_matrix_decrease_hue_noeeprom, MOD_NONE)
+
+    ENCODER_FUNCTION(_RGB, LEFT,
+                rgb_matrix_increase_sat_noeeprom,
+                rgb_matrix_decrease_sat_noeeprom, MOD_LSFT)
+
+    ENCODER_FUNCTION(_RGB, RIGHT,
+                rgb_matrix_increase_val_noeeprom,
+                rgb_matrix_decrease_val_noeeprom, MOD_LSFT)
+
+    ENCODER_FUNCTION(_RGB, LEFT,
+                rgb_matrix_step_noeeprom;
+                rgb_matrix_step_reverse_noeeprom, MOD_LCTL)
+
+#elif defined(RGBLIGHT_ENABLE)
+
+    ENCODER_FUNCTION(_RGB, LEFT,
+                rgblight_increase_speed_noeeprom,
+                rgblight_decrease_speed_noeeprom, MOD_NONE)
+
+    ENCODER_FUNCTION(_RGB, RIGHT,
+                rgblight_increase_hue_noeeprom,
+                rgblight_decrease_hue_noeeprom, MOD_NONE)
+
+    ENCODER_FUNCTION(_RGB, LEFT,
+                rgblight_increase_sat_noeeprom,
+                rgblight_decrease_sat_noeeprom, MOD_LSFT)
+
+    ENCODER_FUNCTION(_RGB, RIGHT,
+                rgblight_increase_val_noeeprom,
+                rgblight_decrease_val_noeeprom, MOD_LSFT)
+
+
+    ENCODER_FUNCTION(_RGB, LEFT,
+                rgblight_step_noeeprom,
+                rgblight_step_reverse_noeeprom, MOD_LCTL)
+    #endif // RGB_MATRIX_ENABLE || RGBLIGHT_ENABLE

+ 23 - 0
users/ericgebhart/defs/key_overrides.def

@@ -0,0 +1,23 @@
+//KOL -> name, mod_mask, keycode, sendkeycode, layer to apply.
+
+// // these are actually handled by alt_local_keys, in a more universal
+// // and adaptable way.
+// KOL(slash_pipe,      MOD_MASK_SHIFT, KC_SLSH, KC_PIPE, _DVORAK_EN)
+
+// this one is interesting.
+KOL(slash_backslash, MOD_MASK_ALT,   KC_SLSH, KC_BSLS, _DVORAK_EN)
+
+// KOL(N2_dot,          MOD_MASK_SHIFT, KC_2,    KC_DOT,   _KEYPAD_EN)
+// KOL(N3_comma,        MOD_MASK_SHIFT, KC_3,    KC_COMMA, _KEYPAD_EN)
+
+// KOL(hash_at,         MOD_MASK_SHIFT, KC_HASH,    KC_AT,          _CDH)
+// KOL(dot_colon,       MOD_MASK_SHIFT, KC_DOT,     KC_COLN,        _CDH)
+// KOL(comma_semicolon, MOD_MASK_SHIFT, KC_COMMA,   KC_SCLN,        _CDH)
+// KOL(space_unds,      MOD_MASK_SHIFT, KC_SPACE,   KC_UNDS,        _CDH)
+// KOL(mins_exlm,       MOD_MASK_SHIFT, KC_MINS,    KC_EXLM,        _CDH)
+
+// KOL(bspc_del,        MOD_MASK_SHIFT, KC_BSPC,    KC_DEL,         _NAV)
+
+// KOL(zero_degree,     MOD_MASK_SHIFT, KC_0,       DEGREE,         _KEYPAD_EN)
+
+// KOL(eur_pnd,         MOD_MASK_SHIFT, KC_EUR,     KC_PND,         _SYMB_EN)

+ 19 - 0
users/ericgebhart/defs/mod_lock.def

@@ -0,0 +1,19 @@
+// mod lock keys. takes keymods not mods.
+// keycode should be defined in custom_keys.def.
+// custom key,  modkey to activate
+MODL(ML_LSFT, KC_LSFT)
+MODL(ML_LCTL, KC_LCTL)
+MODL(ML_LALT, KC_LALT)
+MODL(ML_LGUI, KC_LGUI)
+
+// Keycodes which will NOT cancel mod lock mode.
+IGNORE_KC( KC_LEFT)
+IGNORE_KC( KC_RGHT)
+IGNORE_KC( KC_UP)
+IGNORE_KC( KC_DOWN)
+IGNORE_KC( KC_HOME)
+IGNORE_KC( KC_END)
+IGNORE_KC( ML_LALT)
+IGNORE_KC( ML_LCTL)
+IGNORE_KC( ML_LGUI)
+IGNORE_KC( ML_LSFT)

+ 19 - 0
users/ericgebhart/defs/not_dead.def

@@ -0,0 +1,19 @@
+// Make not dead keys from dead keys.
+// Not dead keycode, dead key
+NOT_DEAD(KC_DQUO_ND, KC_DQUO)
+NOT_DEAD(KC_GRV_ND,  KC_GRV)
+NOT_DEAD(KC_QUOT_ND, KC_QUOT)
+NOT_DEAD(KC_CIRC_ND, KC_CIRC)
+NOT_DEAD(KC_TILD_ND, KC_TILD)
+
+NOT_DEAD(US_DQUO_ND, US_DQUO)
+NOT_DEAD(US_GRV_ND,  US_GRV)
+NOT_DEAD(US_QUOT_ND, US_QUOT)
+NOT_DEAD(US_CIRC_ND, US_CIRC)
+NOT_DEAD(US_TILD_ND, US_TILD)
+
+NOT_DEAD(BP_DQUO_ND, BP_DQUO)
+NOT_DEAD(BP_GRV_ND,  BP_GRV)
+NOT_DEAD(BP_QUOT_ND, BP_QUOT)
+NOT_DEAD(BP_CIRC_ND, BP_CIRC)
+NOT_DEAD(BP_TILD_ND, BP_TILD)

+ 45 - 0
users/ericgebhart/defs/nshot.def

@@ -0,0 +1,45 @@
+// Define keycodes in custom keys.
+// KEYCode, mod keycode, to set for n-shot.
+// ONESHOT is for one.
+// NSHOT takes a count.
+
+// oneshots
+ONESHOT(OS_LSFT, KC_LSFT)
+ONESHOT(OS_LCTL, KC_LCTL)
+ONESHOT(OS_LALT, KC_LALT)
+ONESHOT(OS_LGUI, KC_LGUI)
+
+ONESHOT(OS_RSFT, KC_RSFT)
+ONESHOT(OS_RCTL, KC_RCTL)
+ONESHOT(OS_RALT, KC_RALT)
+ONESHOT(OS_RGUI, KC_RGUI)
+
+// N-Shots
+NSHOT(TS_LCTL, KC_LCTL, 2)
+NSHOT(TS_RCTL, KC_RCTL, 2)
+
+// Keys which will cancel the n-shots.
+CANCEL_KEY( PANIC)
+CANCEL_KEY( CLEAR)
+//CANCEL_KEY( THM_LH0)
+//CANCEL_KEY( THM_LH1)
+//CANCEL_KEY( THM_RH0)
+//CANCEL_KEY( THM_RH1)
+
+// inherited from @possumvibes, keeping for now.
+// Keys which will be ignored by n-shots.
+//IGNORE_KEY( THM_LH0)
+//IGNORE_KEY( THM_LH1)
+//IGNORE_KEY( THM_RH0)
+//IGNORE_KEY( THM_RH1)
+//IGNORE_KEY( SYM_OSL)
+//IGNORE_KEY( SYM_TG)
+//IGNORE_KEY( NAV_TG)
+//IGNORE_KEY( NUM_OSL)
+//IGNORE_KEY( NUM_TO)
+//IGNORE_KEY( FUN_OSL)
+//IGNORE_KEY( ALPHA)
+IGNORE_KEY( SML_NAV)
+IGNORE_KEY( SPC_TOPR)
+// IGNORE_KEY( SML_KEYPAD)
+//IGNORE_KEY( SML_TOPROWS)

+ 17 - 0
users/ericgebhart/defs/oneshot.def

@@ -0,0 +1,17 @@
+// custom-key, Oneshot name.
+  ONESHOT( OS_LSFT, ONESHOT_LSFT)
+  ONESHOT( OS_LCTL, ONESHOT_LCTL)
+  ONESHOT( OS_LALT, ONESHOT_LALT)
+  ONESHOT( OS_LGUI, ONESHOT_LGUI)
+
+// keys to cancel
+  CANCEL_KEY( KC_ESC)
+
+//  CANCEL_KEY( KC_FNAV)
+//  CANCEL_KEY( KC_FNUM)
+//  CANCEL_KEY( KC_FCAPS)
+
+// keys to ignore.
+IGNORE_KEY( SPC_NAV)
+//  IGNORE_KEY( KC_FNAV)
+//  IGNORE_KEY( KC_FSYM)

+ 7 - 0
users/ericgebhart/defs/send_string.def

@@ -0,0 +1,7 @@
+// key to be defined and string to send.
+
+//SEND_STR(MYKEY, "this is a test")
+//SEND_STR_DELAY(MYKEY4, "this is another test")
+
+SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " @ " QMK_VERSION ", Built on: " QMK_BUILDDATE)
+// SEND_STR_DELAY(VRSN, QMK_KEYBOARD ":" QMK_KEYMAP " # @ " QMK_VERSION)

+ 123 - 0
users/ericgebhart/defs/smart_lock.def

@@ -0,0 +1,123 @@
+// Define smart layers here.
+// SMLL = smart lock layer.
+// SMLM = smart lock mod.
+
+// Keycode, layer/mod.
+// list of keycodes to ignore.
+
+SMLM(SMLM_LSFT, MOD_LSFT,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_LCTL, MOD_LCTL,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_LALT, MOD_LALT,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_LGUI, MOD_LGUI,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_RSFT, MOD_RSFT,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_RCTL, MOD_RCTL,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_RALT, MOD_RALT,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLM(SMLM_RGUI, MOD_RGUI,
+  ___VI_ARROWS___,
+  ___HOME_PGDN_PGUP_END___,
+  ___TAB_PGDN_PGUP_BKTAB___,
+  ___SML_MODS_L___)
+
+SMLL(SML_NAV, _NAV, ___NAV_3x10___)
+
+#ifdef MEDIA_LAYER_ENABLE
+SMLL(SML_MEDIA, _MEDIA, ___MEDIA_3x10___)
+#endif
+
+#ifdef MOUSEKEY_ENABLE
+SMLL(SML_NAVm, _NAVm, ___NAVm_3x10___)
+#endif
+
+SMLL(SML_KEYPAD, _KEYPAD_EN,
+  KC_1,
+  KC_2,
+  KC_3,
+  KC_4,
+  KC_5,
+  KC_6,
+  KC_7,
+  KC_8,
+  KC_9,
+  KC_0,
+  KC_PERC,
+  KC_DLR,
+  KC_COMM,
+  KC_DOT,
+  KC_SLSH,
+  KC_MINS,
+  KC_ASTR,
+  KC_PLUS,
+  KC_COLN,
+  KC_SCLN,
+  KC_EQL,
+  // KC_UNDS,
+  KC_BSPC,
+  KC_X,
+  SYM_MO)
+
+// SMLL(SML_KEYPAD_BP, _KEYPAD_BP,
+//   BP_1,
+//   BP_2,
+//   BP_3,
+//   BP_4,
+//   BP_5,
+//   BP_6,
+//   BP_7,
+//   BP_8,
+//   BP_9,
+//   BP_0,
+//   BP_PERC,
+//   BP_DLR,
+//   BP_COMM,
+//   BP_DOT,
+//   BP_SLSH,
+//   BP_MINS,
+//   BP_ASTR,
+//   BP_PLUS,
+//   BP_COLN,
+//   BP_SCLN,
+//   BP_EQL,
+//   // KC_UNDS,
+//   KC_BSPC,
+//   BP_X,
+//   SYM_MO)
+
+#ifdef TOPROWS_LAYER_ENABLE
+SMLL(SML_TOPROWS, _TOPROWS_EN, ___10_SYMBOLS___, ___10_NUMBERS___)
+#endif
+//SMLL(SML_SYMB, _SYMB_EN, ___SYMB_BEAKLB_3x10___)

+ 3 - 0
users/ericgebhart/defs/swapper.def

@@ -0,0 +1,3 @@
+// KEYCODE, Reverseit kc, KC to send, KC to send in reverse, MODs to apply.
+SWAPPER_KEY(SW_WIN, SW_REV, KC_TAB, S(KC_TAB), KC_LALT)
+SWAPPER_KEY(SW_TAB, SW_REV, KC_TAB, S(KC_TAB), KC_LCTL)

+ 68 - 0
users/ericgebhart/defs/tap_hold.def

@@ -0,0 +1,68 @@
+// tap or long tap for different key.
+
+// One key copy/paste
+TP_TPL(KC_CCCV, LCTL(KC_C), LCTL(KC_V))
+// New TaB/Window
+TP_TPL(KC_CTCN, LCTL(KC_T), LCTL(KC_N))
+// Close Tab-window/Quit
+TP_TPL(KC_CWCQ, LCTL(KC_W), LCTL(KC_Q))
+// Xmonad scratch pads or desktop
+//TP_TPL(KC_XM_PORD, LGUI(KC_E), LGUI(KC_T))
+
+//TP_SML(ENTNAV, KC_ENTER, SML_NAV)
+
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
+TP_TPL(BP_CCCV, LCTL(BP_C), LCTL(BP_V))
+TP_TPL(BP_CTCN, LCTL(BP_T), LCTL(BP_N))
+TP_TPL(BP_CWCQ, LCTL(BP_W), LCTL(BP_Q))
+TP_TPL(BP_XM_PORD, LGUI(BP_E), LGUI(BP_T))
+
+TP_TPL(BP_C_CCED, BP_C, BP_CCED)
+#endif
+
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == US_INT) || (DEFAULT_LANG == US_INT)
+TP_TPL(US_CCCV, LCTL(US_C), LCTL(US_V))
+TP_TPL(US_CTCN, LCTL(US_T), LCTL(US_N))
+TP_TPL(US_CWCQ, LCTL(US_W), LCTL(US_Q))
+TP_TPL(US_XM_PORD, LGUI(US_E), LGUI(US_T))
+
+TP_TPL(US_C_CCED, US_C, US_CCED)
+#endif
+
+// Open on tap and Open with close and back arrow on hold.
+// (){}[]""''``<>
+#  if defined(SECOND_LOCALE) && (SECOND_LOCALE == EN) || (DEFAULT_LANG == EN)
+OPEN_OCL(KC_OCPRN, KC_LPRN, KC_RPRN)
+OPEN_OCL(KC_OCBRC, KC_LBRC, KC_RBRC)
+OPEN_OCL(KC_OCCBR, KC_LCBR, KC_RCBR)
+OPEN_OCL(KC_OCDQUO, KC_DQUO, KC_DQUO)
+OPEN_OCL(KC_OCQUOT, KC_QUOT, KC_QUOT)
+OPEN_OCL(KC_OCGRV, KC_GRAVE, KC_GRAVE)
+OPEN_OCL(KC_OCLTGT, KC_LT, KC_GT)
+#endif
+
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == BEPO) || (DEFAULT_LANG == BEPO)
+OPEN_OCL(BP_OCPRN, BP_LPRN, BP_RPRN)
+OPEN_OCL(BP_OCBRC, BP_LBRC, BP_RBRC)
+OPEN_OCL(BP_OCCBR, BP_LCBR, BP_RCBR)
+OPEN_OCL(BP_OCDQUO, BP_DQUO, BP_DQUO)
+OPEN_OCL_ND(BP_OCQUOT, BP_QUOT, BP_QUOT)
+OPEN_OCL(BP_OCGRV, BP_GRV, BP_GRV)
+OPEN_OCL(BP_OCLTGT, BP_LT, BP_GT)
+#endif
+
+
+
+#if defined(SECOND_LOCALE) && (SECOND_LOCALE == US_INT) || (DEFAULT_LANG == US_INT)
+OPEN_OCL(US_OCPRN, US_LPRN, US_RPRN)
+OPEN_OCL(US_OCBRC, US_LBRC, US_RBRC)
+OPEN_OCL(US_OCCBR, US_LCBR, US_RCBR)
+OPEN_OCL(US_OCDQUO, US_DQUO, US_DQUO)
+
+OPEN_OCL_ND(US_OCQUOT, US_QUOT, US_QUOT)
+OPEN_OCL(US_OCGRV, US_GRV, US_GRV)
+OPEN_OCL(US_OCLTGT, US_LT, US_GT)
+#endif

+ 5 - 0
users/ericgebhart/defs/unicode.def

@@ -0,0 +1,5 @@
+// define keys to send unicode strings.
+ UC_STR(UC_FLIP, "(ノಠ痊ಠ)ノ彡┻━┻")
+ UC_STR(UC_TABL, "┬─┬ノ( º _ ºノ)")
+ UC_STR(UC_SHRG, "¯\\_(ツ)_/¯")
+ UC_STR(UC_DISA, "ಠ_ಠ")

部分文件因为文件数量过多而无法显示